diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4de1102..dbc19eb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,8 +5,128 @@ on: branches: [ main ] jobs: + # Run all the test jobs first + arithmetic: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Conda config + run: echo -e "channels:\n - conda-forge\n" > .condarc + - uses: conda-incubator/setup-miniconda@v3 + with: + python-version: "3.12" + miniforge-version: latest + condarc-file: .condarc + environment-file: binder/environment.yml + - name: Installation and setup + shell: bash -l {0} + run: | + pip install --no-deps --no-build-isolation -e . + conda install -c conda-forge jupyter papermill + verdi presto --profile-name pwd + - name: Tests + shell: bash -l {0} + run: | + cd example_workflows/arithmetic + papermill aiida.ipynb aiida_out.ipynb -k "python3" + papermill cwl.ipynb cwl_out.ipynb -k "python3" + papermill jobflow.ipynb jobflow_out.ipynb -k "python3" + papermill pyiron_base.ipynb pyiron_base_out.ipynb -k "python3" + papermill pyiron_workflow.ipynb pyiron_workflow_out.ipynb -k "python3" + papermill universal_workflow.ipynb universal_workflow_out.ipynb -k "python3" + - name: Upload executed notebooks + uses: actions/upload-artifact@v4 + with: + name: arithmetic-notebooks + path: example_workflows/arithmetic/*_out.ipynb + retention-days: 1 + + quantumespresso: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup environment + shell: bash -l {0} + run: | + echo -e "channels:\n - conda-forge\n" > .condarc + tail --lines=+4 example_workflows/quantum_espresso/environment.yml >> binder/environment.yml + - uses: conda-incubator/setup-miniconda@v3 + with: + python-version: "3.12" + miniforge-version: latest + condarc-file: .condarc + environment-file: binder/environment.yml + - name: Installation and setup + shell: bash -l {0} + run: | + pip install --no-deps --no-build-isolation -e example_workflows/quantum_espresso/qe_xml_parser + pip install --no-deps --no-build-isolation -e . + conda install -c conda-forge jupyter papermill + verdi presto --profile-name pwd + - name: Tests + 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.ipynb aiida_out.ipynb -k "python3" + papermill cwl.ipynb cwl_out.ipynb -k "python3" + papermill jobflow.ipynb jobflow_out.ipynb -k "python3" + papermill pyiron_base.ipynb pyiron_base_out.ipynb -k "python3" + papermill pyiron_workflow.ipynb pyiron_workflow_out.ipynb -k "python3" + papermill universal_workflow.ipynb universal_workflow_out.ipynb -k "python3" + - name: Upload executed notebooks + uses: actions/upload-artifact@v4 + with: + name: quantumespresso-notebooks + path: example_workflows/quantum_espresso/*_out.ipynb + retention-days: 1 + + nfdi4ing: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - name: Conda config + run: echo -e "channels:\n - conda-forge\n" > .condarc + - uses: conda-incubator/setup-miniconda@v3 + with: + python-version: "3.12" + miniforge-version: latest + condarc-file: .condarc + environment-file: binder/environment.yml + - name: Installation and setup + shell: bash -l {0} + run: | + pip install --no-deps --no-build-isolation -e . + conda install -c conda-forge jupyter papermill + verdi presto --profile-name pwd + sudo apt-get install -y $(cat binder/apt.txt) + - name: Create Additional Conda Environments + shell: bash -l {0} + run: | + 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.ipynb aiida_out.ipynb -k "python3" + papermill cwl.ipynb cwl_out.ipynb -k "python3" + papermill jobflow.ipynb jobflow_out.ipynb -k "python3" + papermill pyiron_base.ipynb pyiron_base_out.ipynb -k "python3" + papermill pyiron_workflow.ipynb pyiron_workflow_out.ipynb -k "python3" + papermill universal_workflow.ipynb universal_workflow_out.ipynb -k "python3" + - name: Upload executed notebooks + uses: actions/upload-artifact@v4 + with: + name: nfdi-notebooks + path: example_workflows/nfdi/*_out.ipynb + retention-days: 1 + documentation: runs-on: ubuntu-latest + needs: [arithmetic, quantumespresso, nfdi4ing] steps: - uses: actions/checkout@v4 - name: Conda config @@ -17,7 +137,21 @@ jobs: miniforge-version: latest condarc-file: .condarc environment-file: documentation/environment.yml - - name: Install Jupyterbook + - name: Download executed notebooks + uses: actions/download-artifact@v4 + with: + path: executed-notebooks + - name: Copy executed notebooks to their locations + run: | + # Copy arithmetic notebooks + cp executed-notebooks/arithmetic-notebooks/*.ipynb example_workflows/arithmetic/ + + # Copy quantum espresso notebooks + cp executed-notebooks/quantumespresso-notebooks/*.ipynb example_workflows/quantum_espresso/ + + # Copy nfdi notebooks + cp executed-notebooks/nfdi-notebooks/*.ipynb example_workflows/nfdi/ + - name: Build Jupyterbook shell: bash -l {0} run: | cp documentation/_config.yml . @@ -30,6 +164,6 @@ jobs: uses: JamesIves/github-pages-deploy-action@3.7.1 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH: gh-pages # The branch the action should deploy to. - FOLDER: public_html # The folder the action should deploy. - CLEAN: true \ No newline at end of file + BRANCH: gh-pages + FOLDER: public_html + CLEAN: true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..7a9e510 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,9 @@ +repos: + - repo: https://github.com/kynan/nbstripout + rev: 0.7.1 + hooks: + - id: nbstripout + name: nbstripout - Strip outputs from notebooks + args: + - --extra-keys + - "metadata.kernelspec metadata.language_info" diff --git a/example_workflows/arithmetic/aiida.ipynb b/example_workflows/arithmetic/aiida.ipynb index 743e787..0748d36 100644 --- a/example_workflows/arithmetic/aiida.ipynb +++ b/example_workflows/arithmetic/aiida.ipynb @@ -1,38 +1,24 @@ { - "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": {} + "metadata": {}, + "source": [ + "# Aiida" + ] }, { "cell_type": "markdown", - "source": "## Define workflow with aiida", - "metadata": {} + "metadata": {}, + "source": [ + "## Define workflow with aiida" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from python_workflow_definition.aiida import write_workflow_json\n", "\n", @@ -41,230 +27,210 @@ "load_profile()\n", "\n", "workflow_json_filename = \"aiida_simple.json\"" - ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from workflow import (\n", " get_sum as _get_sum,\n", " get_prod_and_div as _get_prod_and_div,\n", " get_square as _get_square,\n", ")" - ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 2 + ] }, { "cell_type": "code", - "source": "wg = WorkGraph(\"arithmetic\")", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 3 + "source": [ + "wg = WorkGraph(\"arithmetic\")" + ] }, { "cell_type": "code", - "source": "get_prod_and_div_task = wg.add_task(\n task(outputs=['prod', 'div'])(_get_prod_and_div),\n x=orm.Float(1),\n y=orm.Float(2),\n)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "get_prod_and_div_task = wg.add_task(\n", + " task(outputs=['prod', 'div'])(_get_prod_and_div),\n", + " x=orm.Float(1),\n", + " y=orm.Float(2),\n", + ")" + ] }, { "cell_type": "code", - "source": "get_sum_task = wg.add_task(\n _get_sum,\n x=get_prod_and_div_task.outputs.prod,\n y=get_prod_and_div_task.outputs.div,\n)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 5 + "source": [ + "get_sum_task = wg.add_task(\n", + " _get_sum,\n", + " x=get_prod_and_div_task.outputs.prod,\n", + " y=get_prod_and_div_task.outputs.div,\n", + ")" + ] }, { "cell_type": "code", - "source": "get_square_task = wg.add_task(\n _get_square,\n x=get_sum_task.outputs.result,\n)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 6 + "source": [ + "get_square_task = wg.add_task(\n", + " _get_square,\n", + " x=get_sum_task.outputs.result,\n", + ")" + ] }, { "cell_type": "code", - "source": "write_workflow_json(wg=wg, file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 7 + "source": [ + "write_workflow_json(wg=wg, file_name=workflow_json_filename)" + ] }, { "cell_type": "code", - "source": "!cat {workflow_json_filename}", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "{\n \"version\": \"0.1.0\",\n \"nodes\": [\n {\n \"id\": 0,\n \"type\": \"function\",\n \"value\": \"workflow.get_prod_and_div\"\n },\n {\n \"id\": 1,\n \"type\": \"function\",\n \"value\": \"workflow.get_sum\"\n },\n {\n \"id\": 2,\n \"type\": \"function\",\n \"value\": \"workflow.get_square\"\n },\n {\n \"id\": 3,\n \"type\": \"input\",\n \"name\": \"x\",\n \"value\": 1.0\n },\n {\n \"id\": 4,\n \"type\": \"input\",\n \"name\": \"y\",\n \"value\": 2.0\n },\n {\n \"id\": 5,\n \"type\": \"output\",\n \"name\": \"result\"\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\": 2,\n \"targetPort\": \"x\",\n \"source\": 1,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"x\",\n \"source\": 3,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"y\",\n \"source\": 4,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": null,\n \"source\": 2,\n \"sourcePort\": null\n }\n ]\n}" - } - ], - "execution_count": 8 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!cat {workflow_json_filename}" + ] }, { "cell_type": "markdown", - "source": "## Load Workflow with jobflow", - "metadata": {} + "metadata": {}, + "source": [ + "## Load Workflow with jobflow" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.jobflow import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 9 + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] }, { "cell_type": "code", - "source": "from jobflow.managers.local import run_locally", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 10 + "source": [ + "from jobflow.managers.local import run_locally" + ] }, { "cell_type": "code", - "source": "flow = load_workflow_json(file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 11 + "source": [ + "flow = load_workflow_json(file_name=workflow_json_filename)" + ] }, { "cell_type": "code", - "source": "result = run_locally(flow)\nresult", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "2025-05-24 05:37:36,950 INFO Started executing jobs locally\n2025-05-24 05:37:37,216 INFO Starting job - get_prod_and_div (3ea26df7-3e4f-4541-a399-52684f0d763e)\n2025-05-24 05:37:37,218 INFO Finished job - get_prod_and_div (3ea26df7-3e4f-4541-a399-52684f0d763e)\n2025-05-24 05:37:37,219 INFO Starting job - get_sum (8d0957e4-21b1-433e-8e9a-b2af7b2d9b6d)\n2025-05-24 05:37:37,220 INFO Finished job - get_sum (8d0957e4-21b1-433e-8e9a-b2af7b2d9b6d)\n2025-05-24 05:37:37,221 INFO Starting job - get_square (af8ae958-4ce4-4b1f-a5df-eb7768a9aa86)\n2025-05-24 05:37:37,223 INFO Finished job - get_square (af8ae958-4ce4-4b1f-a5df-eb7768a9aa86)\n2025-05-24 05:37:37,223 INFO Finished executing jobs locally\n" - }, - { - "execution_count": 12, - "output_type": "execute_result", - "data": { - "text/plain": "{'3ea26df7-3e4f-4541-a399-52684f0d763e': {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/example_workflows/arithmetic'))},\n '8d0957e4-21b1-433e-8e9a-b2af7b2d9b6d': {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/example_workflows/arithmetic'))},\n 'af8ae958-4ce4-4b1f-a5df-eb7768a9aa86': {1: Response(output=6.25, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/arithmetic'))}}" - }, - "metadata": {} - } - ], - "execution_count": 12 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] }, { "cell_type": "markdown", - "source": "## Load Workflow with pyiron_base", - "metadata": {} + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_base" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.pyiron_base import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 13 + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] }, { "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_9e748c1c8cdef9464869503612dbb8dd\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7960e32575c0>\n\n\n\nx_a067a96e1de754e11581b419c5c1d4dd\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x7960e3257350>\n\n\n\nx_a067a96e1de754e11581b419c5c1d4dd->create_function_job_9e748c1c8cdef9464869503612dbb8dd\n\n\n\n\n\nx_e71e72d9c42ba1008579078b6c079655\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x7960ec8cc9b0>\n\n\n\nx_e71e72d9c42ba1008579078b6c079655->x_a067a96e1de754e11581b419c5c1d4dd\n\n\n\n\n\nx_974924ff998969b91bfc8b2db5f854a1\n\nx=1.0\n\n\n\nx_974924ff998969b91bfc8b2db5f854a1->x_e71e72d9c42ba1008579078b6c079655\n\n\n\n\n\ny_49c159de63f318f02b04278442feee05\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x7960e3257020>\n\n\n\nx_974924ff998969b91bfc8b2db5f854a1->y_49c159de63f318f02b04278442feee05\n\n\n\n\n\ny_49c159de63f318f02b04278442feee05->x_a067a96e1de754e11581b419c5c1d4dd\n\n\n\n\n\ny_f12a7f1986b9dd058dfc666dbe230b20\n\ny=2.0\n\n\n\ny_f12a7f1986b9dd058dfc666dbe230b20->x_e71e72d9c42ba1008579078b6c079655\n\n\n\n\n\ny_f12a7f1986b9dd058dfc666dbe230b20->y_49c159de63f318f02b04278442feee05\n\n\n\n\n" - }, - "metadata": {} - } - ], - "execution_count": 14 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\n", + "delayed_object_lst[-1].draw()" + ] }, { "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_4729edf2c689ca4cf512acd163c98b28 was saved and received the ID: 1\nThe job get_sum_25f72a559657d0b1549593792391953e was saved and received the ID: 2\nThe job get_square_9cc2f0545498916d7720c59c1120a66d was saved and received the ID: 3\n" - }, - { - "execution_count": 15, - "output_type": "execute_result", - "data": { - "text/plain": "6.25" - }, - "metadata": {} - } - ], - "execution_count": 15 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "## Load Workflow with pyiron_workflow" + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "from python_workflow_definition.pyiron_workflow import load_workflow_json" + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf = load_workflow_json(file_name=workflow_json_filename)" + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=workflow_json_filename)" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.draw(size=(10,10))" + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.run()" + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/example_workflows/arithmetic/cwl.ipynb b/example_workflows/arithmetic/cwl.ipynb index 9912fa9..69834cf 100644 --- a/example_workflows/arithmetic/cwl.ipynb +++ b/example_workflows/arithmetic/cwl.ipynb @@ -1,97 +1,66 @@ { - "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": "377fef56-484d-491c-b19e-1be6931e44eb", "cell_type": "code", - "source": "import pickle", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "0", + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "import pickle" + ] }, { - "id": "92e3921b-2bb8-4333-8cfe-4bd27f785d24", "cell_type": "code", - "source": "from python_workflow_definition.cwl import write_workflow", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "1", + "metadata": {}, "outputs": [], - "execution_count": 2 + "source": [ + "from python_workflow_definition.cwl import write_workflow" + ] }, { - "id": "5303c059-8ae4-4557-858e-b4bd64eac711", "cell_type": "code", - "source": "write_workflow(file_name=\"workflow.json\")", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "2", + "metadata": {}, "outputs": [], - "execution_count": 3 + "source": [ + "write_workflow(file_name=\"workflow.json\")" + ] }, { - "id": "df302bd2-e9b6-4595-979c-67c46414d986", "cell_type": "code", - "source": "! cwltool workflow.cwl workflow.yml", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "/srv/conda/envs/notebook/bin/cwltool:11: DeprecationWarning: Nesting argument groups is deprecated.\n sys.exit(run())\n\u001B[1;30mINFO\u001B[0m /srv/conda/envs/notebook/bin/cwltool 3.1.20250110105449\n\u001B[1;30mINFO\u001B[0m Resolved 'workflow.cwl' to 'file:///home/jovyan/example_workflows/arithmetic/workflow.cwl'\n\u001B[1;30mINFO\u001B[0m [workflow ] start\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_prod_and_div_0\n\u001B[1;30mINFO\u001B[0m [step get_prod_and_div_0] start\n\u001B[1;30mINFO\u001B[0m [job get_prod_and_div_0] /tmp/_1apt559$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/dyuxg6ka/stgf337bac5-2f8e-4489-bd51-83491b1d5f0e/workflow.py \\\n --function=workflow.get_prod_and_div \\\n --arg_x=/tmp/dyuxg6ka/stgd87c2fe4-ca8e-4031-9af0-751d6944cbe7/x.pickle \\\n --arg_y=/tmp/dyuxg6ka/stg7bcb8ced-0e5b-442e-a0e0-2b3117afe2d8/y.pickle\n\u001B[1;30mINFO\u001B[0m [job get_prod_and_div_0] completed success\n\u001B[1;30mINFO\u001B[0m [step get_prod_and_div_0] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_sum_1\n\u001B[1;30mINFO\u001B[0m [step get_sum_1] start\n\u001B[1;30mINFO\u001B[0m [job get_sum_1] /tmp/ysau_yra$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/rm6c9qek/stgfef68b90-5d69-4da9-a952-b9c2f2a1eb76/workflow.py \\\n --function=workflow.get_sum \\\n --arg_x=/tmp/rm6c9qek/stg35728be7-5a6d-487b-bd02-345581007663/prod.pickle \\\n --arg_y=/tmp/rm6c9qek/stgc0992786-237e-4308-9d9e-814ebbfb0319/div.pickle\n\u001B[1;30mINFO\u001B[0m [job get_sum_1] completed success\n\u001B[1;30mINFO\u001B[0m [step get_sum_1] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_square_2\n\u001B[1;30mINFO\u001B[0m [step get_square_2] start\n\u001B[1;30mINFO\u001B[0m [job get_square_2] /tmp/o3gzya8t$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/6a3sltnz/stg58ccf048-a5c3-4ba3-a24f-c64adfff84cd/workflow.py \\\n --function=workflow.get_square \\\n --arg_x=/tmp/6a3sltnz/stg70203cec-cbd4-4fea-a3de-70e9373d9c9d/result.pickle\n\u001B[1;30mINFO\u001B[0m [job get_square_2] completed success\n\u001B[1;30mINFO\u001B[0m [step get_square_2] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] completed success\n{\n \"result_file\": {\n \"location\": \"file:///home/jovyan/example_workflows/arithmetic/result.pickle\",\n \"basename\": \"result.pickle\",\n \"class\": \"File\",\n \"checksum\": \"sha1$1fd8f217331336b1226b84e351c56fb9a8d93685\",\n \"size\": 21,\n \"path\": \"/home/jovyan/example_workflows/arithmetic/result.pickle\"\n }\n}\u001B[1;30mINFO\u001B[0m Final process status is success\n" - } - ], - "execution_count": 4 + "execution_count": null, + "id": "3", + "metadata": {}, + "outputs": [], + "source": [ + "! cwltool workflow.cwl workflow.yml" + ] }, { - "id": "2942dbba-ea0a-4d20-be5c-ed9992d09ff8", "cell_type": "code", - "source": "with open(\"result.pickle\", \"rb\") as f:\n print(pickle.load(f))", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "6.25\n" - } - ], - "execution_count": 5 + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"result.pickle\", \"rb\") as f:\n", + " print(pickle.load(f))" + ] }, { - "id": "60e909ee-d0d0-4bd1-81c8-dd5274ae5834", "cell_type": "code", - "source": "", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "5", + "metadata": {}, "outputs": [], - "execution_count": null + "source": [] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/example_workflows/arithmetic/jobflow.ipynb b/example_workflows/arithmetic/jobflow.ipynb index 3ff3b1c..554c6e7 100644 --- a/example_workflows/arithmetic/jobflow.ipynb +++ b/example_workflows/arithmetic/jobflow.ipynb @@ -1,410 +1,371 @@ { - "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": "982a4fbe-7cf9-45dd-84ae-9854149db0b9", "cell_type": "markdown", - "source": "# jobflow", - "metadata": {} + "id": "0", + "metadata": {}, + "source": [ + "# jobflow" + ] }, { - "id": "e6180712-d081-45c7-ba41-fc5191f10427", "cell_type": "markdown", - "source": "## Define workflow with jobflow\n\nThis tutorial will demonstrate how to use the PWD with `jobflow` and load the workflow with `aiida` and `pyiron`.\n\n[`jobflow`](https://joss.theoj.org/papers/10.21105/joss.05995) was developed to simplify the development of high-throughput workflows. It uses a decorator-based approach to define the “Job“s that can be connected to form complex workflows (“Flow“s). `jobflow` is the workflow language of the workflow library [`atomate2`](https://chemrxiv.org/engage/chemrxiv/article-details/678e76a16dde43c9085c75e9), designed to replace [atomate](https://www.sciencedirect.com/science/article/pii/S0927025617303919), which was central to the development of the [Materials Project](https://pubs.aip.org/aip/apm/article/1/1/011002/119685/Commentary-The-Materials-Project-A-materials) database.", - "metadata": {} + "id": "1", + "metadata": {}, + "source": [ + "## Define workflow with jobflow\n", + "\n", + "This tutorial will demonstrate how to use the PWD with `jobflow` and load the workflow with `aiida` and `pyiron`.\n", + "\n", + "[`jobflow`](https://joss.theoj.org/papers/10.21105/joss.05995) was developed to simplify the development of high-throughput workflows. It uses a decorator-based approach to define the “Job“s that can be connected to form complex workflows (“Flow“s). `jobflow` is the workflow language of the workflow library [`atomate2`](https://chemrxiv.org/engage/chemrxiv/article-details/678e76a16dde43c9085c75e9), designed to replace [atomate](https://www.sciencedirect.com/science/article/pii/S0927025617303919), which was central to the development of the [Materials Project](https://pubs.aip.org/aip/apm/article/1/1/011002/119685/Commentary-The-Materials-Project-A-materials) database." + ] }, { - "id": "69bedfb9ec12c092", "cell_type": "markdown", - "source": "First, we start by importing the job decorator and the Flow class from jobflow, as welll as the necessary modules from the python workflow definition and the example arithmetic workflow.", + "id": "2", "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false } - } + }, + "source": [ + "First, we start by importing the job decorator and the Flow class from jobflow, as welll as the necessary modules from the python workflow definition and the example arithmetic workflow." + ] }, { - "id": "000bbd4a-f53c-4eea-9d85-76f0aa2ca10b", "cell_type": "code", - "source": "from jobflow import job, Flow", - "metadata": { - "ExecuteTime": { - "end_time": "2025-04-24T12:51:34.747117656Z", - "start_time": "2025-04-24T12:51:33.203979325Z" - }, - "trusted": true - }, + "execution_count": null, + "id": "3", + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "from jobflow import job, Flow" + ] }, { - "id": "06c2bd9e-b2ac-4b88-9158-fa37331c3418", "cell_type": "code", - "source": "from python_workflow_definition.jobflow import write_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "4", + "metadata": {}, "outputs": [], - "execution_count": 2 + "source": [ + "from python_workflow_definition.jobflow import write_workflow_json" + ] }, { - "id": "f9217ce7b093b5fc", "cell_type": "code", - "source": "from workflow import (\n get_sum as _get_sum,\n get_prod_and_div as _get_prod_and_div,\n get_square as _get_square,\n)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "5", + "metadata": {}, "outputs": [], - "execution_count": 3 + "source": [ + "from workflow import (\n", + " get_sum as _get_sum,\n", + " get_prod_and_div as _get_prod_and_div,\n", + " get_square as _get_square,\n", + ")" + ] }, { - "id": "2639deadfae9c591", "cell_type": "markdown", - "source": "Using the job object decorator, the imported functions from the arithmetic workflow are transformed into jobflow “Job”s. These “Job”s can delay the execution of Python functions and can be chained into workflows (“Flow”s). A “Job” can return serializable outputs (e.g., a number, a dictionary, or a Pydantic model) or a so-called “Response” object, which enables the execution of dynamic workflows where the number of nodes is not known prior to the workflow’s execution. ", + "id": "6", "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false } - } + }, + "source": [ + "Using the job object decorator, the imported functions from the arithmetic workflow are transformed into jobflow “Job”s. These “Job”s can delay the execution of Python functions and can be chained into workflows (“Flow”s). A “Job” can return serializable outputs (e.g., a number, a dictionary, or a Pydantic model) or a so-called “Response” object, which enables the execution of dynamic workflows where the number of nodes is not known prior to the workflow’s execution. " + ] }, { - "id": "1feba0898ee4e361", "cell_type": "code", - "source": "workflow_json_filename = \"jobflow_simple.json\"", - "metadata": { - "ExecuteTime": { - "end_time": "2025-04-24T10:30:04.751088Z", - "start_time": "2025-04-24T10:30:04.748941Z" - }, - "trusted": true - }, + "execution_count": null, + "id": "7", + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "workflow_json_filename = \"jobflow_simple.json\"" + ] }, { - "id": "07598344-0f75-433b-8902-bea21a42088c", "cell_type": "code", - "source": "get_sum = job(_get_sum)\n# Note: one could also transfer the outputs to the datastore as well: get_prod_and_div = job(_get_prod_and_div, data=[\"prod\", \"div\"])\n# On the way from the general definition to the jobflow definition, we do this automatically to avoid overflow databases.\nget_prod_and_div = job(_get_prod_and_div)\nget_square = job(_get_square)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "8", + "metadata": {}, "outputs": [], - "execution_count": 5 + "source": [ + "get_sum = job(_get_sum)\n", + "# Note: one could also transfer the outputs to the datastore as well: get_prod_and_div = job(_get_prod_and_div, data=[\"prod\", \"div\"])\n", + "# On the way from the general definition to the jobflow definition, we do this automatically to avoid overflow databases.\n", + "get_prod_and_div = job(_get_prod_and_div)\n", + "get_square = job(_get_square)" + ] }, { - "id": "ecef1ed5-a8d3-48c3-9e01-4a40e55c1153", "cell_type": "code", - "source": "prod_and_div = get_prod_and_div(x=1, y=2)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "9", + "metadata": {}, "outputs": [], - "execution_count": 6 + "source": [ + "prod_and_div = get_prod_and_div(x=1, y=2)" + ] }, { - "id": "2b88a30a-e26b-4802-89b7-79ca08cc0af9", "cell_type": "code", - "source": "tmp_sum = get_sum(x=prod_and_div.output.prod, y=prod_and_div.output.div)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "10", + "metadata": {}, "outputs": [], - "execution_count": 7 + "source": [ + "tmp_sum = get_sum(x=prod_and_div.output.prod, y=prod_and_div.output.div)" + ] }, { - "id": "8d95c3aa", "cell_type": "code", - "source": "result = get_square(x=tmp_sum.output)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "11", + "metadata": {}, "outputs": [], - "execution_count": 8 + "source": [ + "result = get_square(x=tmp_sum.output)" + ] }, { - "id": "a5e5ca63-2906-47c9-bac6-adebf8643cba", "cell_type": "code", - "source": "flow = Flow([prod_and_div, tmp_sum, result])", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "12", + "metadata": {}, "outputs": [], - "execution_count": 9 + "source": [ + "flow = Flow([prod_and_div, tmp_sum, result])" + ] }, { - "id": "27688edd256f1420", "cell_type": "markdown", - "source": "As jobflow itself is only a workflow language, the workflows are typically executed on high-performance computers with a workflow manager such as [Fireworks](https://onlinelibrary.wiley.com/doi/full/10.1002/cpe.3505) or [jobflow-remote](https://github.com/Matgenix/jobflow-remote). For smaller and test workflows, simple linear, non-parallel execution of the workflow graph can be performed with jobflow itself. All outputs of individual jobs are saved in a database. For high-throughput applications typically, a MongoDB database is used. For testing and smaller workflows, a memory database can be used instead.", + "id": "13", "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false } - } + }, + "source": [ + "As jobflow itself is only a workflow language, the workflows are typically executed on high-performance computers with a workflow manager such as [Fireworks](https://onlinelibrary.wiley.com/doi/full/10.1002/cpe.3505) or [jobflow-remote](https://github.com/Matgenix/jobflow-remote). For smaller and test workflows, simple linear, non-parallel execution of the workflow graph can be performed with jobflow itself. All outputs of individual jobs are saved in a database. For high-throughput applications typically, a MongoDB database is used. For testing and smaller workflows, a memory database can be used instead." + ] }, { - "id": "e464da97-16a1-4772-9a07-0a47f152781d", "cell_type": "code", - "source": "write_workflow_json(flow=flow, file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "14", + "metadata": {}, "outputs": [], - "execution_count": 10 + "source": [ + "write_workflow_json(flow=flow, file_name=workflow_json_filename)" + ] }, { - "id": "bca646b2-0a9a-4271-966a-e5903a8c9031", "cell_type": "code", - "source": "!cat {workflow_json_filename}", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "{\n \"version\": \"0.1.0\",\n \"nodes\": [\n {\n \"id\": 0,\n \"type\": \"function\",\n \"value\": \"workflow.get_prod_and_div\"\n },\n {\n \"id\": 1,\n \"type\": \"function\",\n \"value\": \"workflow.get_sum\"\n },\n {\n \"id\": 2,\n \"type\": \"function\",\n \"value\": \"workflow.get_square\"\n },\n {\n \"id\": 3,\n \"type\": \"input\",\n \"name\": \"x\",\n \"value\": 1\n },\n {\n \"id\": 4,\n \"type\": \"input\",\n \"name\": \"y\",\n \"value\": 2\n },\n {\n \"id\": 5,\n \"type\": \"output\",\n \"name\": \"result\"\n }\n ],\n \"edges\": [\n {\n \"target\": 0,\n \"targetPort\": \"x\",\n \"source\": 3,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"y\",\n \"source\": 4,\n \"sourcePort\": null\n },\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\": 2,\n \"targetPort\": \"x\",\n \"source\": 1,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": null,\n \"source\": 2,\n \"sourcePort\": null\n }\n ]\n}" - } - ], - "execution_count": 11 + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "!cat {workflow_json_filename}" + ] }, { - "id": "65389ef27c38fdec", "cell_type": "markdown", - "source": "Finally, you can write the workflow data into a JSON file to be imported later.", + "id": "16", "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false } - } + }, + "source": [ + "Finally, you can write the workflow data into a JSON file to be imported later." + ] }, { - "id": "87a27540-c390-4d34-ae75-4739bfc4c1b7", "cell_type": "markdown", - "source": "## Load Workflow with aiida\n\nIn this part, we will demonstrate how to import the `jobflow` workflow into `aiida` via the PWD.", - "metadata": {} + "id": "17", + "metadata": {}, + "source": [ + "## Load Workflow with aiida\n", + "\n", + "In this part, we will demonstrate how to import the `jobflow` workflow into `aiida` via the PWD." + ] }, { - "id": "66a1b3a6-3d3b-4caa-b58f-d8bc089b1074", "cell_type": "code", - "source": "from aiida import load_profile\n\nload_profile()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "execution_count": 12, - "output_type": "execute_result", - "data": { - "text/plain": "Profile" - }, - "metadata": {} - } - ], - "execution_count": 12 + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "from aiida import load_profile\n", + "\n", + "load_profile()" + ] }, { - "id": "4679693b-039b-45cf-8c67-5b2b3d705a83", "cell_type": "code", - "source": "from python_workflow_definition.aiida import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "19", + "metadata": {}, "outputs": [], - "execution_count": 13 + "source": [ + "from python_workflow_definition.aiida import load_workflow_json" + ] }, { - "id": "cc7127193d31d8ef", "cell_type": "markdown", - "source": "We import the necessary modules from `aiida` and the PWD, as well as the workflow JSON file.", + "id": "20", "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false } - } + }, + "source": [ + "We import the necessary modules from `aiida` and the PWD, as well as the workflow JSON file." + ] }, { - "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": 14, - "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": "9f822f7ac5ca4cb9960374af471f79cf" - } - }, - "metadata": {} - } - ], - "execution_count": 14 + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "wg = load_workflow_json(file_name=workflow_json_filename)\n", + "wg" + ] }, { - "id": "4816325767559bbe", "cell_type": "markdown", - "source": "Finally, we are now able to run the workflow with `aiida`.", + "id": "22", "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false } - } + }, + "source": [ + "Finally, we are now able to run the workflow with `aiida`." + ] }, { - "id": "05228ece-643c-420c-8df8-4ce3df379515", "cell_type": "code", - "source": "wg.run()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": "05/24/2025 05:38:40 AM <306> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_prod_and_div1\n05/24/2025 05:38:41 AM <306> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: get_prod_and_div1, type: PyFunction, finished.\n05/24/2025 05:38:41 AM <306> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_sum2\n05/24/2025 05:38:41 AM <306> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: get_sum2, type: PyFunction, finished.\n05/24/2025 05:38:41 AM <306> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_square3\n05/24/2025 05:38:42 AM <306> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: get_square3, type: PyFunction, finished.\n05/24/2025 05:38:42 AM <306> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/24/2025 05:38:42 AM <306> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|finalize]: Finalize workgraph.\n" - } - ], - "execution_count": 15 + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "wg.run()" + ] }, { - "id": "2c942094-61b4-4e94-859a-64f87b5bec64", "cell_type": "markdown", - "source": "## Load Workflow with pyiron_base\n\nIn this part, we will demonstrate how to import the `jobflow` workflow into `pyiron` via the PWD.", - "metadata": {} + "id": "24", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_base\n", + "\n", + "In this part, we will demonstrate how to import the `jobflow` workflow into `pyiron` via the PWD." + ] }, { - "id": "ea102341-84f7-4156-a7d1-c3ab1ea613a5", "cell_type": "code", - "source": "from python_workflow_definition.pyiron_base import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "25", + "metadata": {}, "outputs": [], - "execution_count": 16 + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] }, { - "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_25906340bd0c28c44fd73d69e7a3d8bc\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x733f400d1310>\n\n\n\nx_1a7fff02f6473a13e5e8742988186611\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x733f40ddb0e0>\n\n\n\nx_1a7fff02f6473a13e5e8742988186611->create_function_job_25906340bd0c28c44fd73d69e7a3d8bc\n\n\n\n\n\nx_e4655695917c433de56d1c64232473f9\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x733f4db8caa0>\n\n\n\nx_e4655695917c433de56d1c64232473f9->x_1a7fff02f6473a13e5e8742988186611\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_e4655695917c433de56d1c64232473f9\n\n\n\n\n\ny_3b83397feef07a74d9a046a1b7f57749\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x733f4ed91130>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_3b83397feef07a74d9a046a1b7f57749\n\n\n\n\n\ny_3b83397feef07a74d9a046a1b7f57749->x_1a7fff02f6473a13e5e8742988186611\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_e4655695917c433de56d1c64232473f9\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_3b83397feef07a74d9a046a1b7f57749\n\n\n\n\n" - }, - "metadata": {} - } - ], - "execution_count": 17 + "execution_count": null, + "id": "26", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\n", + "delayed_object_lst[-1].draw()" + ] }, { - "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_00cf2c787390eacfbc4a51e9a0c38ec7 was saved and received the ID: 1\nThe job get_sum_4b5b9d16b259a13b6a32798ce2779af8 was saved and received the ID: 2\nThe job get_square_9cc2f0545498916d7720c59c1120a66d was saved and received the ID: 3\n" - }, - { - "execution_count": 18, - "output_type": "execute_result", - "data": { - "text/plain": "6.25" - }, - "metadata": {} - } - ], - "execution_count": 18 + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] }, { - "id": "9414680d1cbc3b2e", "cell_type": "markdown", - "source": "Here, the procedure is the same as before: Import the necessary `pyiron_base` module from the PWD, import the workflow JSON file and run the workflow with pyiron.", + "id": "28", "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false } - } + }, + "source": [ + "Here, the procedure is the same as before: Import the necessary `pyiron_base` module from the PWD, import the workflow JSON file and run the workflow with pyiron." + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "## Load Workflow with pyiron_workflow", - "id": "7da4733bfeffee63" + "id": "29", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "from python_workflow_definition.pyiron_workflow import load_workflow_json", - "id": "6c87661996ff840b" + "id": "30", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf = load_workflow_json(file_name=workflow_json_filename)", - "id": "33b1e9408924f9c0" + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=workflow_json_filename)" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.draw(size=(10,10))", - "id": "df63b2963a0d90a5" + "id": "32", + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.run()", - "id": "bf110395454bd694" + "id": "33", + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/example_workflows/arithmetic/pyiron_base.ipynb b/example_workflows/arithmetic/pyiron_base.ipynb index 18742f2..b121623 100644 --- a/example_workflows/arithmetic/pyiron_base.ipynb +++ b/example_workflows/arithmetic/pyiron_base.ipynb @@ -1,322 +1,278 @@ { - "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": "c39b76fb-259f-4e16-a44d-02a295c82386", "cell_type": "markdown", - "source": "# pyiron", - "metadata": {} + "id": "0", + "metadata": {}, + "source": [ + "# pyiron" + ] }, { - "id": "3638419b-a0cb-49e2-b157-7fbb1acde90f", "cell_type": "markdown", - "source": "## Define workflow with pyiron_base", - "metadata": {} + "id": "1", + "metadata": {}, + "source": [ + "## Define workflow with pyiron_base" + ] }, { - "id": "b4a78447-e87c-4fb4-8d17-d9a280eb7254", "cell_type": "code", - "source": "from pyiron_base import job", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "2", + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "from pyiron_base import job" + ] }, { - "id": "06c2bd9e-b2ac-4b88-9158-fa37331c3418", "cell_type": "code", - "source": "from python_workflow_definition.pyiron_base import write_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "3", + "metadata": {}, "outputs": [], - "execution_count": 2 + "source": [ + "from python_workflow_definition.pyiron_base import write_workflow_json" + ] }, { - "id": "6d859dfff0c2df5c", "cell_type": "code", - "source": "from workflow import (\n get_sum as _get_sum,\n get_prod_and_div as _get_prod_and_div,\n get_square as _get_square,\n)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "4", + "metadata": {}, "outputs": [], - "execution_count": 3 + "source": [ + "from workflow import (\n", + " get_sum as _get_sum,\n", + " get_prod_and_div as _get_prod_and_div,\n", + " get_square as _get_square,\n", + ")" + ] }, { - "id": "77135b0c61898507", "cell_type": "code", - "source": "workflow_json_filename = \"pyiron_arithmetic.json\"", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "5", + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "workflow_json_filename = \"pyiron_arithmetic.json\"" + ] }, { - "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\"])\nget_square = job(_get_square)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "6", + "metadata": {}, "outputs": [], - "execution_count": 5 + "source": [ + "get_sum = job(_get_sum)\n", + "get_prod_and_div = job(_get_prod_and_div, output_key_lst=[\"prod\", \"div\"])\n", + "get_square = job(_get_square)" + ] }, { - "id": "2b88a30a-e26b-4802-89b7-79ca08cc0af9", "cell_type": "code", - "source": "prod_and_div = get_prod_and_div(x=1, y=2)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "7", + "metadata": {}, "outputs": [], - "execution_count": 6 + "source": [ + "prod_and_div = get_prod_and_div(x=1, y=2)" + ] }, { - "id": "a5e5ca63-2906-47c9-bac6-adebf8643cba", "cell_type": "code", - "source": "tmp_sum = get_sum(x=prod_and_div.output.prod, y=prod_and_div.output.div)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "8", + "metadata": {}, "outputs": [], - "execution_count": 7 + "source": [ + "tmp_sum = get_sum(x=prod_and_div.output.prod, y=prod_and_div.output.div)" + ] }, { - "id": "eae321f1", "cell_type": "code", - "source": "result = get_square(x=tmp_sum)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "9", + "metadata": {}, "outputs": [], - "execution_count": 8 + "source": [ + "result = get_square(x=tmp_sum)" + ] }, { - "id": "e464da97-16a1-4772-9a07-0a47f152781d", "cell_type": "code", - "source": "write_workflow_json(delayed_object=result, file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "10", + "metadata": {}, "outputs": [], - "execution_count": 9 + "source": [ + "write_workflow_json(delayed_object=result, file_name=workflow_json_filename)" + ] }, { - "id": "bca646b2-0a9a-4271-966a-e5903a8c9031", "cell_type": "code", - "source": "!cat {workflow_json_filename}", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "{\n \"version\": \"0.1.0\",\n \"nodes\": [\n {\n \"id\": 0,\n \"type\": \"function\",\n \"value\": \"workflow.get_square\"\n },\n {\n \"id\": 1,\n \"type\": \"function\",\n \"value\": \"workflow.get_sum\"\n },\n {\n \"id\": 2,\n \"type\": \"function\",\n \"value\": \"workflow.get_prod_and_div\"\n },\n {\n \"id\": 3,\n \"type\": \"input\",\n \"name\": \"x\",\n \"value\": 1\n },\n {\n \"id\": 4,\n \"type\": \"input\",\n \"name\": \"y\",\n \"value\": 2\n },\n {\n \"id\": 5,\n \"type\": \"output\",\n \"name\": \"result\"\n }\n ],\n \"edges\": [\n {\n \"target\": 0,\n \"targetPort\": \"x\",\n \"source\": 1,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"x\",\n \"source\": 2,\n \"sourcePort\": \"prod\"\n },\n {\n \"target\": 2,\n \"targetPort\": \"x\",\n \"source\": 3,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"y\",\n \"source\": 4,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"y\",\n \"source\": 2,\n \"sourcePort\": \"div\"\n },\n {\n \"target\": 5,\n \"targetPort\": null,\n \"source\": 0,\n \"sourcePort\": null\n }\n ]\n}" - } - ], - "execution_count": 10 + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "!cat {workflow_json_filename}" + ] }, { - "id": "a4c0faaf-e30d-4ded-8e9f-57f97f51b14c", "cell_type": "markdown", - "source": "## Load Workflow with aiida", - "metadata": {} + "id": "12", + "metadata": {}, + "source": [ + "## Load Workflow with aiida" + ] }, { - "id": "2ecc229f-daa1-49b9-9279-a6b5ae1aa4f2", "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 + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "from aiida import load_profile\n", + "\n", + "load_profile()" + ] }, { - "id": "68a56b32-9f99-43d7-aaee-0c1cd9522681", "cell_type": "code", - "source": "from python_workflow_definition.aiida import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "14", + "metadata": {}, "outputs": [], - "execution_count": 12 + "source": [ + "from python_workflow_definition.aiida import load_workflow_json" + ] }, { - "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": 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": "f52e57854d6e4d07b6a2c11a75873efe" - } - }, - "metadata": {} - } - ], - "execution_count": 13 + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "wg = load_workflow_json(file_name=workflow_json_filename)\n", + "wg" + ] }, { - "id": "cf80267d-c2b0-4236-bf1d-a57596985fc1", "cell_type": "code", - "source": "\nwg.run()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": "05/24/2025 05:39:21 AM <524> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [19|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_prod_and_div3\n05/24/2025 05:39:21 AM <524> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [19|WorkGraphEngine|update_task_state]: Task: get_prod_and_div3, type: PyFunction, finished.\n05/24/2025 05:39:21 AM <524> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [19|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_sum2\n05/24/2025 05:39:21 AM <524> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [19|WorkGraphEngine|update_task_state]: Task: get_sum2, type: PyFunction, finished.\n05/24/2025 05:39:21 AM <524> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [19|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_square1\n05/24/2025 05:39:22 AM <524> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [19|WorkGraphEngine|update_task_state]: Task: get_square1, type: PyFunction, finished.\n05/24/2025 05:39:22 AM <524> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [19|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/24/2025 05:39:22 AM <524> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [19|WorkGraphEngine|finalize]: Finalize workgraph.\n" - } - ], - "execution_count": 14 + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "wg.run()" + ] }, { - "id": "0c3503e1-0a32-40e1-845d-3fd9ec3c4c19", "cell_type": "markdown", - "source": "## Load Workflow with jobflow", - "metadata": {} + "id": "17", + "metadata": {}, + "source": [ + "## Load Workflow with jobflow" + ] }, { - "id": "4abb0481-8e38-479d-ae61-6c46d091653e", "cell_type": "code", - "source": "from python_workflow_definition.jobflow import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "18", + "metadata": {}, "outputs": [], - "execution_count": 15 + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] }, { - "id": "8253dd7c283bf3f7", "cell_type": "code", - "source": "from jobflow.managers.local import run_locally", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "19", + "metadata": {}, "outputs": [], - "execution_count": 16 + "source": [ + "from jobflow.managers.local import run_locally" + ] }, { - "id": "4b45e83b-945f-48c5-8e20-9df0ce0a14a1", "cell_type": "code", - "source": "flow = load_workflow_json(file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "20", + "metadata": {}, "outputs": [], - "execution_count": 17 + "source": [ + "flow = load_workflow_json(file_name=workflow_json_filename)" + ] }, { - "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-05-24 05:39:22,893 INFO Started executing jobs locally\n2025-05-24 05:39:23,184 INFO Starting job - get_prod_and_div (82cb13d7-d7c8-4bd1-84d1-c301d4ee2422)\n2025-05-24 05:39:23,187 INFO Finished job - get_prod_and_div (82cb13d7-d7c8-4bd1-84d1-c301d4ee2422)\n2025-05-24 05:39:23,187 INFO Starting job - get_sum (19c0830c-e918-44d2-82f1-b9418463c057)\n2025-05-24 05:39:23,189 INFO Finished job - get_sum (19c0830c-e918-44d2-82f1-b9418463c057)\n2025-05-24 05:39:23,189 INFO Starting job - get_square (78fc4e6e-2a99-490e-b829-fae9704296c2)\n2025-05-24 05:39:23,190 INFO Finished job - get_square (78fc4e6e-2a99-490e-b829-fae9704296c2)\n2025-05-24 05:39:23,191 INFO Finished executing jobs locally\n" - }, - { - "execution_count": 18, - "output_type": "execute_result", - "data": { - "text/plain": "{'82cb13d7-d7c8-4bd1-84d1-c301d4ee2422': {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/example_workflows/arithmetic'))},\n '19c0830c-e918-44d2-82f1-b9418463c057': {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/example_workflows/arithmetic'))},\n '78fc4e6e-2a99-490e-b829-fae9704296c2': {1: Response(output=6.25, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/arithmetic'))}}" - }, - "metadata": {} - } - ], - "execution_count": 18 + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "## Load Workflow with pyiron_workflow", - "id": "406fd07dd4bd8006" + "id": "22", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] }, { - "id": "cf76f305-24de-45a7-be8e-cfe45cd6458e", "cell_type": "code", - "source": "from python_workflow_definition.pyiron_workflow import load_workflow_json", - "metadata": { - "trusted": true, - "ExecuteTime": { - "end_time": "2025-05-24T08:25:33.797570Z", - "start_time": "2025-05-24T08:25:33.771214Z" - } - }, + "execution_count": null, + "id": "23", + "metadata": {}, "outputs": [], - "execution_count": null + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf = load_workflow_json(file_name=workflow_json_filename)", - "id": "5b442611457aa5a8" + "id": "24", + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=workflow_json_filename)" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.draw(size=(10,10))", - "id": "2ca33c8590a54866" + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.run()", - "id": "d36522a1c315b7f5" + "id": "26", + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/example_workflows/arithmetic/pyiron_workflow.ipynb b/example_workflows/arithmetic/pyiron_workflow.ipynb index 2dd96a5..1a85919 100644 --- a/example_workflows/arithmetic/pyiron_workflow.ipynb +++ b/example_workflows/arithmetic/pyiron_workflow.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "9db99131-e5ef-49a9-93f6-13c44782c119", + "id": "0", "metadata": {}, "source": [ "# pyiron_workflow" @@ -10,7 +10,7 @@ }, { "cell_type": "markdown", - "id": "d16df60e-1359-4d4c-bb95-2b994860d04a", + "id": "1", "metadata": {}, "source": [ "## Define workflow in pyiron_workflow" @@ -18,8 +18,8 @@ }, { "cell_type": "code", - "execution_count": 1, - "id": "e19826e4-3540-4ea0-ba83-566e818ab6e3", + "execution_count": null, + "id": "2", "metadata": {}, "outputs": [], "source": [ @@ -28,8 +28,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "id": "f0d54cc1-3603-4c6e-a715-852a8ef1545f", + "execution_count": null, + "id": "3", "metadata": {}, "outputs": [], "source": [ @@ -38,8 +38,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "id": "9fa01739-812c-4188-b7af-320b4890c963", + "execution_count": null, + "id": "4", "metadata": {}, "outputs": [], "source": [ @@ -53,7 +53,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b8b236cc-d0ff-4a53-b01a-ecbb74f68b0f", + "id": "5", "metadata": {}, "outputs": [], "source": [ @@ -62,8 +62,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "id": "99037759-4d9e-43b2-8b04-341f2698bbe7", + "execution_count": null, + "id": "6", "metadata": {}, "outputs": [], "source": [ @@ -74,8 +74,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "523a3561-315a-4345-a356-bd46774cc7dc", + "execution_count": null, + "id": "7", "metadata": {}, "outputs": [], "source": [ @@ -84,8 +84,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "92a67ce5-9c73-4018-8e70-ed95789a592e", + "execution_count": null, + "id": "8", "metadata": {}, "outputs": [], "source": [ @@ -98,566 +98,18 @@ }, { "cell_type": "code", - "execution_count": 7, - "id": "bafebfbe-72de-407c-b376-6fce6cbb665e", + "execution_count": null, + "id": "9", "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflow\n", - "\n", - "my_workflow: Workflow\n", - "\n", - "clustermy_workflowInputs\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Inputs\n", - "\n", - "\n", - "clustermy_workflowOutputsWithInjection\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "OutputsWithInjection\n", - "\n", - "\n", - "clustermy_workflowprod_and_div\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "prod_and_div: get_prod_and_div\n", - "\n", - "\n", - "clustermy_workflowprod_and_divInputs\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Inputs\n", - "\n", - "\n", - "clustermy_workflowprod_and_divOutputsWithInjection\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "OutputsWithInjection\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "injected_GetItem_m277194796397263432: GetItem\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432Inputs\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Inputs\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432OutputsWithInjection\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "OutputsWithInjection\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "injected_GetItem_m7247062725966739531: GetItem\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531Inputs\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Inputs\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531OutputsWithInjection\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "OutputsWithInjection\n", - "\n", - "\n", - "clustermy_workflowtmp_sum\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "tmp_sum: get_sum\n", - "\n", - "\n", - "clustermy_workflowtmp_sumInputs\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Inputs\n", - "\n", - "\n", - "clustermy_workflowtmp_sumOutputsWithInjection\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "OutputsWithInjection\n", - "\n", - "\n", - "clustermy_workflowsquare_result\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "square_result: get_square\n", - "\n", - "\n", - "clustermy_workflowsquare_resultInputs\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Inputs\n", - "\n", - "\n", - "clustermy_workflowsquare_resultOutputsWithInjection\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "OutputsWithInjection\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsrun\n", - "\n", - "run\n", - "\n", - "\n", - "\n", - "clustermy_workflowOutputsWithInjectionran\n", - "\n", - "ran\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsaccumulate_and_run\n", - "\n", - "accumulate_and_run\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsprod_and_div__x\n", - "\n", - "prod_and_div__x\n", - "\n", - "\n", - "\n", - "clustermy_workflowprod_and_divInputsx\n", - "\n", - "x\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsprod_and_div__x->clustermy_workflowprod_and_divInputsx\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsprod_and_div__y\n", - "\n", - "prod_and_div__y\n", - "\n", - "\n", - "\n", - "clustermy_workflowprod_and_divInputsy\n", - "\n", - "y\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsprod_and_div__y->clustermy_workflowprod_and_divInputsy\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsinjected_GetItem_m277194796397263432__item\n", - "\n", - "injected_GetItem_m277194796397263432__item\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432Inputsitem\n", - "\n", - "item\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsinjected_GetItem_m277194796397263432__item->clustermy_workflowinjected_GetItem_m277194796397263432Inputsitem\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsinjected_GetItem_m7247062725966739531__item\n", - "\n", - "injected_GetItem_m7247062725966739531__item\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531Inputsitem\n", - "\n", - "item\n", - "\n", - "\n", - "\n", - "clustermy_workflowInputsinjected_GetItem_m7247062725966739531__item->clustermy_workflowinjected_GetItem_m7247062725966739531Inputsitem\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowOutputsWithInjectionfailed\n", - "\n", - "failed\n", - "\n", - "\n", - "\n", - "clustermy_workflowOutputsWithInjectionsquare_result__get_square\n", - "\n", - "square_result__get_square\n", - "\n", - "\n", - "\n", - "clustermy_workflowprod_and_divInputsrun\n", - "\n", - "run\n", - "\n", - "\n", - "\n", - "clustermy_workflowprod_and_divOutputsWithInjectionran\n", - "\n", - "ran\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowprod_and_divInputsaccumulate_and_run\n", - "\n", - "accumulate_and_run\n", - "\n", - "\n", - "\n", - "clustermy_workflowprod_and_divOutputsWithInjectionfailed\n", - "\n", - "failed\n", - "\n", - "\n", - "\n", - "clustermy_workflowprod_and_divOutputsWithInjectionget_prod_and_div\n", - "\n", - "get_prod_and_div\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432Inputsobj\n", - "\n", - "obj\n", - "\n", - "\n", - "\n", - "clustermy_workflowprod_and_divOutputsWithInjectionget_prod_and_div->clustermy_workflowinjected_GetItem_m277194796397263432Inputsobj\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531Inputsobj\n", - "\n", - "obj\n", - "\n", - "\n", - "\n", - "clustermy_workflowprod_and_divOutputsWithInjectionget_prod_and_div->clustermy_workflowinjected_GetItem_m7247062725966739531Inputsobj\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432Inputsrun\n", - "\n", - "run\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432OutputsWithInjectionran\n", - "\n", - "ran\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432Inputsaccumulate_and_run\n", - "\n", - "accumulate_and_run\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432OutputsWithInjectionfailed\n", - "\n", - "failed\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432OutputsWithInjectiongetitem\n", - "\n", - "getitem\n", - "\n", - "\n", - "\n", - "clustermy_workflowtmp_sumInputsx\n", - "\n", - "x\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m277194796397263432OutputsWithInjectiongetitem->clustermy_workflowtmp_sumInputsx\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531Inputsrun\n", - "\n", - "run\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531OutputsWithInjectionran\n", - "\n", - "ran\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531Inputsaccumulate_and_run\n", - "\n", - "accumulate_and_run\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531OutputsWithInjectionfailed\n", - "\n", - "failed\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531OutputsWithInjectiongetitem\n", - "\n", - "getitem\n", - "\n", - "\n", - "\n", - "clustermy_workflowtmp_sumInputsy\n", - "\n", - "y\n", - "\n", - "\n", - "\n", - "clustermy_workflowinjected_GetItem_m7247062725966739531OutputsWithInjectiongetitem->clustermy_workflowtmp_sumInputsy\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowtmp_sumInputsrun\n", - "\n", - "run\n", - "\n", - "\n", - "\n", - "clustermy_workflowtmp_sumOutputsWithInjectionran\n", - "\n", - "ran\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowtmp_sumInputsaccumulate_and_run\n", - "\n", - "accumulate_and_run\n", - "\n", - "\n", - "\n", - "clustermy_workflowtmp_sumOutputsWithInjectionfailed\n", - "\n", - "failed\n", - "\n", - "\n", - "\n", - "clustermy_workflowtmp_sumOutputsWithInjectionget_sum\n", - "\n", - "get_sum\n", - "\n", - "\n", - "\n", - "clustermy_workflowsquare_resultInputsx\n", - "\n", - "x\n", - "\n", - "\n", - "\n", - "clustermy_workflowtmp_sumOutputsWithInjectionget_sum->clustermy_workflowsquare_resultInputsx\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowsquare_resultInputsrun\n", - "\n", - "run\n", - "\n", - "\n", - "\n", - "clustermy_workflowsquare_resultOutputsWithInjectionran\n", - "\n", - "ran\n", - "\n", - "\n", - "\n", - "\n", - "clustermy_workflowsquare_resultInputsaccumulate_and_run\n", - "\n", - "accumulate_and_run\n", - "\n", - "\n", - "\n", - "clustermy_workflowsquare_resultOutputsWithInjectionfailed\n", - "\n", - "failed\n", - "\n", - "\n", - "\n", - "clustermy_workflowsquare_resultOutputsWithInjectionget_square\n", - "\n", - "get_square\n", - "\n", - "\n", - "\n", - "clustermy_workflowsquare_resultOutputsWithInjectionget_square->clustermy_workflowOutputsWithInjectionsquare_result__get_square\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "wf.draw(size=(10,10))" ] }, { "cell_type": "code", - "execution_count": 8, - "id": "f140ec87-085c-4433-93cb-379226781bd3", + "execution_count": null, + "id": "10", "metadata": {}, "outputs": [], "source": [ @@ -666,99 +118,17 @@ }, { "cell_type": "code", - "execution_count": 9, - "id": "c61b9a68-d1cd-4949-97b6-00451ba850b7", + "execution_count": null, + "id": "11", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"version\": \"0.1.0\",\n", - " \"nodes\": [\n", - " {\n", - " \"id\": 0,\n", - " \"type\": \"function\",\n", - " \"value\": \"workflow.get_prod_and_div\"\n", - " },\n", - " {\n", - " \"id\": 1,\n", - " \"type\": \"function\",\n", - " \"value\": \"workflow.get_sum\"\n", - " },\n", - " {\n", - " \"id\": 2,\n", - " \"type\": \"function\",\n", - " \"value\": \"workflow.get_square\"\n", - " },\n", - " {\n", - " \"id\": 3,\n", - " \"type\": \"input\",\n", - " \"name\": \"x\",\n", - " \"value\": 1\n", - " },\n", - " {\n", - " \"id\": 4,\n", - " \"type\": \"input\",\n", - " \"name\": \"y\",\n", - " \"value\": 2\n", - " },\n", - " {\n", - " \"id\": 5,\n", - " \"type\": \"output\",\n", - " \"name\": \"result\"\n", - " }\n", - " ],\n", - " \"edges\": [\n", - " {\n", - " \"target\": 1,\n", - " \"targetPort\": \"y\",\n", - " \"source\": 0,\n", - " \"sourcePort\": \"div\"\n", - " },\n", - " {\n", - " \"target\": 1,\n", - " \"targetPort\": \"x\",\n", - " \"source\": 0,\n", - " \"sourcePort\": \"prod\"\n", - " },\n", - " {\n", - " \"target\": 2,\n", - " \"targetPort\": \"x\",\n", - " \"source\": 1,\n", - " \"sourcePort\": \"get_sum\"\n", - " },\n", - " {\n", - " \"target\": 0,\n", - " \"targetPort\": \"x\",\n", - " \"source\": 3,\n", - " \"sourcePort\": null\n", - " },\n", - " {\n", - " \"target\": 0,\n", - " \"targetPort\": \"y\",\n", - " \"source\": 4,\n", - " \"sourcePort\": null\n", - " },\n", - " {\n", - " \"target\": 5,\n", - " \"targetPort\": null,\n", - " \"source\": 2,\n", - " \"sourcePort\": null\n", - " }\n", - " ]\n", - "}" - ] - } - ], + "outputs": [], "source": [ "!cat workflow.json" ] }, { "cell_type": "markdown", - "id": "1681d449-0266-4da4-8d87-40a055cf3149", + "id": "12", "metadata": {}, "source": [ "## Load Workflow with aiida" @@ -767,7 +137,7 @@ { "cell_type": "code", "execution_count": null, - "id": "41b41ac3-7880-48dd-824e-7176187b8734", + "id": "13", "metadata": {}, "outputs": [], "source": [ @@ -779,7 +149,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f6112a23-cdde-4346-88af-295f463940c5", + "id": "14", "metadata": {}, "outputs": [], "source": [ @@ -789,7 +159,7 @@ { "cell_type": "code", "execution_count": null, - "id": "db6d30b6-2b42-4c07-b319-b6700e3c319b", + "id": "15", "metadata": {}, "outputs": [], "source": [ @@ -800,7 +170,7 @@ { "cell_type": "code", "execution_count": null, - "id": "022066b4-21b3-41c6-b0ab-f40661fcf957", + "id": "16", "metadata": {}, "outputs": [], "source": [ @@ -809,7 +179,7 @@ }, { "cell_type": "markdown", - "id": "bac61097-e666-443b-9446-4ebb9a3e6b5f", + "id": "17", "metadata": {}, "source": [ "# Load Workflow with jobflow" @@ -818,7 +188,7 @@ { "cell_type": "code", "execution_count": null, - "id": "63df1efd-9417-4146-a88e-cde161962b9e", + "id": "18", "metadata": {}, "outputs": [], "source": [ @@ -828,7 +198,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6506e6cc-842c-4899-8382-696466d63a1b", + "id": "19", "metadata": {}, "outputs": [], "source": [ @@ -838,7 +208,7 @@ { "cell_type": "code", "execution_count": null, - "id": "eed9ca1c-ad8d-440a-97f8-97b9d3d45eb0", + "id": "20", "metadata": {}, "outputs": [], "source": [ @@ -848,7 +218,7 @@ { "cell_type": "code", "execution_count": null, - "id": "21c2303c-1118-4d50-9d99-6ec71653be02", + "id": "21", "metadata": {}, "outputs": [], "source": [ @@ -858,7 +228,7 @@ }, { "cell_type": "markdown", - "id": "f26c9650-649f-436d-8d19-b2cd75cf6488", + "id": "22", "metadata": {}, "source": [ "# Load Workflow with pyiron_base" @@ -867,7 +237,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0ada4861-0e5a-4baf-9e16-42b7c238558b", + "id": "23", "metadata": {}, "outputs": [], "source": [ @@ -877,7 +247,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7ac2fd45-e88a-4d12-b4e3-b23212729730", + "id": "24", "metadata": {}, "outputs": [], "source": [ @@ -888,7 +258,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e8811199-2c2d-4613-be74-cc00508d97c4", + "id": "25", "metadata": {}, "outputs": [], "source": [ @@ -896,25 +266,7 @@ ] } ], - "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.5" - } - }, + "metadata": {}, "nbformat": 4, "nbformat_minor": 5 } diff --git a/example_workflows/arithmetic/universal_workflow.ipynb b/example_workflows/arithmetic/universal_workflow.ipynb index a8cfc73..fa58f4b 100644 --- a/example_workflows/arithmetic/universal_workflow.ipynb +++ b/example_workflows/arithmetic/universal_workflow.ipynb @@ -1,357 +1,278 @@ { - "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": {} + "metadata": {}, + "source": [ + "# Load Simple Workflow" + ] }, { "cell_type": "markdown", - "source": "## Plot", - "metadata": {} + "metadata": {}, + "source": [ + "## Plot" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.plot import plot", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "from python_workflow_definition.plot import plot" + ] }, { "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\nworkflow.get_prod_and_div\n\n\n\n1\n\nworkflow.get_sum\n\n\n\n0->1\n\n\n\n\n\n2\n\nworkflow.get_square\n\n\n\n1->2\n\n\nx\n\n\n\n5\n\nresult\n\n\n\n2->5\n\n\n\n\n\n3\n\n1\n\n\n\n3->0\n\n\nx\n\n\n\n4\n\n2\n\n\n\n4->0\n\n\ny\n\n\n" - }, - "metadata": {} - } - ], - "execution_count": 2 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot(file_name='workflow.json')" + ] }, { "cell_type": "markdown", - "source": "## Aiida ", - "metadata": {} + "metadata": {}, + "source": [ + "## Aiida " + ] }, { "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 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.aiida import load_workflow_json\n", + "\n", + "from aiida import load_profile\n", + "load_profile()" + ] }, { "cell_type": "code", - "source": "workgraph = load_workflow_json(file_name='workflow.json')", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "workgraph = load_workflow_json(file_name='workflow.json')" + ] }, { "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": "fc63f59e75a74fbcab9e44a06ecb6d18" - } - }, - "metadata": {} - } - ], - "execution_count": 5 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Create inputs rather than tasks out of data nodes\n", + "workgraph" + ] }, { "cell_type": "code", - "source": "\nworkgraph.run()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": "05/24/2025 05:39:46 AM <644> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [35|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_prod_and_div1\n05/24/2025 05:39:46 AM <644> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [35|WorkGraphEngine|update_task_state]: Task: get_prod_and_div1, type: PyFunction, finished.\n05/24/2025 05:39:46 AM <644> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [35|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_sum2\n05/24/2025 05:39:47 AM <644> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [35|WorkGraphEngine|update_task_state]: Task: get_sum2, type: PyFunction, finished.\n05/24/2025 05:39:47 AM <644> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [35|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_square3\n05/24/2025 05:39:47 AM <644> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [35|WorkGraphEngine|update_task_state]: Task: get_square3, type: PyFunction, finished.\n05/24/2025 05:39:47 AM <644> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [35|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/24/2025 05:39:47 AM <644> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [35|WorkGraphEngine|finalize]: Finalize workgraph.\n" - } - ], - "execution_count": 6 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "workgraph.run()" + ] }, { "cell_type": "markdown", - "source": "## executorlib", - "metadata": {} + "metadata": {}, + "source": [ + "## executorlib" + ] }, { "cell_type": "code", - "source": "from executorlib import SingleNodeExecutor", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 7 + "source": [ + "from executorlib import SingleNodeExecutor" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.executorlib import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 8 + "source": [ + "from python_workflow_definition.executorlib import load_workflow_json" + ] }, { "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 - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 9 + "source": [ + "with SingleNodeExecutor(max_workers=1) as exe:\n", + " result = load_workflow_json(file_name=\"workflow.json\", exe=exe).result()" + ] }, { "cell_type": "code", - "source": "result", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "execution_count": 10, - "output_type": "execute_result", - "data": { - "text/plain": "6.25" - }, - "metadata": {} - } - ], - "execution_count": 10 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result" + ] }, { "cell_type": "markdown", - "source": "## Jobflow", - "metadata": {} + "metadata": {}, + "source": [ + "## Jobflow" + ] }, { "cell_type": "code", - "source": "from jobflow.managers.local import run_locally", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 11 + "source": [ + "from jobflow.managers.local import run_locally" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.jobflow import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 12 + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] }, { "cell_type": "code", - "source": "flow = load_workflow_json(file_name=\"workflow.json\")", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 13 + "source": [ + "flow = load_workflow_json(file_name=\"workflow.json\")" + ] }, { "cell_type": "code", - "source": "result = run_locally(flow)\nresult", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "2025-05-24 05:39:49,427 INFO Started executing jobs locally\n2025-05-24 05:39:49,510 INFO Starting job - get_prod_and_div (f82f13df-44cc-4bce-8712-ab5a1408c551)\n2025-05-24 05:39:49,512 INFO Finished job - get_prod_and_div (f82f13df-44cc-4bce-8712-ab5a1408c551)\n2025-05-24 05:39:49,513 INFO Starting job - get_sum (bb1c3b6d-986a-4e5d-b2f4-6611940ba4c6)\n2025-05-24 05:39:49,514 INFO Finished job - get_sum (bb1c3b6d-986a-4e5d-b2f4-6611940ba4c6)\n2025-05-24 05:39:49,515 INFO Starting job - get_square (5c60ac07-39fd-4511-93d8-3bd65c6bd7ca)\n2025-05-24 05:39:49,516 INFO Finished job - get_square (5c60ac07-39fd-4511-93d8-3bd65c6bd7ca)\n2025-05-24 05:39:49,516 INFO Finished executing jobs locally\n" - }, - { - "execution_count": 14, - "output_type": "execute_result", - "data": { - "text/plain": "{'f82f13df-44cc-4bce-8712-ab5a1408c551': {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/example_workflows/arithmetic'))},\n 'bb1c3b6d-986a-4e5d-b2f4-6611940ba4c6': {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/example_workflows/arithmetic'))},\n '5c60ac07-39fd-4511-93d8-3bd65c6bd7ca': {1: Response(output=6.25, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/arithmetic'))}}" - }, - "metadata": {} - } - ], - "execution_count": 14 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] }, { "cell_type": "markdown", - "source": "## pyiron", - "metadata": {} + "metadata": {}, + "source": [ + "## pyiron" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.pyiron_base import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 15 + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] }, { "cell_type": "code", - "source": "delayed_object_lst = load_workflow_json(file_name=\"workflow.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_25906340bd0c28c44fd73d69e7a3d8bc\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x749611736a50>\n\n\n\nx_1a7fff02f6473a13e5e8742988186611\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x7496117367e0>\n\n\n\nx_1a7fff02f6473a13e5e8742988186611->create_function_job_25906340bd0c28c44fd73d69e7a3d8bc\n\n\n\n\n\nx_e4655695917c433de56d1c64232473f9\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x74961213ea50>\n\n\n\nx_e4655695917c433de56d1c64232473f9->x_1a7fff02f6473a13e5e8742988186611\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_e4655695917c433de56d1c64232473f9\n\n\n\n\n\ny_3b83397feef07a74d9a046a1b7f57749\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x74961eca0a10>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_3b83397feef07a74d9a046a1b7f57749\n\n\n\n\n\ny_3b83397feef07a74d9a046a1b7f57749->x_1a7fff02f6473a13e5e8742988186611\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_e4655695917c433de56d1c64232473f9\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_3b83397feef07a74d9a046a1b7f57749\n\n\n\n\n" - }, - "metadata": {} - } - ], - "execution_count": 16 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=\"workflow.json\")\n", + "delayed_object_lst[-1].draw()" + ] }, { "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_00cf2c787390eacfbc4a51e9a0c38ec7 was saved and received the ID: 1\nThe job get_sum_4b5b9d16b259a13b6a32798ce2779af8 was saved and received the ID: 2\nThe job get_square_9cc2f0545498916d7720c59c1120a66d was saved and received the ID: 3\n" - }, - { - "execution_count": 17, - "output_type": "execute_result", - "data": { - "text/plain": "6.25" - }, - "metadata": {} - } - ], - "execution_count": 17 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "## Load Workflow with pyiron_workflow" + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "from python_workflow_definition.pyiron_workflow import load_workflow_json" + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf = load_workflow_json(file_name=\"workflow.json\")" + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=\"workflow.json\")" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.draw(size=(10,10))" + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.run()" + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] }, { "cell_type": "markdown", - "source": "## Python", - "metadata": {} + "metadata": {}, + "source": [ + "## Python" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.purepython import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 18 + "source": [ + "from python_workflow_definition.purepython import load_workflow_json" + ] }, { "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": "6.25" - }, - "metadata": {} - } - ], - "execution_count": 19 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "load_workflow_json(file_name=\"workflow.json\")" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/example_workflows/nfdi/aiida.ipynb b/example_workflows/nfdi/aiida.ipynb index 30378ca..cfd1f4c 100644 --- a/example_workflows/nfdi/aiida.ipynb +++ b/example_workflows/nfdi/aiida.ipynb @@ -1,398 +1,381 @@ { - "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": "0", + "metadata": {}, + "source": [ + "# Aiida\n", + "\n", + "https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements" + ] }, { - "id": "11e09b78-cb72-465f-9c8b-5b77f0aa729c", "cell_type": "markdown", - "source": "## Define workflow with aiida", - "metadata": {} + "id": "1", + "metadata": {}, + "source": [ + "## Define workflow with aiida" + ] }, { - "id": "17173d54-dc76-4052-ab39-d44771ac903d", "cell_type": "code", - "source": "import os", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "2", + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "import os" + ] }, { - "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": 2, - "output_type": "execute_result", - "data": { - "text/plain": "Profile" - }, - "metadata": {} - } - ], - "execution_count": 2 - }, - { - "id": "6dac225a1ce86b25", + "execution_count": null, + "id": "3", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.aiida import write_workflow_json\n", + "\n", + "from aiida_workgraph import WorkGraph, task\n", + "from aiida import orm, load_profile\n", + "load_profile()" + ] + }, + { "cell_type": "code", - "source": "from 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 - }, + "execution_count": null, + "id": "4", + "metadata": {}, "outputs": [], - "execution_count": 3 + "source": [ + "from 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", + ")" + ] }, { - "id": "c47205d289499756", "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 - }, + "execution_count": null, + "id": "5", + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "convert_to_xdmf = task(outputs=[\"xdmf_file\", \"h5_file\"])(_convert_to_xdmf)\n", + "poisson = task(outputs=[\"numdofs\", \"pvd_file\", \"vtu_file\"])(_poisson)" + ] }, { - "id": "37c9d988-1755-446c-9f7b-c32f99e280d4", "cell_type": "code", - "source": "source_directory = orm.Str(os.path.abspath(os.path.join(os.curdir, \"source\")))", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "6", + "metadata": {}, "outputs": [], - "execution_count": 5 + "source": [ + "source_directory = orm.Str(os.path.abspath(os.path.join(os.curdir, \"source\")))" + ] }, { - "id": "8d911f98-3b80-457f-a0f4-3cb37ebf1691", "cell_type": "code", - "source": "domain_size = orm.Float(2.0)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "7", + "metadata": {}, "outputs": [], - "execution_count": 6 + "source": [ + "domain_size = orm.Float(2.0)" + ] }, { - "id": "1e7e14ba-c4a7-485f-9bd8-44625830cca0", "cell_type": "code", - "source": "wg = WorkGraph(\"wg-nfdi\")", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "8", + "metadata": {}, "outputs": [], - "execution_count": 7 + "source": [ + "wg = WorkGraph(\"wg-nfdi\")" + ] }, { - "id": "71d411b6-cbec-489e-99e3-ba71680bcb5b", "cell_type": "code", - "source": "gmsh_output_file = wg.add_task(\n generate_mesh,\n domain_size=domain_size,\n source_directory=source_directory,\n)", + "execution_count": null, + "id": "9", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 8 + "source": [ + "gmsh_output_file = wg.add_task(\n", + " generate_mesh,\n", + " domain_size=domain_size,\n", + " source_directory=source_directory,\n", + ")" + ] }, { - "id": "1d0d9804-f250-48b3-a5d0-a546d520f79b", "cell_type": "code", - "source": "meshio_output_dict = wg.add_task(\n convert_to_xdmf,\n gmsh_output_file=gmsh_output_file.outputs.result,\n)", + "execution_count": null, + "id": "10", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 9 + "source": [ + "meshio_output_dict = wg.add_task(\n", + " convert_to_xdmf,\n", + " gmsh_output_file=gmsh_output_file.outputs.result,\n", + ")" + ] }, { - "id": "7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590", "cell_type": "code", - "source": "poisson_dict = wg.add_task(\n poisson,\n meshio_output_xdmf=meshio_output_dict.outputs.xdmf_file, \n meshio_output_h5=meshio_output_dict.outputs.h5_file,\n source_directory=source_directory,\n)", + "execution_count": null, + "id": "11", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 10 + "source": [ + "poisson_dict = wg.add_task(\n", + " poisson,\n", + " meshio_output_xdmf=meshio_output_dict.outputs.xdmf_file, \n", + " meshio_output_h5=meshio_output_dict.outputs.h5_file,\n", + " source_directory=source_directory,\n", + ")" + ] }, { - "id": "3c4a29b0-eb1e-490a-8be0-e03cfff15e0a", "cell_type": "code", - "source": "pvbatch_output_file = wg.add_task(\n plot_over_line,\n poisson_output_pvd_file=poisson_dict.outputs.pvd_file, \n poisson_output_vtu_file=poisson_dict.outputs.vtu_file,\n source_directory=source_directory,\n)", + "execution_count": null, + "id": "12", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 11 + "source": [ + "pvbatch_output_file = wg.add_task(\n", + " plot_over_line,\n", + " poisson_output_pvd_file=poisson_dict.outputs.pvd_file, \n", + " poisson_output_vtu_file=poisson_dict.outputs.vtu_file,\n", + " source_directory=source_directory,\n", + ")" + ] }, { - "id": "a0a4c233-322d-4723-9627-62ca2487bfa9", "cell_type": "code", - "source": "macros_tex_file = wg.add_task(\n substitute_macros,\n pvbatch_output_file=pvbatch_output_file.outputs.result, \n ndofs=poisson_dict.outputs.numdofs, \n domain_size=domain_size,\n source_directory=source_directory,\n)", + "execution_count": null, + "id": "13", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 12 + "source": [ + "macros_tex_file = wg.add_task(\n", + " substitute_macros,\n", + " pvbatch_output_file=pvbatch_output_file.outputs.result, \n", + " ndofs=poisson_dict.outputs.numdofs, \n", + " domain_size=domain_size,\n", + " source_directory=source_directory,\n", + ")" + ] }, { - "id": "c281408f-e63d-4380-a7e6-c595d49fbb8f", "cell_type": "code", - "source": "paper_output = wg.add_task(\n compile_paper,\n macros_tex=macros_tex_file.outputs.result, \n plot_file=pvbatch_output_file.outputs.result,\n source_directory=source_directory,\n)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "14", + "metadata": {}, "outputs": [], - "execution_count": 13 + "source": [ + "paper_output = wg.add_task(\n", + " compile_paper,\n", + " macros_tex=macros_tex_file.outputs.result, \n", + " plot_file=pvbatch_output_file.outputs.result,\n", + " source_directory=source_directory,\n", + ")" + ] }, { - "id": "a384d70a-8ef5-4fdd-880c-56ac7eaf87b9", "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-nfdi…", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 1, - "model_id": "17520c019e5c413fb7a119ecc997c3ea" - } - }, - "metadata": {} - } - ], - "execution_count": 14 - }, - { - "id": "fb23ad9c-76fd-4c0b-b546-e305d6c49796", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "wg" + ] + }, + { "cell_type": "code", - "source": "workflow_json_filename = \"aiida_nfdi.json\"", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "16", + "metadata": {}, "outputs": [], - "execution_count": 15 + "source": [ + "workflow_json_filename = \"aiida_nfdi.json\"" + ] }, { - "id": "4139547a-9717-4708-b1a5-8202a0382d77", "cell_type": "code", - "source": "write_workflow_json(wg=wg, file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "17", + "metadata": {}, "outputs": [], - "execution_count": 16 + "source": [ + "write_workflow_json(wg=wg, file_name=workflow_json_filename)" + ] }, { - "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 \"version\": \"0.1.0\",\n \"nodes\": [\n {\n \"id\": 0,\n \"type\": \"function\",\n \"value\": \"workflow.generate_mesh\"\n },\n {\n \"id\": 1,\n \"type\": \"function\",\n \"value\": \"workflow.convert_to_xdmf\"\n },\n {\n \"id\": 2,\n \"type\": \"function\",\n \"value\": \"workflow.poisson\"\n },\n {\n \"id\": 3,\n \"type\": \"function\",\n \"value\": \"workflow.plot_over_line\"\n },\n {\n \"id\": 4,\n \"type\": \"function\",\n \"value\": \"workflow.substitute_macros\"\n },\n {\n \"id\": 5,\n \"type\": \"function\",\n \"value\": \"workflow.compile_paper\"\n },\n {\n \"id\": 6,\n \"type\": \"input\",\n \"name\": \"domain_size\",\n \"value\": 2.0\n },\n {\n \"id\": 7,\n \"type\": \"input\",\n \"name\": \"source_directory\",\n \"value\": \"/home/jovyan/example_workflows/nfdi/source\"\n },\n {\n \"id\": 8,\n \"type\": \"output\",\n \"name\": \"result\"\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\": 0,\n \"targetPort\": \"source_directory\",\n \"source\": 7,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"source_directory\",\n \"source\": 7,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"source_directory\",\n \"source\": 7,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"domain_size\",\n \"source\": 6,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"source_directory\",\n \"source\": 7,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"source_directory\",\n \"source\": 7,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": null,\n \"source\": 5,\n \"sourcePort\": null\n }\n ]\n}" - } - ], - "execution_count": 17 + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "!cat {workflow_json_filename}" + ] }, { - "id": "11a829e2-face-469f-b343-2c95763b1f13", "cell_type": "markdown", - "source": "## Load Workflow with jobflow", - "metadata": {} + "id": "19", + "metadata": {}, + "source": [ + "## Load Workflow with jobflow" + ] }, { - "id": "4f3acabe-55df-479a-af4d-a23a80c4660d", "cell_type": "code", - "source": "from python_workflow_definition.jobflow import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "20", + "metadata": {}, "outputs": [], - "execution_count": 18 + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] }, { - "id": "b6ba9444-a2c8-451b-b74c-19b0f69ba369", "cell_type": "code", - "source": "from jobflow.managers.local import run_locally", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "21", + "metadata": {}, "outputs": [], - "execution_count": 19 + "source": [ + "from jobflow.managers.local import run_locally" + ] }, { - "id": "c3528d55-6bf7-47ed-a110-65c47446ba92", "cell_type": "code", - "source": "flow = load_workflow_json(file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "22", + "metadata": {}, "outputs": [], - "execution_count": 20 + "source": [ + "flow = load_workflow_json(file_name=workflow_json_filename)" + ] }, { - "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-05-24 05:41:02,340 INFO Started executing jobs locally\n2025-05-24 05:41:02,615 INFO Starting job - generate_mesh (1c3eab15-7639-4f4e-9ca7-7523ba640ca5)\n2025-05-24 05:41:03,800 INFO Finished job - generate_mesh (1c3eab15-7639-4f4e-9ca7-7523ba640ca5)\n2025-05-24 05:41:03,801 INFO Starting job - convert_to_xdmf (07acbed1-2abb-4141-896d-170b58aba7c2)\n2025-05-24 05:41:05,099 INFO Finished job - convert_to_xdmf (07acbed1-2abb-4141-896d-170b58aba7c2)\n2025-05-24 05:41:05,100 INFO Starting job - poisson (b212b743-f36d-4f7b-a64a-79060469f34b)\n2025-05-24 05:41:12,945 INFO Finished job - poisson (b212b743-f36d-4f7b-a64a-79060469f34b)\n2025-05-24 05:41:12,946 INFO Starting job - plot_over_line (af5a3a54-b7fa-45f8-a70f-7f95d23c32c4)\n2025-05-24 05:41:14,360 INFO Finished job - plot_over_line (af5a3a54-b7fa-45f8-a70f-7f95d23c32c4)\n2025-05-24 05:41:14,360 INFO Starting job - substitute_macros (ec55c04a-a5cb-4d8f-9981-961f7297532e)\n2025-05-24 05:41:15,171 INFO Finished job - substitute_macros (ec55c04a-a5cb-4d8f-9981-961f7297532e)\n2025-05-24 05:41:15,172 INFO Starting job - compile_paper (629539b7-2541-4ba7-9546-b7adb0cc312e)\n2025-05-24 05:42:14,698 INFO Finished job - compile_paper (629539b7-2541-4ba7-9546-b7adb0cc312e)\n2025-05-24 05:42:14,699 INFO Finished executing jobs locally\n" - }, - { - "execution_count": 21, - "output_type": "execute_result", - "data": { - "text/plain": "{'1c3eab15-7639-4f4e-9ca7-7523ba640ca5': {1: Response(output='/home/jovyan/example_workflows/nfdi/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '07acbed1-2abb-4141-896d-170b58aba7c2': {1: Response(output={'xdmf_file': '/home/jovyan/example_workflows/nfdi/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/example_workflows/nfdi/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n 'b212b743-f36d-4f7b-a64a-79060469f34b': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/example_workflows/nfdi/processing/poisson.pvd', 'vtu_file': '/home/jovyan/example_workflows/nfdi/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n 'af5a3a54-b7fa-45f8-a70f-7f95d23c32c4': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n 'ec55c04a-a5cb-4d8f-9981-961f7297532e': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '629539b7-2541-4ba7-9546-b7adb0cc312e': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))}}" - }, - "metadata": {} - } - ], - "execution_count": 21 - }, - { - "id": "397b16a2-e1ec-4eec-8562-1c84f585c347", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] + }, + { "cell_type": "markdown", - "source": "## Load Workflow with pyiron_base", - "metadata": {} + "id": "24", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_base" + ] }, { - "id": "be4d5d93-e9f6-4072-a6be-0ee5dc93590f", "cell_type": "code", - "source": "from python_workflow_definition.pyiron_base import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "25", + "metadata": {}, "outputs": [], - "execution_count": 22 + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] }, { - "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_724cfd00ffeb70f8b463a938195e0447\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf38aa0>\n\n\n\nmacros_tex_b52804e5fa845b3657fa99b738e02cf7\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf38830>\n\n\n\nmacros_tex_b52804e5fa845b3657fa99b738e02cf7->create_function_job_724cfd00ffeb70f8b463a938195e0447\n\n\n\n\n\npvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf38500>\n\n\n\npvbatch_output_file_554a54a50a86b23416c0daf6ab0938df->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\npoisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf07a10>\n\n\n\npoisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9->pvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nplot_file_554a54a50a86b23416c0daf6ab0938df\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf38500>\n\n\n\npoisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9->plot_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nplot_file_554a54a50a86b23416c0daf6ab0938df->create_function_job_724cfd00ffeb70f8b463a938195e0447\n\n\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf07da0>\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1->poisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\n\n\n\n\npoisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf381a0>\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1->poisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\n\n\n\n\nndofs_e826761b60042b070e0c0a24b472ee26\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf38590>\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1->ndofs_e826761b60042b070e0c0a24b472ee26\n\n\n\n\n\npoisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810->pvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\npoisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810->plot_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nndofs_e826761b60042b070e0c0a24b472ee26->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\ngmsh_output_file_553a0d07e32ca83a3640e955a7b868a4\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf07b00>\n\n\n\ngmsh_output_file_553a0d07e32ca83a3640e955a7b868a4->meshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x74ee3cf07d70>\n\n\n\ngmsh_output_file_553a0d07e32ca83a3640e955a7b868a4->meshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe->poisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe->poisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe->ndofs_e826761b60042b070e0c0a24b472ee26\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_553a0d07e32ca83a3640e955a7b868a4\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696\n\nsource_directory=/home/jovyan/example_workflows/nfdi/source\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->create_function_job_724cfd00ffeb70f8b463a938195e0447\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->pvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->poisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->plot_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->poisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->ndofs_e826761b60042b070e0c0a24b472ee26\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->gmsh_output_file_553a0d07e32ca83a3640e955a7b868a4\n\n\n\n\n" - }, - "metadata": {} - } - ], - "execution_count": 23 - }, - { - "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_47725c16637f799ac042e47468005db3 was saved and received the ID: 1\nThe job convert_to_xdmf_d6a46eb9a4ec352aa996e783ec3c785f was saved and received the ID: 2\nThe job poisson_3c147fc86db87cf0c0f94bda333f8cd8 was saved and received the ID: 3\nThe job plot_over_line_ef50933291910dadcc8311924971e127 was saved and received the ID: 4\nThe job substitute_macros_63766eafd6b1980c7832dd8c9a97c96e was saved and received the ID: 5\nThe job compile_paper_128d1d58374953c00e95b8de62cbb10b was saved and received the ID: 6\n" - }, - { - "execution_count": 24, - "output_type": "execute_result", - "data": { - "text/plain": "'/home/jovyan/example_workflows/nfdi/postprocessing/paper.pdf'" - }, - "metadata": {} - } - ], - "execution_count": 24 + "execution_count": null, + "id": "26", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\n", + "delayed_object_lst[-1].draw()" + ] }, { + "cell_type": "code", + "execution_count": null, + "id": "27", "metadata": {}, - "cell_type": "markdown", - "source": "## Load Workflow with pyiron_workflow", - "id": "afaf2bc0b3a491ca" + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] }, { + "cell_type": "markdown", + "id": "28", "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] + }, + { "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "from python_workflow_definition.pyiron_workflow import load_workflow_json", - "id": "6172b410eb776fc4" + "id": "29", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf = load_workflow_json(file_name=workflow_json_filename)", - "id": "668fe64b18b4d604" + "id": "30", + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=workflow_json_filename)" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.draw(size=(10,10))", - "id": "8c4fd72394841ffa" + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.run()", - "id": "c1427e3ce0716f64" + "id": "32", + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/example_workflows/nfdi/cwl.ipynb b/example_workflows/nfdi/cwl.ipynb index fc40e63..42e089a 100644 --- a/example_workflows/nfdi/cwl.ipynb +++ b/example_workflows/nfdi/cwl.ipynb @@ -1,159 +1,140 @@ { - "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": "377fef56-484d-491c-b19e-1be6931e44eb", "cell_type": "code", - "source": "import pickle", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "0", + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "import pickle" + ] }, { - "id": "2033dda1-dc7a-4f96-b1bd-90505b0ec555", "cell_type": "code", - "source": "import json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "1", + "metadata": {}, "outputs": [], - "execution_count": 2 + "source": [ + "import json" + ] }, { - "id": "60cb8ace-acb0-47b4-b0bc-bb54d00d19dd", "cell_type": "code", - "source": "import os", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "2", + "metadata": {}, "outputs": [], - "execution_count": 3 + "source": [ + "import os" + ] }, { - "id": "92e3921b-2bb8-4333-8cfe-4bd27f785d24", "cell_type": "code", - "source": "from python_workflow_definition.cwl import write_workflow", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "3", + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "from python_workflow_definition.cwl import write_workflow" + ] }, { - "id": "b0cf73b9-ea21-4437-8d2a-c51b65bbfa86", "cell_type": "markdown", - "source": "# Overwrite source directory with absolute path", - "metadata": {} + "id": "4", + "metadata": {}, + "source": [ + "# Overwrite source directory with absolute path" + ] }, { - "id": "bca61d32-89dd-4df7-92da-fee1a157df5a", "cell_type": "code", - "source": "with open(\"workflow.json\") as f:\n content = json.load(f)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "5", + "metadata": {}, "outputs": [], - "execution_count": 5 + "source": [ + "with open(\"workflow.json\") as f:\n", + " content = json.load(f)" + ] }, { - "id": "8392fa04-4fb3-496e-9387-0106c872fb98", "cell_type": "code", - "source": "node_lst = []\nfor n in content[\"nodes\"]:\n if 'name' in n and n['name'] == 'source_directory':\n n[\"value\"] = os.path.abspath(n[\"value\"])\n node_lst.append(n)\n\ncontent[\"nodes\"] = node_lst", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "6", + "metadata": {}, "outputs": [], - "execution_count": 6 + "source": [ + "node_lst = []\n", + "for n in content[\"nodes\"]:\n", + " if 'name' in n and n['name'] == 'source_directory':\n", + " n[\"value\"] = os.path.abspath(n[\"value\"])\n", + " node_lst.append(n)\n", + "\n", + "content[\"nodes\"] = node_lst" + ] }, { - "id": "e53c7769-28bb-4d8e-b3a4-02298818a001", "cell_type": "code", - "source": "with open(\"workflow.json\", \"w\") as f:\n json.dump(content, f)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "7", + "metadata": {}, "outputs": [], - "execution_count": 7 + "source": [ + "with open(\"workflow.json\", \"w\") as f:\n", + " json.dump(content, f)" + ] }, { - "id": "a9540ba7-f15a-4d04-86aa-0cf2ad4ac185", "cell_type": "markdown", - "source": "# Execute workflow", - "metadata": {} + "id": "8", + "metadata": {}, + "source": [ + "# Execute workflow" + ] }, { - "id": "5303c059-8ae4-4557-858e-b4bd64eac711", "cell_type": "code", - "source": "write_workflow(file_name=\"workflow.json\")", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "9", + "metadata": {}, "outputs": [], - "execution_count": 8 + "source": [ + "write_workflow(file_name=\"workflow.json\")" + ] }, { - "id": "df302bd2-e9b6-4595-979c-67c46414d986", "cell_type": "code", - "source": "! cwltool --preserve-environment=CONDA_EXE workflow.cwl workflow.yml", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "/srv/conda/envs/notebook/bin/cwltool:11: DeprecationWarning: Nesting argument groups is deprecated.\n sys.exit(run())\n\u001B[1;30mINFO\u001B[0m /srv/conda/envs/notebook/bin/cwltool 3.1.20250110105449\n\u001B[1;30mINFO\u001B[0m Resolved 'workflow.cwl' to 'file:///home/jovyan/example_workflows/nfdi/workflow.cwl'\n\u001B[1;30mINFO\u001B[0m [workflow ] start\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step generate_mesh_0\n\u001B[1;30mINFO\u001B[0m [step generate_mesh_0] start\n\u001B[1;30mINFO\u001B[0m [job generate_mesh_0] /tmp/xjzxjjxg$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/lint8hha/stgaa9fa1cf-dae6-4402-aa25-3da9289e3937/workflow.py \\\n --function=workflow.generate_mesh \\\n --arg_domain_size=/tmp/lint8hha/stg94834a09-0454-4ad4-bc93-b8f3a1dc72f4/domain_size.pickle \\\n --arg_source_directory=/tmp/lint8hha/stg03fa6508-a0ea-4379-97b1-e3815dfe7395/source_directory.pickle\n\u001B[1;30mINFO\u001B[0m [job generate_mesh_0] Max memory used: 60MiB\n\u001B[1;30mINFO\u001B[0m [job generate_mesh_0] completed success\n\u001B[1;30mINFO\u001B[0m [step generate_mesh_0] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step convert_to_xdmf_1\n\u001B[1;30mINFO\u001B[0m [step convert_to_xdmf_1] start\n\u001B[1;30mINFO\u001B[0m [job convert_to_xdmf_1] /tmp/q47niux0$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/pd0inpeh/stg928009b1-efc5-45d7-9746-e1af8d96f0c5/workflow.py \\\n --function=workflow.convert_to_xdmf \\\n --arg_gmsh_output_file=/tmp/pd0inpeh/stg03750262-f7c4-4bb9-b558-0b7ea0a54cf3/result.pickle\n\u001B[1;30mINFO\u001B[0m [job convert_to_xdmf_1] Max memory used: 69MiB\n\u001B[1;30mINFO\u001B[0m [job convert_to_xdmf_1] completed success\n\u001B[1;30mINFO\u001B[0m [step convert_to_xdmf_1] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step poisson_2\n\u001B[1;30mINFO\u001B[0m [step poisson_2] start\n\u001B[1;30mINFO\u001B[0m [job poisson_2] /tmp/e045_wvq$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/rsa0i3o4/stgfd3d067f-0d0e-46b6-8b1c-e63a936cca99/workflow.py \\\n --function=workflow.poisson \\\n --arg_meshio_output_xdmf=/tmp/rsa0i3o4/stgebd53ba4-dbbc-4769-b359-f1f95611d02d/xdmf_file.pickle \\\n --arg_meshio_output_h5=/tmp/rsa0i3o4/stga4bcfd98-5bf0-4da3-b1e6-a4d55a00cc30/h5_file.pickle \\\n --arg_source_directory=/tmp/rsa0i3o4/stg003e0d81-81e0-4138-9e97-103a910c925e/source_directory.pickle\n\u001B[1;30mINFO\u001B[0m [job poisson_2] Max memory used: 81MiB\n\u001B[1;30mINFO\u001B[0m [job poisson_2] completed success\n\u001B[1;30mINFO\u001B[0m [step poisson_2] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step plot_over_line_3\n\u001B[1;30mINFO\u001B[0m [step plot_over_line_3] start\n\u001B[1;30mINFO\u001B[0m [job plot_over_line_3] /tmp/0tov09ih$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/z9a5oiuc/stgcde66eb7-274f-4ae3-833b-c8d99fe3bbb1/workflow.py \\\n --function=workflow.plot_over_line \\\n --arg_poisson_output_vtu_file=/tmp/z9a5oiuc/stg144f313e-e286-4800-a3d2-86a6cae36a98/vtu_file.pickle \\\n --arg_source_directory=/tmp/z9a5oiuc/stg224c0c40-7cb8-4f1c-921c-013809fb5cbf/source_directory.pickle \\\n --arg_poisson_output_pvd_file=/tmp/z9a5oiuc/stgc4c75ca6-aab0-40be-bfbd-f432d3523d2b/pvd_file.pickle\n\u001B[1;30mINFO\u001B[0m [job plot_over_line_3] Max memory used: 68MiB\n\u001B[1;30mINFO\u001B[0m [job plot_over_line_3] completed success\n\u001B[1;30mINFO\u001B[0m [step plot_over_line_3] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step substitute_macros_4\n\u001B[1;30mINFO\u001B[0m [step substitute_macros_4] start\n\u001B[1;30mINFO\u001B[0m [job substitute_macros_4] /tmp/08mfe8f0$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/5valbs4a/stg15353150-ebc3-49de-93a8-564a25f33270/workflow.py \\\n --function=workflow.substitute_macros \\\n --arg_domain_size=/tmp/5valbs4a/stg0734ab21-1efd-480b-ba2b-cea9ed24012e/domain_size.pickle \\\n --arg_source_directory=/tmp/5valbs4a/stg0c79cde6-159f-4b82-bdb9-aabef8678f9f/source_directory.pickle \\\n --arg_ndofs=/tmp/5valbs4a/stg770f9cb7-d2c3-4ce5-bc00-7a9cdb11d64d/numdofs.pickle \\\n --arg_pvbatch_output_file=/tmp/5valbs4a/stgdd978452-6c84-4308-abf6-7ae2609fc91d/result.pickle\n\u001B[1;30mINFO\u001B[0m [job substitute_macros_4] Max memory used: 60MiB\n\u001B[1;30mINFO\u001B[0m [job substitute_macros_4] completed success\n\u001B[1;30mINFO\u001B[0m [step substitute_macros_4] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step compile_paper_5\n\u001B[1;30mINFO\u001B[0m [step compile_paper_5] start\n\u001B[1;30mINFO\u001B[0m [job compile_paper_5] /tmp/hjjeng16$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/3bq2mxdl/stg34a5d902-97c3-43f1-95eb-5e14d0c68386/workflow.py \\\n --function=workflow.compile_paper \\\n --arg_macros_tex=/tmp/3bq2mxdl/stg184e0acf-5138-4b37-97f0-ba406ed71433/result.pickle \\\n --arg_plot_file=/tmp/3bq2mxdl/stg2360c6e9-26ec-43f5-99a2-26c05668b2fa/result.pickle \\\n --arg_source_directory=/tmp/3bq2mxdl/stg7194b36e-38db-4ef7-af5d-368e9575f15f/source_directory.pickle\n\u001B[1;30mINFO\u001B[0m [job compile_paper_5] Max memory used: 265MiB\n\u001B[1;30mINFO\u001B[0m [job compile_paper_5] completed success\n\u001B[1;30mINFO\u001B[0m [step compile_paper_5] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] completed success\n{\n \"result_file\": {\n \"location\": \"file:///home/jovyan/example_workflows/nfdi/result.pickle\",\n \"basename\": \"result.pickle\",\n \"class\": \"File\",\n \"checksum\": \"sha1$a23617d3f4b4e6970b7f4fb9eb4d2148f9888e58\",\n \"size\": 53,\n \"path\": \"/home/jovyan/example_workflows/nfdi/result.pickle\"\n }\n}\u001B[1;30mINFO\u001B[0m Final process status is success\n" - } - ], - "execution_count": 9 + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "! cwltool --preserve-environment=CONDA_EXE workflow.cwl workflow.yml" + ] }, { - "id": "2942dbba-ea0a-4d20-be5c-ed9992d09ff8", "cell_type": "code", - "source": "with open(\"result.pickle\", \"rb\") as f:\n print(pickle.load(f))", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "/tmp/hjjeng16/postprocessing/paper.pdf\n" - } - ], - "execution_count": 10 + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"result.pickle\", \"rb\") as f:\n", + " print(pickle.load(f))" + ] }, { - "id": "60e909ee-d0d0-4bd1-81c8-dd5274ae5834", "cell_type": "code", - "source": "", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "12", + "metadata": {}, "outputs": [], - "execution_count": null + "source": [] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/example_workflows/nfdi/jobflow.ipynb b/example_workflows/nfdi/jobflow.ipynb index 2cd73f2..c62ba52 100644 --- a/example_workflows/nfdi/jobflow.ipynb +++ b/example_workflows/nfdi/jobflow.ipynb @@ -1,370 +1,365 @@ { - "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": "0", + "metadata": {}, + "source": [ + "# jobflow" + ] }, { - "id": "106ded66-d202-46ac-82b0-2755ca309bdd", "cell_type": "markdown", - "source": "https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements", - "metadata": {} + "id": "1", + "metadata": {}, + "source": [ + "https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements" + ] }, { - "id": "856b2ba2-93d5-4516-93e1-a1eac49c48f2", "cell_type": "markdown", - "source": "## Define workflow with jobflow", - "metadata": {} + "id": "2", + "metadata": {}, + "source": [ + "## Define workflow with jobflow" + ] }, { - "id": "43d5c810-a701-4971-8534-56dcbd112716", "cell_type": "code", - "source": "import os", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "3", + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "import os" + ] }, { - "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 - }, + "execution_count": null, + "id": "4", + "metadata": {}, "outputs": [], - "execution_count": 2 + "source": [ + "from jobflow import job, Flow\n", + "\n", + "from python_workflow_definition.jobflow import write_workflow_json" + ] }, { - "id": "864f048d78ea3f08", "cell_type": "code", - "source": "from 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 - }, + "execution_count": null, + "id": "5", + "metadata": {}, "outputs": [], - "execution_count": 3 + "source": [ + "from 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", + ")" + ] }, { - "id": "147b81b7b494ceda", "cell_type": "code", - "source": "generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf)\npoisson = job(_poisson)\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "6", + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "generate_mesh = job(_generate_mesh)\n", + "convert_to_xdmf = job(_convert_to_xdmf)\n", + "poisson = job(_poisson)\n", + "plot_over_line = job(_plot_over_line)\n", + "substitute_macros = job(_substitute_macros)\n", + "compile_paper = job(_compile_paper)" + ] }, { - "id": "981e548b-a3b4-49a3-9653-85e90f05c60e", "cell_type": "code", - "source": "source_directory = os.path.abspath(os.path.join(os.curdir, \"source\"))", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "7", + "metadata": {}, "outputs": [], - "execution_count": 5 + "source": [ + "source_directory = os.path.abspath(os.path.join(os.curdir, \"source\"))" + ] }, { - "id": "8d911f98-3b80-457f-a0f4-3cb37ebf1691", "cell_type": "code", - "source": "domain_size = 2.0", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "8", + "metadata": {}, "outputs": [], - "execution_count": 6 + "source": [ + "domain_size = 2.0" + ] }, { - "id": "71d411b6-cbec-489e-99e3-ba71680bcb5b", "cell_type": "code", - "source": "gmsh_output_file = generate_mesh(\n domain_size=domain_size,\n source_directory=source_directory,\n)", + "execution_count": null, + "id": "9", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 7 + "source": [ + "gmsh_output_file = generate_mesh(\n", + " domain_size=domain_size,\n", + " source_directory=source_directory,\n", + ")" + ] }, { - "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)", + "execution_count": null, + "id": "10", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 8 + "source": [ + "meshio_output_dict = convert_to_xdmf(\n", + " gmsh_output_file=gmsh_output_file.output,\n", + ")" + ] }, { - "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 source_directory=source_directory,\n)", + "execution_count": null, + "id": "11", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 9 + "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", + " source_directory=source_directory,\n", + ")" + ] }, { - "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 source_directory=source_directory,\n)", + "execution_count": null, + "id": "12", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 10 + "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", + " source_directory=source_directory,\n", + ")" + ] }, { - "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 source_directory=source_directory,\n)", + "execution_count": null, + "id": "13", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 11 + "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", + " source_directory=source_directory,\n", + ")" + ] }, { - "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 source_directory=source_directory,\n)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "14", + "metadata": {}, "outputs": [], - "execution_count": 12 + "source": [ + "paper_output = compile_paper(\n", + " macros_tex=macros_tex_file.output, \n", + " plot_file=pvbatch_output_file.output,\n", + " source_directory=source_directory,\n", + ")" + ] }, { - "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 - }, + "execution_count": null, + "id": "15", + "metadata": {}, "outputs": [], - "execution_count": 13 + "source": [ + "flow = Flow([gmsh_output_file, meshio_output_dict, poisson_dict, pvbatch_output_file, macros_tex_file, paper_output])" + ] }, { - "id": "fb23ad9c-76fd-4c0b-b546-e305d6c49796", "cell_type": "code", - "source": "workflow_json_filename = \"jobflow_nfdi.json\"", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "16", + "metadata": {}, "outputs": [], - "execution_count": 14 + "source": [ + "workflow_json_filename = \"jobflow_nfdi.json\"" + ] }, { - "id": "4139547a-9717-4708-b1a5-8202a0382d77", "cell_type": "code", - "source": "write_workflow_json(flow=flow, file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "17", + "metadata": {}, "outputs": [], - "execution_count": 15 + "source": [ + "write_workflow_json(flow=flow, file_name=workflow_json_filename)" + ] }, { - "id": "11a829e2-face-469f-b343-2c95763b1f13", "cell_type": "markdown", - "source": "## Load Workflow with aiida", - "metadata": {} + "id": "18", + "metadata": {}, + "source": [ + "## Load Workflow with aiida" + ] }, { - "id": "4f3acabe-55df-479a-af4d-a23a80c4660d", "cell_type": "code", - "source": "from aiida import load_profile\n\nload_profile()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "execution_count": 16, - "output_type": "execute_result", - "data": { - "text/plain": "Profile" - }, - "metadata": {} - } - ], - "execution_count": 16 + "execution_count": null, + "id": "19", + "metadata": {}, + "outputs": [], + "source": [ + "from aiida import load_profile\n", + "\n", + "load_profile()" + ] }, { - "id": "b6ba9444-a2c8-451b-b74c-19b0f69ba369", "cell_type": "code", - "source": "from python_workflow_definition.aiida import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "20", + "metadata": {}, "outputs": [], - "execution_count": 17 + "source": [ + "from python_workflow_definition.aiida import load_workflow_json" + ] }, { - "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": 18, - "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": "47a0a80d777f424aa98a551c4cbe7e1e" - } - }, - "metadata": {} - } - ], - "execution_count": 18 + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "wg = load_workflow_json(file_name=workflow_json_filename)\n", + "wg" + ] }, { - "id": "5ef48778-4209-425f-8c6b-85a4cd2f92ec", "cell_type": "code", - "source": "wg.run()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": "05/24/2025 05:44:19 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh1\n05/24/2025 05:44:21 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|update_task_state]: Task: generate_mesh1, type: PyFunction, finished.\n05/24/2025 05:44:21 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf2\n05/24/2025 05:44:22 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf2, type: PyFunction, finished.\n05/24/2025 05:44:22 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson3\n05/24/2025 05:44:25 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|update_task_state]: Task: poisson3, type: PyFunction, finished.\n05/24/2025 05:44:25 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line4\n05/24/2025 05:44:27 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|update_task_state]: Task: plot_over_line4, type: PyFunction, finished.\n05/24/2025 05:44:27 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros5\n05/24/2025 05:44:29 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|update_task_state]: Task: substitute_macros5, type: PyFunction, finished.\n05/24/2025 05:44:29 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper6\n05/24/2025 05:44:31 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|update_task_state]: Task: compile_paper6, type: PyFunction, finished.\n05/24/2025 05:44:31 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/24/2025 05:44:31 AM <3034> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51|WorkGraphEngine|finalize]: Finalize workgraph.\n" - } - ], - "execution_count": 19 + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "wg.run()" + ] }, { - "id": "397b16a2-e1ec-4eec-8562-1c84f585c347", "cell_type": "markdown", - "source": "## Load Workflow with pyiron_base", - "metadata": {} + "id": "23", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_base" + ] }, { - "id": "be4d5d93-e9f6-4072-a6be-0ee5dc93590f", "cell_type": "code", - "source": "from python_workflow_definition.pyiron_base import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "24", + "metadata": {}, "outputs": [], - "execution_count": 20 + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] }, { - "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_724cfd00ffeb70f8b463a938195e0447\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b9b80>\n\n\n\nmacros_tex_b52804e5fa845b3657fa99b738e02cf7\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b9910>\n\n\n\nmacros_tex_b52804e5fa845b3657fa99b738e02cf7->create_function_job_724cfd00ffeb70f8b463a938195e0447\n\n\n\n\n\npvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b95e0>\n\n\n\npvbatch_output_file_554a54a50a86b23416c0daf6ab0938df->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\npoisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b9280>\n\n\n\npoisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9->pvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nplot_file_554a54a50a86b23416c0daf6ab0938df\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b95e0>\n\n\n\npoisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9->plot_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nplot_file_554a54a50a86b23416c0daf6ab0938df->create_function_job_724cfd00ffeb70f8b463a938195e0447\n\n\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b8e90>\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1->poisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\n\n\n\n\npoisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b9250>\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1->poisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\n\n\n\n\nndofs_e826761b60042b070e0c0a24b472ee26\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b9670>\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1->ndofs_e826761b60042b070e0c0a24b472ee26\n\n\n\n\n\npoisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810->pvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\npoisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810->plot_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nndofs_e826761b60042b070e0c0a24b472ee26->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\ngmsh_output_file_553a0d07e32ca83a3640e955a7b868a4\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b8b90>\n\n\n\ngmsh_output_file_553a0d07e32ca83a3640e955a7b868a4->meshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x7da7483b8e60>\n\n\n\ngmsh_output_file_553a0d07e32ca83a3640e955a7b868a4->meshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe->poisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe->poisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe->ndofs_e826761b60042b070e0c0a24b472ee26\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_553a0d07e32ca83a3640e955a7b868a4\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696\n\nsource_directory=/home/jovyan/example_workflows/nfdi/source\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->create_function_job_724cfd00ffeb70f8b463a938195e0447\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->pvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->poisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->plot_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->poisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->ndofs_e826761b60042b070e0c0a24b472ee26\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->gmsh_output_file_553a0d07e32ca83a3640e955a7b868a4\n\n\n\n\n" - }, - "metadata": {} - } - ], - "execution_count": 21 + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\n", + "delayed_object_lst[-1].draw()" + ] }, { - "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_47725c16637f799ac042e47468005db3 was saved and received the ID: 1\nThe job convert_to_xdmf_d6a46eb9a4ec352aa996e783ec3c785f was saved and received the ID: 2\nThe job poisson_3c147fc86db87cf0c0f94bda333f8cd8 was saved and received the ID: 3\nThe job plot_over_line_ef50933291910dadcc8311924971e127 was saved and received the ID: 4\nThe job substitute_macros_63766eafd6b1980c7832dd8c9a97c96e was saved and received the ID: 5\nThe job compile_paper_128d1d58374953c00e95b8de62cbb10b was saved and received the ID: 6\n" - }, - { - "execution_count": 22, - "output_type": "execute_result", - "data": { - "text/plain": "'/home/jovyan/example_workflows/nfdi/postprocessing/paper.pdf'" - }, - "metadata": {} - } - ], - "execution_count": 22 + "execution_count": null, + "id": "26", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "## Load Workflow with pyiron_workflow", - "id": "8e73fa07cebd7b72" + "id": "27", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "from python_workflow_definition.pyiron_workflow import load_workflow_json", - "id": "aa99fbd94b03a869" + "id": "28", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf = load_workflow_json(file_name=workflow_json_filename)", - "id": "728b8684fee475b5" + "id": "29", + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=workflow_json_filename)" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.draw(size=(10,10))", - "id": "7b814f0f74f0b15a" + "id": "30", + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.run()", - "id": "447506cdca5080e6" + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/example_workflows/nfdi/pyiron_base.ipynb b/example_workflows/nfdi/pyiron_base.ipynb index f4feda6..5e237ba 100644 --- a/example_workflows/nfdi/pyiron_base.ipynb +++ b/example_workflows/nfdi/pyiron_base.ipynb @@ -1,355 +1,359 @@ { - "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": "0", + "metadata": {}, + "source": [ + "# pyiron\n", + "\n", + "https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements" + ] }, { - "id": "91dd48ea-aa7e-4937-a68e-59fc5017eb1e", "cell_type": "markdown", - "source": "## Define workflow with pyiron_base", - "metadata": {} + "id": "1", + "metadata": {}, + "source": [ + "## Define workflow with pyiron_base" + ] }, { - "id": "2c9622f5-ab7e-460e-b8e4-8d21413eda77", "cell_type": "code", - "source": "import os", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "2", + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "import os" + ] }, { - "id": "d265bb5aa6af79d6", "cell_type": "code", - "source": "from 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 - }, + "execution_count": null, + "id": "3", + "metadata": {}, "outputs": [], - "execution_count": 2 + "source": [ + "from 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", + ")" + ] }, { - "id": "2dced28725813fc1", "cell_type": "code", - "source": "from pyiron_base import job\n\nfrom python_workflow_definition.pyiron_base import write_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "4", + "metadata": {}, "outputs": [], - "execution_count": 3 + "source": [ + "from pyiron_base import job\n", + "\n", + "from python_workflow_definition.pyiron_base import write_workflow_json" + ] }, { - "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 - }, + "execution_count": null, + "id": "5", + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "generate_mesh = job(_generate_mesh)\n", + "convert_to_xdmf = job(_convert_to_xdmf, output_key_lst=[\"xdmf_file\", \"h5_file\"])\n", + "poisson = job(_poisson, output_key_lst=[\"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": "8d911f98-3b80-457f-a0f4-3cb37ebf1691", "cell_type": "code", - "source": "domain_size = 2.0", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "6", + "metadata": {}, "outputs": [], - "execution_count": 5 + "source": [ + "domain_size = 2.0" + ] }, { - "id": "c6ea980b-6761-4191-8407-7b1f78a4c3ea", "cell_type": "code", - "source": "source_directory = os.path.abspath(os.path.join(os.curdir, \"source\"))", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "7", + "metadata": {}, "outputs": [], - "execution_count": 6 + "source": [ + "source_directory = os.path.abspath(os.path.join(os.curdir, \"source\"))" + ] }, { - "id": "71d411b6-cbec-489e-99e3-ba71680bcb5b", "cell_type": "code", - "source": "gmsh_output_file = generate_mesh(\n domain_size=domain_size,\n source_directory=source_directory,\n)", + "execution_count": null, + "id": "8", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 7 + "source": [ + "gmsh_output_file = generate_mesh(\n", + " domain_size=domain_size,\n", + " source_directory=source_directory,\n", + ")" + ] }, { - "id": "1d0d9804-f250-48b3-a5d0-a546d520f79b", "cell_type": "code", - "source": "meshio_output_dict = convert_to_xdmf(\n gmsh_output_file=gmsh_output_file,\n)", + "execution_count": null, + "id": "9", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 8 + "source": [ + "meshio_output_dict = convert_to_xdmf(\n", + " gmsh_output_file=gmsh_output_file,\n", + ")" + ] }, { - "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 source_directory=source_directory,\n)", + "execution_count": null, + "id": "10", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 9 + "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", + " source_directory=source_directory,\n", + ")" + ] }, { - "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 source_directory=source_directory,\n)", + "execution_count": null, + "id": "11", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 10 + "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", + " source_directory=source_directory,\n", + ")" + ] }, { - "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 source_directory=source_directory,\n)", + "execution_count": null, + "id": "12", "metadata": { - "tags": [], - "trusted": true + "tags": [] }, "outputs": [], - "execution_count": 11 + "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", + " source_directory=source_directory,\n", + ")" + ] }, { - "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 source_directory=source_directory,\n)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "13", + "metadata": {}, "outputs": [], - "execution_count": 12 + "source": [ + "paper_output = compile_paper(\n", + " macros_tex=macros_tex_file, \n", + " plot_file=pvbatch_output_file,\n", + " source_directory=source_directory,\n", + ")" + ] }, { - "id": "63f29646-3846-4a97-a033-20e9df0ac214", "cell_type": "code", - "source": "workflow_json_filename = \"pyiron_base_nfdi.json\"", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "14", + "metadata": {}, "outputs": [], - "execution_count": 13 + "source": [ + "workflow_json_filename = \"pyiron_base_nfdi.json\"" + ] }, { - "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 - }, + "execution_count": null, + "id": "15", + "metadata": {}, "outputs": [], - "execution_count": 14 + "source": [ + "write_workflow_json(delayed_object=paper_output, file_name=workflow_json_filename)" + ] }, { - "id": "d789971e-8f41-45fa-832a-11fd72dea96e", "cell_type": "markdown", - "source": "## Load Workflow with aiida", - "metadata": {} + "id": "16", + "metadata": {}, + "source": [ + "## Load Workflow with aiida" + ] }, { - "id": "a6e85e89-5d7a-40eb-809c-ac44974e3fd7", "cell_type": "code", - "source": "from aiida import load_profile\n\nload_profile()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "execution_count": 15, - "output_type": "execute_result", - "data": { - "text/plain": "Profile" - }, - "metadata": {} - } - ], - "execution_count": 15 + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "from aiida import load_profile\n", + "\n", + "load_profile()" + ] }, { - "id": "3de84fb7-b01b-4541-868a-92e881eb6e77", "cell_type": "code", - "source": "from python_workflow_definition.aiida import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "18", + "metadata": {}, "outputs": [], - "execution_count": 16 + "source": [ + "from python_workflow_definition.aiida import load_workflow_json" + ] }, { - "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": 17, - "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": "ecd2de75aecb4dc7b8db86590fff92bb" - } - }, - "metadata": {} - } - ], - "execution_count": 17 + "execution_count": null, + "id": "19", + "metadata": {}, + "outputs": [], + "source": [ + "wg = load_workflow_json(file_name=workflow_json_filename)\n", + "wg" + ] }, { - "id": "15282ca1-d339-40e7-ad68-8a7613ed08da", "cell_type": "code", - "source": "wg.run()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": "05/24/2025 05:45:10 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh6\n05/24/2025 05:45:12 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|update_task_state]: Task: generate_mesh6, type: PyFunction, finished.\n05/24/2025 05:45:12 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf5\n05/24/2025 05:45:13 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf5, type: PyFunction, finished.\n05/24/2025 05:45:13 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson4\n05/24/2025 05:45:16 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|update_task_state]: Task: poisson4, type: PyFunction, finished.\n05/24/2025 05:45:16 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line3\n05/24/2025 05:45:18 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|update_task_state]: Task: plot_over_line3, type: PyFunction, finished.\n05/24/2025 05:45:18 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros2\n05/24/2025 05:45:20 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|update_task_state]: Task: substitute_macros2, type: PyFunction, finished.\n05/24/2025 05:45:20 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper1\n05/24/2025 05:45:22 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|update_task_state]: Task: compile_paper1, type: PyFunction, finished.\n05/24/2025 05:45:22 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/24/2025 05:45:22 AM <4326> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [81|WorkGraphEngine|finalize]: Finalize workgraph.\n" - } - ], - "execution_count": 18 + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "wg.run()" + ] }, { - "id": "55dc8d12-dfe6-4465-a368-b7e590ae6800", "cell_type": "markdown", - "source": "## Load Workflow with jobflow", - "metadata": {} + "id": "21", + "metadata": {}, + "source": [ + "## Load Workflow with jobflow" + ] }, { - "id": "dff46eb8-e0e7-49bb-8c40-0db2df133124", "cell_type": "code", - "source": "from python_workflow_definition.jobflow import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "22", + "metadata": {}, "outputs": [], - "execution_count": 19 + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] }, { - "id": "6a189459-84e4-4738-ada1-37ee8c65b2ab", "cell_type": "code", - "source": "from jobflow.managers.local import run_locally", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "23", + "metadata": {}, "outputs": [], - "execution_count": 20 + "source": [ + "from jobflow.managers.local import run_locally" + ] }, { - "id": "6e7f3614-c971-4e2d-83f0-96f0d0fc04de", "cell_type": "code", - "source": "flow = load_workflow_json(file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "24", + "metadata": {}, "outputs": [], - "execution_count": 21 + "source": [ + "flow = load_workflow_json(file_name=workflow_json_filename)" + ] }, { - "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-05-24 05:45:23,211 INFO Started executing jobs locally\n2025-05-24 05:45:23,487 INFO Starting job - generate_mesh (afd8b83e-2283-40e8-9a75-4553a7ca72d0)\n2025-05-24 05:45:24,604 INFO Finished job - generate_mesh (afd8b83e-2283-40e8-9a75-4553a7ca72d0)\n2025-05-24 05:45:24,605 INFO Starting job - convert_to_xdmf (6723daca-18b6-4f38-8b3e-a92c2a227dc3)\n2025-05-24 05:45:26,001 INFO Finished job - convert_to_xdmf (6723daca-18b6-4f38-8b3e-a92c2a227dc3)\n2025-05-24 05:45:26,002 INFO Starting job - poisson (db43f907-45eb-4596-ac6b-ab5978cc5e17)\n2025-05-24 05:45:28,507 INFO Finished job - poisson (db43f907-45eb-4596-ac6b-ab5978cc5e17)\n2025-05-24 05:45:28,509 INFO Starting job - plot_over_line (b6493a73-f134-4067-ba0d-d6e2cd246afe)\n2025-05-24 05:45:29,933 INFO Finished job - plot_over_line (b6493a73-f134-4067-ba0d-d6e2cd246afe)\n2025-05-24 05:45:29,934 INFO Starting job - substitute_macros (65c3db44-dcc1-44ca-a1bb-374e8f5c771e)\n2025-05-24 05:45:30,774 INFO Finished job - substitute_macros (65c3db44-dcc1-44ca-a1bb-374e8f5c771e)\n2025-05-24 05:45:30,775 INFO Starting job - compile_paper (84277487-0e26-444b-92dc-4516ae8a4eba)\n2025-05-24 05:45:32,790 INFO Finished job - compile_paper (84277487-0e26-444b-92dc-4516ae8a4eba)\n2025-05-24 05:45:32,791 INFO Finished executing jobs locally\n" - }, - { - "execution_count": 22, - "output_type": "execute_result", - "data": { - "text/plain": "{'afd8b83e-2283-40e8-9a75-4553a7ca72d0': {1: Response(output='/home/jovyan/example_workflows/nfdi/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '6723daca-18b6-4f38-8b3e-a92c2a227dc3': {1: Response(output={'xdmf_file': '/home/jovyan/example_workflows/nfdi/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/example_workflows/nfdi/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n 'db43f907-45eb-4596-ac6b-ab5978cc5e17': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/example_workflows/nfdi/processing/poisson.pvd', 'vtu_file': '/home/jovyan/example_workflows/nfdi/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n 'b6493a73-f134-4067-ba0d-d6e2cd246afe': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '65c3db44-dcc1-44ca-a1bb-374e8f5c771e': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '84277487-0e26-444b-92dc-4516ae8a4eba': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))}}" - }, - "metadata": {} - } - ], - "execution_count": 22 + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "## Load Workflow with pyiron_workflow", - "id": "385acbf585763632" + "id": "26", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "from python_workflow_definition.pyiron_workflow import load_workflow_json", - "id": "927d0118cc4edfba" + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf = load_workflow_json(file_name=workflow_json_filename)", - "id": "50055483ca2c9909" + "id": "28", + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=workflow_json_filename)" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.draw(size=(10,10))", - "id": "7d25a578c431e0f5" + "id": "29", + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.run()", - "id": "fff9513c4a127a96" + "id": "30", + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/example_workflows/nfdi/pyiron_workflow.ipynb b/example_workflows/nfdi/pyiron_workflow.ipynb index db1df09..14b780c 100644 --- a/example_workflows/nfdi/pyiron_workflow.ipynb +++ b/example_workflows/nfdi/pyiron_workflow.ipynb @@ -1 +1,378 @@ -{"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_workflow","metadata":{}},{"id":"2c9622f5-ab7e-460e-b8e4-8d21413eda77","cell_type":"code","source":"import os","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"d265bb5aa6af79d6","cell_type":"code","source":"from 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":"2dced28725813fc1","cell_type":"code","source":"from pyiron_workflow import Workflow, to_function_node\n\nfrom python_workflow_definition.pyiron_workflow import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"generate_mesh = to_function_node(\"generate_mesh\", _generate_mesh, \"generate_mesh\")\nconvert_to_xdmf = to_function_node(\"convert_to_xdmf\", _convert_to_xdmf, \"convert_to_xdmf\")\npoisson = to_function_node(\"poisson\", _poisson, \"poisson\")\nplot_over_line = to_function_node(\"plot_over_line\", _plot_over_line, \"plot_over_line\")\nsubstitute_macros = to_function_node(\"substitute_macros\", _substitute_macros, \"substitute_macros\")\ncompile_paper = to_function_node(\"compile_paper\", _compile_paper, \"compile_paper\")","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"3a75428e-18c7-49cf-8256-23cff58b9d6e","cell_type":"code","source":"wf = Workflow(\"my_workflow\")","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"8d911f98-3b80-457f-a0f4-3cb37ebf1691","cell_type":"code","source":"wf.domain_size = 2.0","metadata":{"trusted":true},"outputs":[],"execution_count":6},{"id":"c6ea980b-6761-4191-8407-7b1f78a4c3ea","cell_type":"code","source":"wf.source_directory = os.path.abspath(os.path.join(os.curdir, \"source\"))","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"id":"71d411b6-cbec-489e-99e3-ba71680bcb5b","cell_type":"code","source":"wf.gmsh_output_file = generate_mesh(\n domain_size=wf.domain_size,\n source_directory=wf.source_directory,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":8},{"id":"1d0d9804-f250-48b3-a5d0-a546d520f79b","cell_type":"code","source":"wf.meshio_output_dict = convert_to_xdmf(\n gmsh_output_file=wf.gmsh_output_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":9},{"id":"7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590","cell_type":"code","source":"wf.poisson_dict = poisson(\n meshio_output_xdmf=wf.meshio_output_dict[\"xdmf_file\"], \n meshio_output_h5=wf.meshio_output_dict[\"h5_file\"],\n source_directory=wf.source_directory,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":10},{"id":"3c4a29b0-eb1e-490a-8be0-e03cfff15e0a","cell_type":"code","source":"wf.pvbatch_output_file = plot_over_line(\n poisson_output_pvd_file=wf.poisson_dict[\"pvd_file\"], \n poisson_output_vtu_file=wf.poisson_dict[\"vtu_file\"],\n source_directory=wf.source_directory,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":11},{"id":"a0a4c233-322d-4723-9627-62ca2487bfa9","cell_type":"code","source":"wf.macros_tex_file = substitute_macros( \n pvbatch_output_file=wf.pvbatch_output_file, \n ndofs=wf.poisson_dict[\"numdofs\"], \n domain_size=wf.domain_size,\n source_directory=wf.source_directory,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":12},{"id":"c281408f-e63d-4380-a7e6-c595d49fbb8f","cell_type":"code","source":"wf.paper_output = compile_paper(\n macros_tex=wf.macros_tex_file, \n plot_file=wf.pvbatch_output_file,\n source_directory=wf.source_directory,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"id":"db4f1e15-3710-4e24-abc2-0fef417043e8","cell_type":"code","source":"wf.draw(size=(10,10))","metadata":{"trusted":true},"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"image/svg+xml":"\n\n\n\n\n\nclustermy_workflow\n\nmy_workflow: Workflow\n\nclustermy_workflowInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowgmsh_output_file\n\n\n\n\n\n\n\ngmsh_output_file: generate_mesh\n\n\nclustermy_workflowgmsh_output_fileInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowgmsh_output_fileOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowmeshio_output_dict\n\n\n\n\n\n\n\nmeshio_output_dict: convert_to_xdmf\n\n\nclustermy_workflowmeshio_output_dictInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowmeshio_output_dictOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366\n\n\n\n\n\n\n\ninjected_GetItem_m7197572853956972366: GetItem\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092\n\n\n\n\n\n\n\ninjected_GetItem_5401042856615209092: GetItem\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowpoisson_dict\n\n\n\n\n\n\n\npoisson_dict: poisson\n\n\nclustermy_workflowpoisson_dictInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowpoisson_dictOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609\n\n\n\n\n\n\n\ninjected_GetItem_5839915180513303609: GetItem\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100\n\n\n\n\n\n\n\ninjected_GetItem_m3497348724979863100: GetItem\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowpvbatch_output_file\n\n\n\n\n\n\n\npvbatch_output_file: plot_over_line\n\n\nclustermy_workflowpvbatch_output_fileInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowpvbatch_output_fileOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458\n\n\n\n\n\n\n\ninjected_GetItem_m6105838930489235458: GetItem\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowmacros_tex_file\n\n\n\n\n\n\n\nmacros_tex_file: substitute_macros\n\n\nclustermy_workflowmacros_tex_fileInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowmacros_tex_fileOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowpaper_output\n\n\n\n\n\n\n\npaper_output: compile_paper\n\n\nclustermy_workflowpaper_outputInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowpaper_outputOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\n\nclustermy_workflowInputsrun\n\nrun\n\n\n\nclustermy_workflowOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowInputsgmsh_output_file__domain_size\n\ngmsh_output_file__domain_size: float\n\n\n\nclustermy_workflowgmsh_output_fileInputsdomain_size\n\ndomain_size: float\n\n\n\nclustermy_workflowInputsgmsh_output_file__domain_size->clustermy_workflowgmsh_output_fileInputsdomain_size\n\n\n\n\n\n\nclustermy_workflowInputsgmsh_output_file__source_directory\n\ngmsh_output_file__source_directory: str\n\n\n\nclustermy_workflowgmsh_output_fileInputssource_directory\n\nsource_directory: str\n\n\n\nclustermy_workflowInputsgmsh_output_file__source_directory->clustermy_workflowgmsh_output_fileInputssource_directory\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m7197572853956972366__item\n\ninjected_GetItem_m7197572853956972366__item\n\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m7197572853956972366__item->clustermy_workflowinjected_GetItem_m7197572853956972366Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_5401042856615209092__item\n\ninjected_GetItem_5401042856615209092__item\n\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_5401042856615209092__item->clustermy_workflowinjected_GetItem_5401042856615209092Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputspoisson_dict__source_directory\n\npoisson_dict__source_directory: str\n\n\n\nclustermy_workflowpoisson_dictInputssource_directory\n\nsource_directory: str\n\n\n\nclustermy_workflowInputspoisson_dict__source_directory->clustermy_workflowpoisson_dictInputssource_directory\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_5839915180513303609__item\n\ninjected_GetItem_5839915180513303609__item\n\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_5839915180513303609__item->clustermy_workflowinjected_GetItem_5839915180513303609Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m3497348724979863100__item\n\ninjected_GetItem_m3497348724979863100__item\n\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m3497348724979863100__item->clustermy_workflowinjected_GetItem_m3497348724979863100Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputspvbatch_output_file__source_directory\n\npvbatch_output_file__source_directory: str\n\n\n\nclustermy_workflowpvbatch_output_fileInputssource_directory\n\nsource_directory: str\n\n\n\nclustermy_workflowInputspvbatch_output_file__source_directory->clustermy_workflowpvbatch_output_fileInputssource_directory\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m6105838930489235458__item\n\ninjected_GetItem_m6105838930489235458__item\n\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m6105838930489235458__item->clustermy_workflowinjected_GetItem_m6105838930489235458Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsmacros_tex_file__domain_size\n\nmacros_tex_file__domain_size: float\n\n\n\nclustermy_workflowmacros_tex_fileInputsdomain_size\n\ndomain_size: float\n\n\n\nclustermy_workflowInputsmacros_tex_file__domain_size->clustermy_workflowmacros_tex_fileInputsdomain_size\n\n\n\n\n\n\nclustermy_workflowInputsmacros_tex_file__source_directory\n\nmacros_tex_file__source_directory: str\n\n\n\nclustermy_workflowmacros_tex_fileInputssource_directory\n\nsource_directory: str\n\n\n\nclustermy_workflowInputsmacros_tex_file__source_directory->clustermy_workflowmacros_tex_fileInputssource_directory\n\n\n\n\n\n\nclustermy_workflowInputspaper_output__source_directory\n\npaper_output__source_directory: str\n\n\n\nclustermy_workflowpaper_outputInputssource_directory\n\nsource_directory: str\n\n\n\nclustermy_workflowInputspaper_output__source_directory->clustermy_workflowpaper_outputInputssource_directory\n\n\n\n\n\n\nclustermy_workflowOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowOutputsWithInjectionpaper_output__compile_paper\n\npaper_output__compile_paper: str\n\n\n\nclustermy_workflowgmsh_output_fileInputsrun\n\nrun\n\n\n\nclustermy_workflowgmsh_output_fileOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowgmsh_output_fileInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowgmsh_output_fileOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowgmsh_output_fileOutputsWithInjectiongenerate_mesh\n\ngenerate_mesh: str\n\n\n\nclustermy_workflowmeshio_output_dictInputsgmsh_output_file\n\ngmsh_output_file: str\n\n\n\nclustermy_workflowgmsh_output_fileOutputsWithInjectiongenerate_mesh->clustermy_workflowmeshio_output_dictInputsgmsh_output_file\n\n\n\n\n\n\nclustermy_workflowmeshio_output_dictInputsrun\n\nrun\n\n\n\nclustermy_workflowmeshio_output_dictOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowmeshio_output_dictInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowmeshio_output_dictOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowmeshio_output_dictOutputsWithInjectionconvert_to_xdmf\n\nconvert_to_xdmf: dict\n\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366Inputsobj\n\nobj\n\n\n\nclustermy_workflowmeshio_output_dictOutputsWithInjectionconvert_to_xdmf->clustermy_workflowinjected_GetItem_m7197572853956972366Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092Inputsobj\n\nobj\n\n\n\nclustermy_workflowmeshio_output_dictOutputsWithInjectionconvert_to_xdmf->clustermy_workflowinjected_GetItem_5401042856615209092Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowpoisson_dictInputsmeshio_output_xdmf\n\nmeshio_output_xdmf: str\n\n\n\nclustermy_workflowinjected_GetItem_m7197572853956972366OutputsWithInjectiongetitem->clustermy_workflowpoisson_dictInputsmeshio_output_xdmf\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowpoisson_dictInputsmeshio_output_h5\n\nmeshio_output_h5: str\n\n\n\nclustermy_workflowinjected_GetItem_5401042856615209092OutputsWithInjectiongetitem->clustermy_workflowpoisson_dictInputsmeshio_output_h5\n\n\n\n\n\n\nclustermy_workflowpoisson_dictInputsrun\n\nrun\n\n\n\nclustermy_workflowpoisson_dictOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowpoisson_dictInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowpoisson_dictOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowpoisson_dictOutputsWithInjectionpoisson\n\npoisson: dict\n\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609Inputsobj\n\nobj\n\n\n\nclustermy_workflowpoisson_dictOutputsWithInjectionpoisson->clustermy_workflowinjected_GetItem_5839915180513303609Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100Inputsobj\n\nobj\n\n\n\nclustermy_workflowpoisson_dictOutputsWithInjectionpoisson->clustermy_workflowinjected_GetItem_m3497348724979863100Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458Inputsobj\n\nobj\n\n\n\nclustermy_workflowpoisson_dictOutputsWithInjectionpoisson->clustermy_workflowinjected_GetItem_m6105838930489235458Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowpvbatch_output_fileInputspoisson_output_pvd_file\n\npoisson_output_pvd_file: str\n\n\n\nclustermy_workflowinjected_GetItem_5839915180513303609OutputsWithInjectiongetitem->clustermy_workflowpvbatch_output_fileInputspoisson_output_pvd_file\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowpvbatch_output_fileInputspoisson_output_vtu_file\n\npoisson_output_vtu_file: str\n\n\n\nclustermy_workflowinjected_GetItem_m3497348724979863100OutputsWithInjectiongetitem->clustermy_workflowpvbatch_output_fileInputspoisson_output_vtu_file\n\n\n\n\n\n\nclustermy_workflowpvbatch_output_fileInputsrun\n\nrun\n\n\n\nclustermy_workflowpvbatch_output_fileOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowpvbatch_output_fileInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowpvbatch_output_fileOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowpvbatch_output_fileOutputsWithInjectionplot_over_line\n\nplot_over_line: str\n\n\n\nclustermy_workflowmacros_tex_fileInputspvbatch_output_file\n\npvbatch_output_file: str\n\n\n\nclustermy_workflowpvbatch_output_fileOutputsWithInjectionplot_over_line->clustermy_workflowmacros_tex_fileInputspvbatch_output_file\n\n\n\n\n\n\nclustermy_workflowpaper_outputInputsplot_file\n\nplot_file: str\n\n\n\nclustermy_workflowpvbatch_output_fileOutputsWithInjectionplot_over_line->clustermy_workflowpaper_outputInputsplot_file\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowmacros_tex_fileInputsndofs\n\nndofs: int\n\n\n\nclustermy_workflowinjected_GetItem_m6105838930489235458OutputsWithInjectiongetitem->clustermy_workflowmacros_tex_fileInputsndofs\n\n\n\n\n\n\nclustermy_workflowmacros_tex_fileInputsrun\n\nrun\n\n\n\nclustermy_workflowmacros_tex_fileOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowmacros_tex_fileInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowmacros_tex_fileOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowmacros_tex_fileOutputsWithInjectionsubstitute_macros\n\nsubstitute_macros: str\n\n\n\nclustermy_workflowpaper_outputInputsmacros_tex\n\nmacros_tex: str\n\n\n\nclustermy_workflowmacros_tex_fileOutputsWithInjectionsubstitute_macros->clustermy_workflowpaper_outputInputsmacros_tex\n\n\n\n\n\n\nclustermy_workflowpaper_outputInputsrun\n\nrun\n\n\n\nclustermy_workflowpaper_outputOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowpaper_outputInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowpaper_outputOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowpaper_outputOutputsWithInjectioncompile_paper\n\ncompile_paper: str\n\n\n\nclustermy_workflowpaper_outputOutputsWithInjectioncompile_paper->clustermy_workflowOutputsWithInjectionpaper_output__compile_paper\n\n\n\n\n\n\n","text/plain":""},"metadata":{}}],"execution_count":14},{"id":"63f29646-3846-4a97-a033-20e9df0ac214","cell_type":"code","source":"workflow_json_filename = \"pyiron_workflow_nfdi.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"id":"f62111ba-9271-4987-9c7e-3b1c9f9eae7a","cell_type":"code","source":"write_workflow_json(graph_as_dict=wf.graph_as_dict, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":16},{"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":17,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":17},{"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":18},{"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":19,"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":"6641ced7603742b8b28900587d764b7c"}},"metadata":{}}],"execution_count":19},{"id":"15282ca1-d339-40e7-ad68-8a7613ed08da","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"05/24/2025 09:30:18 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh1\n05/24/2025 09:30:20 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: generate_mesh1, type: PyFunction, finished.\n05/24/2025 09:30:20 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf2\n05/24/2025 09:30:22 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf2, type: PyFunction, finished.\n05/24/2025 09:30:22 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson3\n05/24/2025 09:30:30 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: poisson3, type: PyFunction, finished.\n05/24/2025 09:30:30 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line4\n05/24/2025 09:30:33 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: plot_over_line4, type: PyFunction, finished.\n05/24/2025 09:30:33 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros5\n05/24/2025 09:30:34 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: substitute_macros5, type: PyFunction, finished.\n05/24/2025 09:30:34 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper6\n05/24/2025 09:30:50 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: compile_paper6, type: PyFunction, finished.\n05/24/2025 09:30:50 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/24/2025 09:30:50 AM <282> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":20},{"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":[],"execution_count":21},{"id":"6a189459-84e4-4738-ada1-37ee8c65b2ab","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":22},{"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":23},{"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-05-24 09:31:15,165 INFO Started executing jobs locally\n2025-05-24 09:31:15,364 INFO Starting job - generate_mesh (4cc4e3d9-39aa-4c20-a047-a029b6812d61)\n2025-05-24 09:31:16,480 INFO Finished job - generate_mesh (4cc4e3d9-39aa-4c20-a047-a029b6812d61)\n2025-05-24 09:31:16,481 INFO Starting job - convert_to_xdmf (8527c563-c0b1-4ae5-a6c3-00ae25ad2508)\n2025-05-24 09:31:17,834 INFO Finished job - convert_to_xdmf (8527c563-c0b1-4ae5-a6c3-00ae25ad2508)\n2025-05-24 09:31:17,836 INFO Starting job - poisson (58b31d24-51f9-4b9a-ac3e-88a7f01a09ad)\n2025-05-24 09:31:20,318 INFO Finished job - poisson (58b31d24-51f9-4b9a-ac3e-88a7f01a09ad)\n2025-05-24 09:31:20,318 INFO Starting job - plot_over_line (b095dc38-f858-4c34-876c-df8f8b851a5f)\n2025-05-24 09:31:21,717 INFO Finished job - plot_over_line (b095dc38-f858-4c34-876c-df8f8b851a5f)\n2025-05-24 09:31:21,718 INFO Starting job - substitute_macros (656e820d-20d5-4665-bb8a-43807ed6b2e9)\n2025-05-24 09:31:22,542 INFO Finished job - substitute_macros (656e820d-20d5-4665-bb8a-43807ed6b2e9)\n2025-05-24 09:31:22,543 INFO Starting job - compile_paper (52de4e6d-7574-401b-bcdb-ae6c298cc6b9)\n2025-05-24 09:31:24,556 INFO Finished job - compile_paper (52de4e6d-7574-401b-bcdb-ae6c298cc6b9)\n2025-05-24 09:31:24,557 INFO Finished executing jobs locally\n"},{"execution_count":24,"output_type":"execute_result","data":{"text/plain":"{'4cc4e3d9-39aa-4c20-a047-a029b6812d61': {1: Response(output='/home/jovyan/example_workflows/nfdi/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '8527c563-c0b1-4ae5-a6c3-00ae25ad2508': {1: Response(output={'xdmf_file': '/home/jovyan/example_workflows/nfdi/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/example_workflows/nfdi/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '58b31d24-51f9-4b9a-ac3e-88a7f01a09ad': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/example_workflows/nfdi/processing/poisson.pvd', 'vtu_file': '/home/jovyan/example_workflows/nfdi/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n 'b095dc38-f858-4c34-876c-df8f8b851a5f': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '656e820d-20d5-4665-bb8a-43807ed6b2e9': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '52de4e6d-7574-401b-bcdb-ae6c298cc6b9': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))}}"},"metadata":{}}],"execution_count":24},{"id":"ebd3248b-ff75-40bf-a488-b5e338342671","cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"id":"c7e1047f-0d42-4777-911d-ab405396401a","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":25},{"id":"6aeba274-10d3-4e79-8ee4-4d870f163939","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_ba0bf2668d8f7b42ff717c2cb79b5920\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x76dba30d9280>\n\n\n\nplot_file_5007b1d67345934b2ffcdeaaad6ea2ab\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x76dba30d8da0>\n\n\n\nplot_file_5007b1d67345934b2ffcdeaaad6ea2ab->create_function_job_ba0bf2668d8f7b42ff717c2cb79b5920\n\n\n\n\n\npoisson_output_vtu_file_51141ca0ec0a07922807865d8a067793\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x76dba30d8a40>\n\n\n\npoisson_output_vtu_file_51141ca0ec0a07922807865d8a067793->plot_file_5007b1d67345934b2ffcdeaaad6ea2ab\n\n\n\n\n\npvbatch_output_file_5007b1d67345934b2ffcdeaaad6ea2ab\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x76dba30d8da0>\n\n\n\npoisson_output_vtu_file_51141ca0ec0a07922807865d8a067793->pvbatch_output_file_5007b1d67345934b2ffcdeaaad6ea2ab\n\n\n\n\n\nmacros_tex_02d82cedf90ad323f7eef57ddf383160\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x76dba30d9070>\n\n\n\npvbatch_output_file_5007b1d67345934b2ffcdeaaad6ea2ab->macros_tex_02d82cedf90ad323f7eef57ddf383160\n\n\n\n\n\nmeshio_output_h5_0af06cb14e9ddc7585647c44e4d4ef88\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x76dba3cb2600>\n\n\n\nmeshio_output_h5_0af06cb14e9ddc7585647c44e4d4ef88->poisson_output_vtu_file_51141ca0ec0a07922807865d8a067793\n\n\n\n\n\npoisson_output_pvd_file_0440a581658dfd1533b4c5d08eaf8513\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x76dba30d8a10>\n\n\n\nmeshio_output_h5_0af06cb14e9ddc7585647c44e4d4ef88->poisson_output_pvd_file_0440a581658dfd1533b4c5d08eaf8513\n\n\n\n\n\nndofs_ac7427db28c0527371c0e9b27a57024b\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x76dba30d8e30>\n\n\n\nmeshio_output_h5_0af06cb14e9ddc7585647c44e4d4ef88->ndofs_ac7427db28c0527371c0e9b27a57024b\n\n\n\n\n\npoisson_output_pvd_file_0440a581658dfd1533b4c5d08eaf8513->plot_file_5007b1d67345934b2ffcdeaaad6ea2ab\n\n\n\n\n\npoisson_output_pvd_file_0440a581658dfd1533b4c5d08eaf8513->pvbatch_output_file_5007b1d67345934b2ffcdeaaad6ea2ab\n\n\n\n\n\nndofs_ac7427db28c0527371c0e9b27a57024b->macros_tex_02d82cedf90ad323f7eef57ddf383160\n\n\n\n\n\ngmsh_output_file_6ef41eb684984daa8337ee65c2aa9f18\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x76dba89319d0>\n\n\n\ngmsh_output_file_6ef41eb684984daa8337ee65c2aa9f18->meshio_output_h5_0af06cb14e9ddc7585647c44e4d4ef88\n\n\n\n\n\nmeshio_output_xdmf_c383e7d9f83d7cdc8ae04ebf9c264173\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x76dba30d8710>\n\n\n\ngmsh_output_file_6ef41eb684984daa8337ee65c2aa9f18->meshio_output_xdmf_c383e7d9f83d7cdc8ae04ebf9c264173\n\n\n\n\n\nmeshio_output_xdmf_c383e7d9f83d7cdc8ae04ebf9c264173->poisson_output_vtu_file_51141ca0ec0a07922807865d8a067793\n\n\n\n\n\nmeshio_output_xdmf_c383e7d9f83d7cdc8ae04ebf9c264173->poisson_output_pvd_file_0440a581658dfd1533b4c5d08eaf8513\n\n\n\n\n\nmeshio_output_xdmf_c383e7d9f83d7cdc8ae04ebf9c264173->ndofs_ac7427db28c0527371c0e9b27a57024b\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_6ef41eb684984daa8337ee65c2aa9f18\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_02d82cedf90ad323f7eef57ddf383160\n\n\n\n\n\nmacros_tex_02d82cedf90ad323f7eef57ddf383160->create_function_job_ba0bf2668d8f7b42ff717c2cb79b5920\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696\n\nsource_directory=/home/jovyan/example_workflows/nfdi/source\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->create_function_job_ba0bf2668d8f7b42ff717c2cb79b5920\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->plot_file_5007b1d67345934b2ffcdeaaad6ea2ab\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->poisson_output_vtu_file_51141ca0ec0a07922807865d8a067793\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->pvbatch_output_file_5007b1d67345934b2ffcdeaaad6ea2ab\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->poisson_output_pvd_file_0440a581658dfd1533b4c5d08eaf8513\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->ndofs_ac7427db28c0527371c0e9b27a57024b\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->gmsh_output_file_6ef41eb684984daa8337ee65c2aa9f18\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->macros_tex_02d82cedf90ad323f7eef57ddf383160\n\n\n\n\n"},"metadata":{}}],"execution_count":26},{"id":"ea92c7ad-afef-423c-b8fa-9d24c1267c73","cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job generate_mesh_47725c16637f799ac042e47468005db3 was saved and received the ID: 1\nThe job convert_to_xdmf_d6a46eb9a4ec352aa996e783ec3c785f was saved and received the ID: 2\nThe job poisson_3c147fc86db87cf0c0f94bda333f8cd8 was saved and received the ID: 3\nThe job plot_over_line_ef50933291910dadcc8311924971e127 was saved and received the ID: 4\nThe job substitute_macros_63766eafd6b1980c7832dd8c9a97c96e was saved and received the ID: 5\nThe job compile_paper_128d1d58374953c00e95b8de62cbb10b was saved and received the ID: 6\n"},{"execution_count":27,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/example_workflows/nfdi/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":27},{"id":"32287743-e59a-467c-92fe-8586f199e36e","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# pyiron\n", + "\n", + "https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Define workflow with pyiron_workflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3", + "metadata": {}, + "outputs": [], + "source": [ + "from 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", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "from pyiron_workflow import Workflow, to_function_node\n", + "\n", + "from python_workflow_definition.pyiron_workflow import write_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "generate_mesh = to_function_node(\"generate_mesh\", _generate_mesh, \"generate_mesh\")\n", + "convert_to_xdmf = to_function_node(\"convert_to_xdmf\", _convert_to_xdmf, \"convert_to_xdmf\")\n", + "poisson = to_function_node(\"poisson\", _poisson, \"poisson\")\n", + "plot_over_line = to_function_node(\"plot_over_line\", _plot_over_line, \"plot_over_line\")\n", + "substitute_macros = to_function_node(\"substitute_macros\", _substitute_macros, \"substitute_macros\")\n", + "compile_paper = to_function_node(\"compile_paper\", _compile_paper, \"compile_paper\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "wf = Workflow(\"my_workflow\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "wf.domain_size = 2.0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "wf.source_directory = os.path.abspath(os.path.join(os.curdir, \"source\"))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "wf.gmsh_output_file = generate_mesh(\n", + " domain_size=wf.domain_size,\n", + " source_directory=wf.source_directory,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "wf.meshio_output_dict = convert_to_xdmf(\n", + " gmsh_output_file=wf.gmsh_output_file,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "wf.poisson_dict = poisson(\n", + " meshio_output_xdmf=wf.meshio_output_dict[\"xdmf_file\"], \n", + " meshio_output_h5=wf.meshio_output_dict[\"h5_file\"],\n", + " source_directory=wf.source_directory,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "wf.pvbatch_output_file = plot_over_line(\n", + " poisson_output_pvd_file=wf.poisson_dict[\"pvd_file\"], \n", + " poisson_output_vtu_file=wf.poisson_dict[\"vtu_file\"],\n", + " source_directory=wf.source_directory,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "wf.macros_tex_file = substitute_macros( \n", + " pvbatch_output_file=wf.pvbatch_output_file, \n", + " ndofs=wf.poisson_dict[\"numdofs\"], \n", + " domain_size=wf.domain_size,\n", + " source_directory=wf.source_directory,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "wf.paper_output = compile_paper(\n", + " macros_tex=wf.macros_tex_file, \n", + " plot_file=wf.pvbatch_output_file,\n", + " source_directory=wf.source_directory,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "workflow_json_filename = \"pyiron_workflow_nfdi.json\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "write_workflow_json(graph_as_dict=wf.graph_as_dict, file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "markdown", + "id": "18", + "metadata": {}, + "source": [ + "## Load Workflow with aiida" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19", + "metadata": {}, + "outputs": [], + "source": [ + "from aiida import load_profile\n", + "\n", + "load_profile()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.aiida import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "wg = load_workflow_json(file_name=workflow_json_filename)\n", + "wg" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "wg.run()" + ] + }, + { + "cell_type": "markdown", + "id": "23", + "metadata": {}, + "source": [ + "## Load Workflow with jobflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "from jobflow.managers.local import run_locally" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "26", + "metadata": {}, + "outputs": [], + "source": [ + "flow = load_workflow_json(file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] + }, + { + "cell_type": "markdown", + "id": "28", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_base" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "30", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\n", + "delayed_object_lst[-1].draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/example_workflows/nfdi/universal_workflow.ipynb b/example_workflows/nfdi/universal_workflow.ipynb index 5c1d889..fa58f4b 100644 --- a/example_workflows/nfdi/universal_workflow.ipynb +++ b/example_workflows/nfdi/universal_workflow.ipynb @@ -1,357 +1,278 @@ { - "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": {} + "metadata": {}, + "source": [ + "# Load Simple Workflow" + ] }, { "cell_type": "markdown", - "source": "## Plot", - "metadata": {} + "metadata": {}, + "source": [ + "## Plot" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.plot import plot", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "from python_workflow_definition.plot import plot" + ] }, { "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\nworkflow.generate_mesh\n\n\n\n1\n\nworkflow.convert_to_xdmf\n\n\n\n0->1\n\n\ngmsh_output_file\n\n\n\n2\n\nworkflow.poisson\n\n\n\n1->2\n\n\n\n\n\n3\n\nworkflow.plot_over_line\n\n\n\n2->3\n\n\n\n\n\n4\n\nworkflow.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\nworkflow.compile_paper\n\n\n\n3->5\n\n\nplot_file\n\n\n\n4->5\n\n\nmacros_tex\n\n\n\n8\n\nresult\n\n\n\n5->8\n\n\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\n7\n\n/home/jovyan/example_workflows/nfdi/source\n\n\n\n7->0\n\n\nsource_directory\n\n\n\n7->2\n\n\nsource_directory\n\n\n\n7->3\n\n\nsource_directory\n\n\n\n7->4\n\n\nsource_directory\n\n\n\n7->5\n\n\nsource_directory\n\n\n" - }, - "metadata": {} - } - ], - "execution_count": 2 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot(file_name='workflow.json')" + ] }, { "cell_type": "markdown", - "source": "## Aiida ", - "metadata": {} + "metadata": {}, + "source": [ + "## Aiida " + ] }, { "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 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.aiida import load_workflow_json\n", + "\n", + "from aiida import load_profile\n", + "load_profile()" + ] }, { "cell_type": "code", - "source": "workgraph = load_workflow_json(file_name='workflow.json')", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "workgraph = load_workflow_json(file_name='workflow.json')" + ] }, { "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": "b9f711f3af4b4f9c9f6260d595667b1d" - } - }, - "metadata": {} - } - ], - "execution_count": 5 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Create inputs rather than tasks out of data nodes\n", + "workgraph" + ] }, { "cell_type": "code", - "source": "\nworkgraph.run()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": "05/24/2025 05:45:59 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh1\n05/24/2025 05:46:01 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: generate_mesh1, type: PyFunction, finished.\n05/24/2025 05:46:01 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf2\n05/24/2025 05:46:03 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf2, type: PyFunction, finished.\n05/24/2025 05:46:03 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson3\n05/24/2025 05:46:06 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: poisson3, type: PyFunction, finished.\n05/24/2025 05:46:06 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line4\n05/24/2025 05:46:08 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: plot_over_line4, type: PyFunction, finished.\n05/24/2025 05:46:08 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros5\n05/24/2025 05:46:09 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: substitute_macros5, type: PyFunction, finished.\n05/24/2025 05:46:09 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper6\n05/24/2025 05:46:12 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: compile_paper6, type: PyFunction, finished.\n05/24/2025 05:46:12 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/24/2025 05:46:12 AM <5606> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|finalize]: Finalize workgraph.\n" - } - ], - "execution_count": 6 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "workgraph.run()" + ] }, { "cell_type": "markdown", - "source": "## executorlib", - "metadata": {} + "metadata": {}, + "source": [ + "## executorlib" + ] }, { "cell_type": "code", - "source": "from executorlib import SingleNodeExecutor", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 7 + "source": [ + "from executorlib import SingleNodeExecutor" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.executorlib import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 8 + "source": [ + "from python_workflow_definition.executorlib import load_workflow_json" + ] }, { "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 - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 9 + "source": [ + "with SingleNodeExecutor(max_workers=1) as exe:\n", + " result = load_workflow_json(file_name=\"workflow.json\", exe=exe).result()" + ] }, { "cell_type": "code", - "source": "result", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "execution_count": 10, - "output_type": "execute_result", - "data": { - "text/plain": "'/home/jovyan/example_workflows/nfdi/postprocessing/paper.pdf'" - }, - "metadata": {} - } - ], - "execution_count": 10 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result" + ] }, { "cell_type": "markdown", - "source": "## Jobflow", - "metadata": {} + "metadata": {}, + "source": [ + "## Jobflow" + ] }, { "cell_type": "code", - "source": "from jobflow.managers.local import run_locally", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 11 + "source": [ + "from jobflow.managers.local import run_locally" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.jobflow import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 12 + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] }, { "cell_type": "code", - "source": "flow = load_workflow_json(file_name=\"workflow.json\")", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 13 + "source": [ + "flow = load_workflow_json(file_name=\"workflow.json\")" + ] }, { "cell_type": "code", - "source": "result = run_locally(flow)\nresult", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "2025-05-24 05:46:27,374 INFO Started executing jobs locally\n2025-05-24 05:46:27,453 INFO Starting job - generate_mesh (e65df967-702e-4def-9172-6be0b3b95604)\n2025-05-24 05:46:28,600 INFO Finished job - generate_mesh (e65df967-702e-4def-9172-6be0b3b95604)\n2025-05-24 05:46:28,601 INFO Starting job - convert_to_xdmf (173b17f6-c6d6-4002-81f3-fdc267be7837)\n2025-05-24 05:46:29,943 INFO Finished job - convert_to_xdmf (173b17f6-c6d6-4002-81f3-fdc267be7837)\n2025-05-24 05:46:29,944 INFO Starting job - poisson (91e67802-de2e-462d-a076-536c2e874b0b)\n2025-05-24 05:46:32,711 INFO Finished job - poisson (91e67802-de2e-462d-a076-536c2e874b0b)\n2025-05-24 05:46:32,712 INFO Starting job - plot_over_line (5094148b-2ae8-4f88-bbf3-73b68fe02fb1)\n2025-05-24 05:46:34,138 INFO Finished job - plot_over_line (5094148b-2ae8-4f88-bbf3-73b68fe02fb1)\n2025-05-24 05:46:34,139 INFO Starting job - substitute_macros (8badd91e-4495-491e-b978-0b1abac4c680)\n2025-05-24 05:46:34,939 INFO Finished job - substitute_macros (8badd91e-4495-491e-b978-0b1abac4c680)\n2025-05-24 05:46:34,940 INFO Starting job - compile_paper (ae640287-0fda-4682-8bd9-da3251f2cd30)\n2025-05-24 05:46:37,022 INFO Finished job - compile_paper (ae640287-0fda-4682-8bd9-da3251f2cd30)\n2025-05-24 05:46:37,024 INFO Finished executing jobs locally\n" - }, - { - "execution_count": 14, - "output_type": "execute_result", - "data": { - "text/plain": "{'e65df967-702e-4def-9172-6be0b3b95604': {1: Response(output='/home/jovyan/example_workflows/nfdi/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '173b17f6-c6d6-4002-81f3-fdc267be7837': {1: Response(output={'xdmf_file': '/home/jovyan/example_workflows/nfdi/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/example_workflows/nfdi/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '91e67802-de2e-462d-a076-536c2e874b0b': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/example_workflows/nfdi/processing/poisson.pvd', 'vtu_file': '/home/jovyan/example_workflows/nfdi/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '5094148b-2ae8-4f88-bbf3-73b68fe02fb1': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n '8badd91e-4495-491e-b978-0b1abac4c680': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))},\n 'ae640287-0fda-4682-8bd9-da3251f2cd30': {1: Response(output='/home/jovyan/example_workflows/nfdi/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/nfdi'))}}" - }, - "metadata": {} - } - ], - "execution_count": 14 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] }, { "cell_type": "markdown", - "source": "## pyiron", - "metadata": {} + "metadata": {}, + "source": [ + "## pyiron" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.pyiron_base import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 15 + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] }, { "cell_type": "code", - "source": "delayed_object_lst = load_workflow_json(file_name=\"workflow.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_724cfd00ffeb70f8b463a938195e0447\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7cace97128d0>\n\n\n\nmacros_tex_b52804e5fa845b3657fa99b738e02cf7\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x7cace9712660>\n\n\n\nmacros_tex_b52804e5fa845b3657fa99b738e02cf7->create_function_job_724cfd00ffeb70f8b463a938195e0447\n\n\n\n\n\npvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7cace9712330>\n\n\n\npvbatch_output_file_554a54a50a86b23416c0daf6ab0938df->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\npoisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x7cace9711fd0>\n\n\n\npoisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9->pvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nplot_file_554a54a50a86b23416c0daf6ab0938df\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x7cace9712330>\n\n\n\npoisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9->plot_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nplot_file_554a54a50a86b23416c0daf6ab0938df->create_function_job_724cfd00ffeb70f8b463a938195e0447\n\n\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x7cace9711d60>\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1->poisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\n\n\n\n\npoisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x7cace9711fa0>\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1->poisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\n\n\n\n\nndofs_e826761b60042b070e0c0a24b472ee26\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x7cace97123c0>\n\n\n\nmeshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1->ndofs_e826761b60042b070e0c0a24b472ee26\n\n\n\n\n\npoisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810->pvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\npoisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810->plot_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nndofs_e826761b60042b070e0c0a24b472ee26->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\ngmsh_output_file_553a0d07e32ca83a3640e955a7b868a4\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7cace97119a0>\n\n\n\ngmsh_output_file_553a0d07e32ca83a3640e955a7b868a4->meshio_output_xdmf_52103bbf2f92608bdb3c6bedb045e0e1\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x7cace9711d30>\n\n\n\ngmsh_output_file_553a0d07e32ca83a3640e955a7b868a4->meshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe->poisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe->poisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\n\n\n\n\nmeshio_output_h5_0e11ecf3d5834e399bb91f99309bf3fe->ndofs_e826761b60042b070e0c0a24b472ee26\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_553a0d07e32ca83a3640e955a7b868a4\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696\n\nsource_directory=/home/jovyan/example_workflows/nfdi/source\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->create_function_job_724cfd00ffeb70f8b463a938195e0447\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->macros_tex_b52804e5fa845b3657fa99b738e02cf7\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->pvbatch_output_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->poisson_output_pvd_file_50ce5e5ed091c2b7a77b69e1c1750ad9\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->plot_file_554a54a50a86b23416c0daf6ab0938df\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->poisson_output_vtu_file_fdcc35c5e09c1b2a481c5350749d9810\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->ndofs_e826761b60042b070e0c0a24b472ee26\n\n\n\n\n\nsource_directory_053958014e7cd4a4df22cfa51c9fc696->gmsh_output_file_553a0d07e32ca83a3640e955a7b868a4\n\n\n\n\n" - }, - "metadata": {} - } - ], - "execution_count": 16 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=\"workflow.json\")\n", + "delayed_object_lst[-1].draw()" + ] }, { "cell_type": "code", - "source": "delayed_object_lst[-1].pull()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "The job generate_mesh_47725c16637f799ac042e47468005db3 was saved and received the ID: 1\nThe job convert_to_xdmf_d6a46eb9a4ec352aa996e783ec3c785f was saved and received the ID: 2\nThe job poisson_3c147fc86db87cf0c0f94bda333f8cd8 was saved and received the ID: 3\nThe job plot_over_line_ef50933291910dadcc8311924971e127 was saved and received the ID: 4\nThe job substitute_macros_63766eafd6b1980c7832dd8c9a97c96e was saved and received the ID: 5\nThe job compile_paper_128d1d58374953c00e95b8de62cbb10b was saved and received the ID: 6\n" - }, - { - "execution_count": 17, - "output_type": "execute_result", - "data": { - "text/plain": "'/home/jovyan/example_workflows/nfdi/postprocessing/paper.pdf'" - }, - "metadata": {} - } - ], - "execution_count": 17 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "## Load Workflow with pyiron_workflow" + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "from python_workflow_definition.pyiron_workflow import load_workflow_json" + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf = load_workflow_json(file_name=\"workflow.json\")" + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=\"workflow.json\")" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.draw(size=(10,10))" + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.run()" + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "## Python" + "metadata": {}, + "source": [ + "## Python" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.purepython import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 18 + "source": [ + "from python_workflow_definition.purepython import load_workflow_json" + ] }, { "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/example_workflows/nfdi/postprocessing/paper.pdf'" - }, - "metadata": {} - } - ], - "execution_count": 19 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "load_workflow_json(file_name=\"workflow.json\")" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/example_workflows/quantum_espresso/aiida.ipynb b/example_workflows/quantum_espresso/aiida.ipynb index e53eced..702836c 100644 --- a/example_workflows/quantum_espresso/aiida.ipynb +++ b/example_workflows/quantum_espresso/aiida.ipynb @@ -1 +1,400 @@ -{"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 workflow import (\n generate_structures,\n get_bulk_structure,\n calculate_qe as _calculate_qe,\n plot_energy_volume_curve,\n)","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 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 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 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 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)","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"cell_type":"code","source":"get_energies_task = wg.add_task(get_list)","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 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 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 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":"8cde6dcdf8224a4a9c002550a0165c73"}},"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 \"version\": \"0.1.0\",\n \"nodes\": [\n {\n \"id\": 0,\n \"type\": \"function\",\n \"value\": \"workflow.get_bulk_structure\"\n },\n {\n \"id\": 1,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 2,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 3,\n \"type\": \"function\",\n \"value\": \"workflow.generate_structures\"\n },\n {\n \"id\": 4,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 5,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 6,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 7,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 8,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 9,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 10,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 11,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 12,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 13,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 14,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 15,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 16,\n \"type\": \"function\",\n \"value\": \"workflow.plot_energy_volume_curve\"\n },\n {\n \"id\": 17,\n \"type\": \"input\",\n \"name\": \"element\",\n \"value\": \"Al\"\n },\n {\n \"id\": 18,\n \"type\": \"input\",\n \"name\": \"a\",\n \"value\": 4.04\n },\n {\n \"id\": 19,\n \"type\": \"input\",\n \"name\": \"cubic\",\n \"value\": true\n },\n {\n \"id\": 20,\n \"type\": \"input\",\n \"name\": \"calculation_0\",\n \"value\": \"vc-relax\"\n },\n {\n \"id\": 21,\n \"type\": \"input\",\n \"name\": \"kpts\",\n \"value\": [\n 3,\n 3,\n 3\n ]\n },\n {\n \"id\": 22,\n \"type\": \"input\",\n \"name\": \"pseudopotentials\",\n \"value\": {\n \"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"\n }\n },\n {\n \"id\": 23,\n \"type\": \"input\",\n \"name\": \"smearing\",\n \"value\": 0.02\n },\n {\n \"id\": 24,\n \"type\": \"input\",\n \"name\": \"working_directory_0\",\n \"value\": \"mini\"\n },\n {\n \"id\": 25,\n \"type\": \"input\",\n \"name\": \"strain_lst\",\n \"value\": [\n 0.9,\n 0.95,\n 1.0,\n 1.05,\n 1.1\n ]\n },\n {\n \"id\": 26,\n \"type\": \"input\",\n \"name\": \"calculation_1\",\n \"value\": \"scf\"\n },\n {\n \"id\": 27,\n \"type\": \"input\",\n \"name\": \"working_directory_1\",\n \"value\": \"strain_0\"\n },\n {\n \"id\": 28,\n \"type\": \"input\",\n \"name\": \"working_directory_2\",\n \"value\": \"strain_1\"\n },\n {\n \"id\": 29,\n \"type\": \"input\",\n \"name\": \"working_directory_3\",\n \"value\": \"strain_2\"\n },\n {\n \"id\": 30,\n \"type\": \"input\",\n \"name\": \"working_directory_4\",\n \"value\": \"strain_3\"\n },\n {\n \"id\": 31,\n \"type\": \"input\",\n \"name\": \"working_directory_5\",\n \"value\": \"strain_4\"\n },\n {\n \"id\": 32,\n \"type\": \"output\",\n \"name\": \"result\"\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 \"target\": 32,\n \"targetPort\": null,\n \"source\": 16,\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":[],"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-05-26 04:52:50,581 INFO Started executing jobs locally\n2025-05-26 04:52:50,675 INFO Starting job - get_bulk_structure (3ac8790d-eb22-4532-be62-de8fbef1b1d6)\n2025-05-26 04:52:50,678 INFO Finished job - get_bulk_structure (3ac8790d-eb22-4532-be62-de8fbef1b1d6)\n2025-05-26 04:52:50,678 INFO Starting job - get_dict (c4961244-74bf-450f-8d51-1185a6fa636e)\n2025-05-26 04:52:50,679 INFO Finished job - get_dict (c4961244-74bf-450f-8d51-1185a6fa636e)\n2025-05-26 04:52:50,680 INFO Starting job - calculate_qe (1c454eb0-0ad4-4b71-9d98-9d767f2eeb26)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02130] 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-05-26 04:53:41,492 INFO Finished job - calculate_qe (1c454eb0-0ad4-4b71-9d98-9d767f2eeb26)\n2025-05-26 04:53:41,493 INFO Starting job - generate_structures (4b55ebda-5c1f-4778-96b0-04b01637fd55)\n2025-05-26 04:53:41,497 INFO Finished job - generate_structures (4b55ebda-5c1f-4778-96b0-04b01637fd55)\n2025-05-26 04:53:41,498 INFO Starting job - get_dict (b565cdc4-4ce6-4a26-80aa-df13d5c66c6a)\n2025-05-26 04:53:41,501 INFO Finished job - get_dict (b565cdc4-4ce6-4a26-80aa-df13d5c66c6a)\n2025-05-26 04:53:41,502 INFO Starting job - get_dict (b77d779a-5ef4-444f-be7e-386f16f7ec4a)\n2025-05-26 04:53:41,505 INFO Finished job - get_dict (b77d779a-5ef4-444f-be7e-386f16f7ec4a)\n2025-05-26 04:53:41,506 INFO Starting job - get_dict (bd7706a1-7c30-4c5c-9319-a082dc3950ad)\n2025-05-26 04:53:41,509 INFO Finished job - get_dict (bd7706a1-7c30-4c5c-9319-a082dc3950ad)\n2025-05-26 04:53:41,510 INFO Starting job - get_dict (05f7faac-40ed-495e-b0dc-26ba16f805c8)\n2025-05-26 04:53:41,513 INFO Finished job - get_dict (05f7faac-40ed-495e-b0dc-26ba16f805c8)\n2025-05-26 04:53:41,516 INFO Starting job - get_dict (378217fd-e39a-45a3-ba59-435de2062c71)\n2025-05-26 04:53:41,531 INFO Finished job - get_dict (378217fd-e39a-45a3-ba59-435de2062c71)\n2025-05-26 04:53:41,532 INFO Starting job - calculate_qe (45551771-435e-4dc6-913f-07091732e0a3)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02145] 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-05-26 04:53:51,562 INFO Finished job - calculate_qe (45551771-435e-4dc6-913f-07091732e0a3)\n2025-05-26 04:53:51,563 INFO Starting job - calculate_qe (548d3d66-855c-45f6-803d-894aaf90fd6b)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---218119f8:02155] 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-05-26 04:54:02,977 INFO Finished job - calculate_qe (548d3d66-855c-45f6-803d-894aaf90fd6b)\n2025-05-26 04:54:02,978 INFO Starting job - calculate_qe (d309162b-9af7-4270-bfd5-fc0c893ba9f0)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---218119f8:02165] 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-05-26 04:54:14,530 INFO Finished job - calculate_qe (d309162b-9af7-4270-bfd5-fc0c893ba9f0)\n2025-05-26 04:54:14,531 INFO Starting job - calculate_qe (67abe614-2777-4184-92e6-f5443def6503)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---218119f8:02175] 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-05-26 04:54:27,806 INFO Finished job - calculate_qe (67abe614-2777-4184-92e6-f5443def6503)\n2025-05-26 04:54:27,807 INFO Starting job - calculate_qe (35826c86-14ca-4341-90f0-894b9be0d16d)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---218119f8:02185] 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-05-26 04:54:41,828 INFO Finished job - calculate_qe (35826c86-14ca-4341-90f0-894b9be0d16d)\n2025-05-26 04:54:41,829 INFO Starting job - get_list (87cd2e29-15fc-4e35-845f-47211f6a1090)\n2025-05-26 04:54:41,835 INFO Finished job - get_list (87cd2e29-15fc-4e35-845f-47211f6a1090)\n2025-05-26 04:54:41,836 INFO Starting job - get_list (3b0846af-d37d-4199-897b-16f124a5516a)\n2025-05-26 04:54:41,839 INFO Finished job - get_list (3b0846af-d37d-4199-897b-16f124a5516a)\n2025-05-26 04:54:41,840 INFO Starting job - plot_energy_volume_curve (88a18290-ffeb-40b6-b0e8-fca1ee6fade4)\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-05-26 04:54:41,900 INFO Finished job - plot_energy_volume_curve (88a18290-ffeb-40b6-b0e8-fca1ee6fade4)\n2025-05-26 04:54:41,901 INFO Finished executing jobs locally\n"},{"execution_count":21,"output_type":"execute_result","data":{"text/plain":"{'3ac8790d-eb22-4532-be62-de8fbef1b1d6': {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/example_workflows/quantum_espresso'))},\n 'c4961244-74bf-450f-8d51-1185a6fa636e': {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/example_workflows/quantum_espresso'))},\n '1c454eb0-0ad4-4b71-9d98-9d767f2eeb26': {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/example_workflows/quantum_espresso'))},\n '4b55ebda-5c1f-4778-96b0-04b01637fd55': {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/example_workflows/quantum_espresso'))},\n 'b565cdc4-4ce6-4a26-80aa-df13d5c66c6a': {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\": []}', '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/example_workflows/quantum_espresso'))},\n 'b77d779a-5ef4-444f-be7e-386f16f7ec4a': {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\": []}', '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/example_workflows/quantum_espresso'))},\n 'bd7706a1-7c30-4c5c-9319-a082dc3950ad': {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\": []}', '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/example_workflows/quantum_espresso'))},\n '05f7faac-40ed-495e-b0dc-26ba16f805c8': {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\": []}', '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/example_workflows/quantum_espresso'))},\n '378217fd-e39a-45a3-ba59-435de2062c71': {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\": []}', '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/example_workflows/quantum_espresso'))},\n '45551771-435e-4dc6-913f-07091732e0a3': {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.8457446150642, 'volume': 59.59410625267737}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '548d3d66-855c-45f6-803d-894aaf90fd6b': {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.916148859459, 'volume': 62.90488993338167}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'd309162b-9af7-4270-bfd5-fc0c893ba9f0': {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.9365241668359, 'volume': 66.21567361408594}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '67abe614-2777-4184-92e6-f5443def6503': {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.9192860025844, 'volume': 69.52645729479006}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '35826c86-14ca-4341-90f0-894b9be0d16d': {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.8737904693412, 'volume': 72.83724097549467}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '87cd2e29-15fc-4e35-845f-47211f6a1090': {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/example_workflows/quantum_espresso'))},\n '3b0846af-d37d-4199-897b-16f124a5516a': {1: Response(output=[-1074.8457446150642, -1074.916148859459, -1074.9365241668359, -1074.9192860025844, -1074.8737904693412], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '88a18290-ffeb-40b6-b0e8-fca1ee6fade4': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))}}"},"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_2dd37919a07881ec35b48b79261ff390\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x76e38867a510>\n\n\n\nvolume_lst_3a9d8118eb14b1a474fbd6ebdc78755d\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x76e388678470>\n\n\n\nvolume_lst_3a9d8118eb14b1a474fbd6ebdc78755d->create_function_job_2dd37919a07881ec35b48b79261ff390\n\n\n\n\n\n0_a9794c804499521a0ab9ea2cff0500a5\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x76e388679790>\n\n\n\n0_a9794c804499521a0ab9ea2cff0500a5->volume_lst_3a9d8118eb14b1a474fbd6ebdc78755d\n\n\n\n\n\ninput_dict_199d8ddb39100dfde98b937df71f9e62\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x76e388679640>\n\n\n\ninput_dict_199d8ddb39100dfde98b937df71f9e62->0_a9794c804499521a0ab9ea2cff0500a5\n\n\n\n\n\n0_114ef2e3771735da6b268f82effc2ec4\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x76e38867a300>\n\n\n\ninput_dict_199d8ddb39100dfde98b937df71f9e62->0_114ef2e3771735da6b268f82effc2ec4\n\n\n\n\n\nenergy_lst_63ae189fad790382f5cf0940678c54d6\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x76e388679700>\n\n\n\n0_114ef2e3771735da6b268f82effc2ec4->energy_lst_63ae189fad790382f5cf0940678c54d6\n\n\n\n\n\nstructure_d0527c0703fcb9fb054aa650b4594053\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x76e388679370>\n\n\n\nstructure_d0527c0703fcb9fb054aa650b4594053->input_dict_199d8ddb39100dfde98b937df71f9e62\n\n\n\n\n\nstructure_0be62b07a99e8ffab057f3214c0826d1\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x76e388678650>\n\n\n\nstructure_0be62b07a99e8ffab057f3214c0826d1->structure_d0527c0703fcb9fb054aa650b4594053\n\n\n\n\n\nstructure_fe302a8bff25da05cd1653eb33e11409\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x76e388679040>\n\n\n\nstructure_0be62b07a99e8ffab057f3214c0826d1->structure_fe302a8bff25da05cd1653eb33e11409\n\n\n\n\n\nstructure_467af4337e84ea49bfbf05893ab4d2b6\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x76e388678cb0>\n\n\n\nstructure_0be62b07a99e8ffab057f3214c0826d1->structure_467af4337e84ea49bfbf05893ab4d2b6\n\n\n\n\n\nstructure_bac337a65cedef9d7d93433033561948\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x76e395200aa0>\n\n\n\nstructure_0be62b07a99e8ffab057f3214c0826d1->structure_bac337a65cedef9d7d93433033561948\n\n\n\n\n\nstructure_297df784365c490600edb61686e8375e\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x76e388678980>\n\n\n\nstructure_0be62b07a99e8ffab057f3214c0826d1->structure_297df784365c490600edb61686e8375e\n\n\n\n\n\ninput_dict_61544c190a92e7e3c48a8e27d7493f93\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x76e3886792e0>\n\n\n\nstructure_fe302a8bff25da05cd1653eb33e11409->input_dict_61544c190a92e7e3c48a8e27d7493f93\n\n\n\n\n\ninput_dict_c8599abc416e76a13e7fdd654083464d\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x76e388678fb0>\n\n\n\nstructure_467af4337e84ea49bfbf05893ab4d2b6->input_dict_c8599abc416e76a13e7fdd654083464d\n\n\n\n\n\ninput_dict_39ff3b093c7af4b691297d26a0944f04\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x76e388678140>\n\n\n\nstructure_bac337a65cedef9d7d93433033561948->input_dict_39ff3b093c7af4b691297d26a0944f04\n\n\n\n\n\ninput_dict_9db8363b46b99584f513f7a9614dd22d\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x76e38b8bf4a0>\n\n\n\nstructure_297df784365c490600edb61686e8375e->input_dict_9db8363b46b99584f513f7a9614dd22d\n\n\n\n\n\ninput_dict_4bf0a304f408347d8c495fe72b1f5351\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x76e388657ce0>\n\n\n\ninput_dict_4bf0a304f408347d8c495fe72b1f5351->structure_0be62b07a99e8ffab057f3214c0826d1\n\n\n\n\n\nstructure_85578fbee37b882dfe6c61e46c6e3e6f\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x76e388657e00>\n\n\n\nstructure_85578fbee37b882dfe6c61e46c6e3e6f->input_dict_4bf0a304f408347d8c495fe72b1f5351\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_85578fbee37b882dfe6c61e46c6e3e6f\n\n\n\n\n\na_457b6d376c6fce696df148a385afa46d\n\na=4.04\n\n\n\na_457b6d376c6fce696df148a385afa46d->structure_85578fbee37b882dfe6c61e46c6e3e6f\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_85578fbee37b882dfe6c61e46c6e3e6f\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_4bf0a304f408347d8c495fe72b1f5351\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_199d8ddb39100dfde98b937df71f9e62\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_4bf0a304f408347d8c495fe72b1f5351\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_61544c190a92e7e3c48a8e27d7493f93\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_c8599abc416e76a13e7fdd654083464d\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_39ff3b093c7af4b691297d26a0944f04\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_9db8363b46b99584f513f7a9614dd22d\n\n\n\n\n\n1_bd319eedb0f799b5a7b32d898fc37aac\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x76e388679730>\n\n\n\ninput_dict_61544c190a92e7e3c48a8e27d7493f93->1_bd319eedb0f799b5a7b32d898fc37aac\n\n\n\n\n\n1_1c531d3dedfcb8ccd1735fb8647a93a1\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x76e38867a2d0>\n\n\n\ninput_dict_61544c190a92e7e3c48a8e27d7493f93->1_1c531d3dedfcb8ccd1735fb8647a93a1\n\n\n\n\n\n2_10b8d86df31efb98fd394e77e3844197\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x76e388679c10>\n\n\n\ninput_dict_c8599abc416e76a13e7fdd654083464d->2_10b8d86df31efb98fd394e77e3844197\n\n\n\n\n\n2_9e637dbd1c8b2498c7b16c988ec96697\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x76e38867a1e0>\n\n\n\ninput_dict_c8599abc416e76a13e7fdd654083464d->2_9e637dbd1c8b2498c7b16c988ec96697\n\n\n\n\n\n3_3377c152644227fb254585b855a83939\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x76e388679070>\n\n\n\ninput_dict_39ff3b093c7af4b691297d26a0944f04->3_3377c152644227fb254585b855a83939\n\n\n\n\n\n3_90324db5f7de99a93f4026efbf85ef5d\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x76e388679cd0>\n\n\n\ninput_dict_39ff3b093c7af4b691297d26a0944f04->3_90324db5f7de99a93f4026efbf85ef5d\n\n\n\n\n\n4_81ac7aa8786b3edc4893de089ff4984c\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x76e3886790d0>\n\n\n\ninput_dict_9db8363b46b99584f513f7a9614dd22d->4_81ac7aa8786b3edc4893de089ff4984c\n\n\n\n\n\n4_e9f006b1cf9b1af3b5b6dd98fa6fbb6a\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x76e38867a180>\n\n\n\ninput_dict_9db8363b46b99584f513f7a9614dd22d->4_e9f006b1cf9b1af3b5b6dd98fa6fbb6a\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_199d8ddb39100dfde98b937df71f9e62\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_4bf0a304f408347d8c495fe72b1f5351\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_61544c190a92e7e3c48a8e27d7493f93\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_c8599abc416e76a13e7fdd654083464d\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_39ff3b093c7af4b691297d26a0944f04\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_9db8363b46b99584f513f7a9614dd22d\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_199d8ddb39100dfde98b937df71f9e62\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_4bf0a304f408347d8c495fe72b1f5351\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_61544c190a92e7e3c48a8e27d7493f93\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_c8599abc416e76a13e7fdd654083464d\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_39ff3b093c7af4b691297d26a0944f04\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_9db8363b46b99584f513f7a9614dd22d\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_0be62b07a99e8ffab057f3214c0826d1\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_d0527c0703fcb9fb054aa650b4594053\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_fe302a8bff25da05cd1653eb33e11409\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_467af4337e84ea49bfbf05893ab4d2b6\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_bac337a65cedef9d7d93433033561948\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_297df784365c490600edb61686e8375e\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_199d8ddb39100dfde98b937df71f9e62\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_61544c190a92e7e3c48a8e27d7493f93\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_c8599abc416e76a13e7fdd654083464d\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_39ff3b093c7af4b691297d26a0944f04\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_9db8363b46b99584f513f7a9614dd22d\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_a9794c804499521a0ab9ea2cff0500a5\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_114ef2e3771735da6b268f82effc2ec4\n\n\n\n\n\n1_bd319eedb0f799b5a7b32d898fc37aac->volume_lst_3a9d8118eb14b1a474fbd6ebdc78755d\n\n\n\n\n\n1_1c531d3dedfcb8ccd1735fb8647a93a1->energy_lst_63ae189fad790382f5cf0940678c54d6\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_bd319eedb0f799b5a7b32d898fc37aac\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_1c531d3dedfcb8ccd1735fb8647a93a1\n\n\n\n\n\n2_10b8d86df31efb98fd394e77e3844197->volume_lst_3a9d8118eb14b1a474fbd6ebdc78755d\n\n\n\n\n\n2_9e637dbd1c8b2498c7b16c988ec96697->energy_lst_63ae189fad790382f5cf0940678c54d6\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_10b8d86df31efb98fd394e77e3844197\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_9e637dbd1c8b2498c7b16c988ec96697\n\n\n\n\n\n3_3377c152644227fb254585b855a83939->volume_lst_3a9d8118eb14b1a474fbd6ebdc78755d\n\n\n\n\n\n3_90324db5f7de99a93f4026efbf85ef5d->energy_lst_63ae189fad790382f5cf0940678c54d6\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_3377c152644227fb254585b855a83939\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_90324db5f7de99a93f4026efbf85ef5d\n\n\n\n\n\n4_81ac7aa8786b3edc4893de089ff4984c->volume_lst_3a9d8118eb14b1a474fbd6ebdc78755d\n\n\n\n\n\n4_e9f006b1cf9b1af3b5b6dd98fa6fbb6a->energy_lst_63ae189fad790382f5cf0940678c54d6\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_81ac7aa8786b3edc4893de089ff4984c\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_e9f006b1cf9b1af3b5b6dd98fa6fbb6a\n\n\n\n\n\nenergy_lst_63ae189fad790382f5cf0940678c54d6->create_function_job_2dd37919a07881ec35b48b79261ff390\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_2ca4aeae204ceaa28593c93054b07908 was saved and received the ID: 1\nThe job get_dict_20400c1655d51731f9f5ffb50c2b401f was saved and received the ID: 2\nThe job calculate_qe_b261e97e2e1714bf57ce6e5016ae4632 was saved and received the ID: 3\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02215] 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_4ebba2fa25817e4d72c841e3b2e8b6f0 was saved and received the ID: 4\nThe job get_dict_869b937d7880c2f0aa7d1ff12e5658fe was saved and received the ID: 5\nThe job calculate_qe_1e1d1a32203e271ae2255924d3e9b14f was saved and received the ID: 6\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02247] 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_afe14b210783e4e61e6d468d63799bad was saved and received the ID: 7\nThe job calculate_qe_0c07010ebc24b938a57832c41fcd74af was saved and received the ID: 8\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02261] 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_c42b900d2b5d0c900d1158c58ab1a259 was saved and received the ID: 9\nThe job calculate_qe_808bdd6630f3c0da564a58075a232427 was saved and received the ID: 10\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02271] 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_db89bfa1573064c1e658fee65739f0d7 was saved and received the ID: 11\nThe job calculate_qe_91a59b931c007125c72d9a407632de03 was saved and received the ID: 12\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02281] 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_8e6eb778e855d484b1763a645b753abf was saved and received the ID: 13\nThe job calculate_qe_80b6905597629098e2dca3067098d3e9 was saved and received the ID: 14\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02295] 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_befc04228af2690aa933355368b2374b was saved and received the ID: 15\nThe job get_list_de1f227902310f2b34d080eff15204c9 was saved and received the ID: 16\nThe job plot_energy_volume_curve_a817e1974411e9ad4e1c06ce96b8a65d 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":25},{"cell_type":"markdown","source":"## Load Workflow with pyiron_workflow","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.pyiron_workflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":26},{"cell_type":"code","source":"wf = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":27},{"cell_type":"code","source":"wf.get_bulk_structure.inputs.a.value = 4.05","metadata":{"trusted":true},"outputs":[],"execution_count":28},{"cell_type":"code","source":"wf.draw(size=(10,10))","metadata":{"trusted":true},"outputs":[{"execution_count":29,"output_type":"execute_result","data":{"image/svg+xml":"\n\n\n\n\n\nclusteraiida_qe\n\naiida_qe: Workflow\n\nclusteraiida_qeInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeget_bulk_structure\n\n\n\n\n\n\n\nget_bulk_structure: get_bulk_structure\n\n\nclusteraiida_qeget_bulk_structureInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeget_bulk_structureOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeget_dict_0\n\n\n\n\n\n\n\nget_dict_0: get_dict\n\n\nclusteraiida_qeget_dict_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeget_dict_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qecalculate_qe_0\n\n\n\n\n\n\n\ncalculate_qe_0: calculate_qe\n\n\nclusteraiida_qecalculate_qe_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qecalculate_qe_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qegenerate_structures\n\n\n\n\n\n\n\ngenerate_structures: generate_structures\n\n\nclusteraiida_qegenerate_structuresInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qegenerate_structuresOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeget_list_0\n\n\n\n\n\n\n\nget_list_0: get_list\n\n\nclusteraiida_qeget_list_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeget_list_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeget_list_1\n\n\n\n\n\n\n\nget_list_1: get_list\n\n\nclusteraiida_qeget_list_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeget_list_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeget_dict_1\n\n\n\n\n\n\n\nget_dict_1: get_dict\n\n\nclusteraiida_qeget_dict_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeget_dict_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qecalculate_qe_1\n\n\n\n\n\n\n\ncalculate_qe_1: calculate_qe\n\n\nclusteraiida_qecalculate_qe_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qecalculate_qe_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeget_dict_2\n\n\n\n\n\n\n\nget_dict_2: get_dict\n\n\nclusteraiida_qeget_dict_2Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeget_dict_2OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qecalculate_qe_2\n\n\n\n\n\n\n\ncalculate_qe_2: calculate_qe\n\n\nclusteraiida_qecalculate_qe_2Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qecalculate_qe_2OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeget_dict_3\n\n\n\n\n\n\n\nget_dict_3: get_dict\n\n\nclusteraiida_qeget_dict_3Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeget_dict_3OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qecalculate_qe_3\n\n\n\n\n\n\n\ncalculate_qe_3: calculate_qe\n\n\nclusteraiida_qecalculate_qe_3Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qecalculate_qe_3OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeget_dict_4\n\n\n\n\n\n\n\nget_dict_4: get_dict\n\n\nclusteraiida_qeget_dict_4Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeget_dict_4OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qecalculate_qe_4\n\n\n\n\n\n\n\ncalculate_qe_4: calculate_qe\n\n\nclusteraiida_qecalculate_qe_4Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qecalculate_qe_4OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeget_dict_5\n\n\n\n\n\n\n\nget_dict_5: get_dict\n\n\nclusteraiida_qeget_dict_5Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeget_dict_5OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qecalculate_qe_5\n\n\n\n\n\n\n\ncalculate_qe_5: calculate_qe\n\n\nclusteraiida_qecalculate_qe_5Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qecalculate_qe_5OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeplot_energy_volume_curve\n\n\n\n\n\n\n\nplot_energy_volume_curve: plot_energy_volume_curve\n\n\nclusteraiida_qeplot_energy_volume_curveInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeplot_energy_volume_curveOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150\n\n\n\n\n\n\n\ninjected_GetItem_2859163708959743150: GetItem\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309\n\n\n\n\n\n\n\ninjected_GetItem_2095185757530090309: GetItem\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644\n\n\n\n\n\n\n\ninjected_GetItem_m6396244699285524644: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098\n\n\n\n\n\n\n\ninjected_GetItem_m3217087382920924098: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699\n\n\n\n\n\n\n\ninjected_GetItem_m1410919064082391699: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383\n\n\n\n\n\n\n\ninjected_GetItem_m9115075428129331383: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643\n\n\n\n\n\n\n\ninjected_GetItem_m7237000809964411643: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550\n\n\n\n\n\n\n\ninjected_GetItem_m5860620980043280550: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223\n\n\n\n\n\n\n\ninjected_GetItem_m6458391072898921223: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370\n\n\n\n\n\n\n\ninjected_GetItem_1684197267152821370: GetItem\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670\n\n\n\n\n\n\n\ninjected_GetItem_3919628805879474670: GetItem\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946\n\n\n\n\n\n\n\ninjected_GetItem_m740119179149754946: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754\n\n\n\n\n\n\n\ninjected_GetItem_2084798752545049754: GetItem\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068\n\n\n\n\n\n\n\ninjected_GetItem_2761976441505203068: GetItem\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855\n\n\n\n\n\n\n\ninjected_GetItem_m4556998621263697855: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862\n\n\n\n\n\n\n\ninjected_GetItem_m9206283876700615862: GetItem\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\n\nclusteraiida_qeInputsrun\n\nrun\n\n\n\nclusteraiida_qeOutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeInputsget_bulk_structure__element\n\nget_bulk_structure__element\n\n\n\nclusteraiida_qeget_bulk_structureInputselement\n\nelement\n\n\n\nclusteraiida_qeInputsget_bulk_structure__element->clusteraiida_qeget_bulk_structureInputselement\n\n\n\n\n\n\nclusteraiida_qeInputsget_bulk_structure__a\n\nget_bulk_structure__a\n\n\n\nclusteraiida_qeget_bulk_structureInputsa\n\na\n\n\n\nclusteraiida_qeInputsget_bulk_structure__a->clusteraiida_qeget_bulk_structureInputsa\n\n\n\n\n\n\nclusteraiida_qeInputsget_bulk_structure__cubic\n\nget_bulk_structure__cubic\n\n\n\nclusteraiida_qeget_bulk_structureInputscubic\n\ncubic\n\n\n\nclusteraiida_qeInputsget_bulk_structure__cubic->clusteraiida_qeget_bulk_structureInputscubic\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_0__calculation\n\nget_dict_0__calculation\n\n\n\nclusteraiida_qeget_dict_0Inputscalculation\n\ncalculation\n\n\n\nclusteraiida_qeInputsget_dict_0__calculation->clusteraiida_qeget_dict_0Inputscalculation\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_0__kpts\n\nget_dict_0__kpts\n\n\n\nclusteraiida_qeget_dict_0Inputskpts\n\nkpts\n\n\n\nclusteraiida_qeInputsget_dict_0__kpts->clusteraiida_qeget_dict_0Inputskpts\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_0__pseudopotentials\n\nget_dict_0__pseudopotentials\n\n\n\nclusteraiida_qeget_dict_0Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusteraiida_qeInputsget_dict_0__pseudopotentials->clusteraiida_qeget_dict_0Inputspseudopotentials\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_0__smearing\n\nget_dict_0__smearing\n\n\n\nclusteraiida_qeget_dict_0Inputssmearing\n\nsmearing\n\n\n\nclusteraiida_qeInputsget_dict_0__smearing->clusteraiida_qeget_dict_0Inputssmearing\n\n\n\n\n\n\nclusteraiida_qeInputscalculate_qe_0__working_directory\n\ncalculate_qe_0__working_directory\n\n\n\nclusteraiida_qecalculate_qe_0Inputsworking_directory\n\nworking_directory\n\n\n\nclusteraiida_qeInputscalculate_qe_0__working_directory->clusteraiida_qecalculate_qe_0Inputsworking_directory\n\n\n\n\n\n\nclusteraiida_qeInputsgenerate_structures__strain_lst\n\ngenerate_structures__strain_lst\n\n\n\nclusteraiida_qegenerate_structuresInputsstrain_lst\n\nstrain_lst\n\n\n\nclusteraiida_qeInputsgenerate_structures__strain_lst->clusteraiida_qegenerate_structuresInputsstrain_lst\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_1__calculation\n\nget_dict_1__calculation\n\n\n\nclusteraiida_qeget_dict_1Inputscalculation\n\ncalculation\n\n\n\nclusteraiida_qeInputsget_dict_1__calculation->clusteraiida_qeget_dict_1Inputscalculation\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_1__kpts\n\nget_dict_1__kpts\n\n\n\nclusteraiida_qeget_dict_1Inputskpts\n\nkpts\n\n\n\nclusteraiida_qeInputsget_dict_1__kpts->clusteraiida_qeget_dict_1Inputskpts\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_1__pseudopotentials\n\nget_dict_1__pseudopotentials\n\n\n\nclusteraiida_qeget_dict_1Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusteraiida_qeInputsget_dict_1__pseudopotentials->clusteraiida_qeget_dict_1Inputspseudopotentials\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_1__smearing\n\nget_dict_1__smearing\n\n\n\nclusteraiida_qeget_dict_1Inputssmearing\n\nsmearing\n\n\n\nclusteraiida_qeInputsget_dict_1__smearing->clusteraiida_qeget_dict_1Inputssmearing\n\n\n\n\n\n\nclusteraiida_qeInputscalculate_qe_1__working_directory\n\ncalculate_qe_1__working_directory\n\n\n\nclusteraiida_qecalculate_qe_1Inputsworking_directory\n\nworking_directory\n\n\n\nclusteraiida_qeInputscalculate_qe_1__working_directory->clusteraiida_qecalculate_qe_1Inputsworking_directory\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_2__calculation\n\nget_dict_2__calculation\n\n\n\nclusteraiida_qeget_dict_2Inputscalculation\n\ncalculation\n\n\n\nclusteraiida_qeInputsget_dict_2__calculation->clusteraiida_qeget_dict_2Inputscalculation\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_2__kpts\n\nget_dict_2__kpts\n\n\n\nclusteraiida_qeget_dict_2Inputskpts\n\nkpts\n\n\n\nclusteraiida_qeInputsget_dict_2__kpts->clusteraiida_qeget_dict_2Inputskpts\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_2__pseudopotentials\n\nget_dict_2__pseudopotentials\n\n\n\nclusteraiida_qeget_dict_2Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusteraiida_qeInputsget_dict_2__pseudopotentials->clusteraiida_qeget_dict_2Inputspseudopotentials\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_2__smearing\n\nget_dict_2__smearing\n\n\n\nclusteraiida_qeget_dict_2Inputssmearing\n\nsmearing\n\n\n\nclusteraiida_qeInputsget_dict_2__smearing->clusteraiida_qeget_dict_2Inputssmearing\n\n\n\n\n\n\nclusteraiida_qeInputscalculate_qe_2__working_directory\n\ncalculate_qe_2__working_directory\n\n\n\nclusteraiida_qecalculate_qe_2Inputsworking_directory\n\nworking_directory\n\n\n\nclusteraiida_qeInputscalculate_qe_2__working_directory->clusteraiida_qecalculate_qe_2Inputsworking_directory\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_3__calculation\n\nget_dict_3__calculation\n\n\n\nclusteraiida_qeget_dict_3Inputscalculation\n\ncalculation\n\n\n\nclusteraiida_qeInputsget_dict_3__calculation->clusteraiida_qeget_dict_3Inputscalculation\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_3__kpts\n\nget_dict_3__kpts\n\n\n\nclusteraiida_qeget_dict_3Inputskpts\n\nkpts\n\n\n\nclusteraiida_qeInputsget_dict_3__kpts->clusteraiida_qeget_dict_3Inputskpts\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_3__pseudopotentials\n\nget_dict_3__pseudopotentials\n\n\n\nclusteraiida_qeget_dict_3Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusteraiida_qeInputsget_dict_3__pseudopotentials->clusteraiida_qeget_dict_3Inputspseudopotentials\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_3__smearing\n\nget_dict_3__smearing\n\n\n\nclusteraiida_qeget_dict_3Inputssmearing\n\nsmearing\n\n\n\nclusteraiida_qeInputsget_dict_3__smearing->clusteraiida_qeget_dict_3Inputssmearing\n\n\n\n\n\n\nclusteraiida_qeInputscalculate_qe_3__working_directory\n\ncalculate_qe_3__working_directory\n\n\n\nclusteraiida_qecalculate_qe_3Inputsworking_directory\n\nworking_directory\n\n\n\nclusteraiida_qeInputscalculate_qe_3__working_directory->clusteraiida_qecalculate_qe_3Inputsworking_directory\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_4__calculation\n\nget_dict_4__calculation\n\n\n\nclusteraiida_qeget_dict_4Inputscalculation\n\ncalculation\n\n\n\nclusteraiida_qeInputsget_dict_4__calculation->clusteraiida_qeget_dict_4Inputscalculation\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_4__kpts\n\nget_dict_4__kpts\n\n\n\nclusteraiida_qeget_dict_4Inputskpts\n\nkpts\n\n\n\nclusteraiida_qeInputsget_dict_4__kpts->clusteraiida_qeget_dict_4Inputskpts\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_4__pseudopotentials\n\nget_dict_4__pseudopotentials\n\n\n\nclusteraiida_qeget_dict_4Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusteraiida_qeInputsget_dict_4__pseudopotentials->clusteraiida_qeget_dict_4Inputspseudopotentials\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_4__smearing\n\nget_dict_4__smearing\n\n\n\nclusteraiida_qeget_dict_4Inputssmearing\n\nsmearing\n\n\n\nclusteraiida_qeInputsget_dict_4__smearing->clusteraiida_qeget_dict_4Inputssmearing\n\n\n\n\n\n\nclusteraiida_qeInputscalculate_qe_4__working_directory\n\ncalculate_qe_4__working_directory\n\n\n\nclusteraiida_qecalculate_qe_4Inputsworking_directory\n\nworking_directory\n\n\n\nclusteraiida_qeInputscalculate_qe_4__working_directory->clusteraiida_qecalculate_qe_4Inputsworking_directory\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_5__calculation\n\nget_dict_5__calculation\n\n\n\nclusteraiida_qeget_dict_5Inputscalculation\n\ncalculation\n\n\n\nclusteraiida_qeInputsget_dict_5__calculation->clusteraiida_qeget_dict_5Inputscalculation\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_5__kpts\n\nget_dict_5__kpts\n\n\n\nclusteraiida_qeget_dict_5Inputskpts\n\nkpts\n\n\n\nclusteraiida_qeInputsget_dict_5__kpts->clusteraiida_qeget_dict_5Inputskpts\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_5__pseudopotentials\n\nget_dict_5__pseudopotentials\n\n\n\nclusteraiida_qeget_dict_5Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusteraiida_qeInputsget_dict_5__pseudopotentials->clusteraiida_qeget_dict_5Inputspseudopotentials\n\n\n\n\n\n\nclusteraiida_qeInputsget_dict_5__smearing\n\nget_dict_5__smearing\n\n\n\nclusteraiida_qeget_dict_5Inputssmearing\n\nsmearing\n\n\n\nclusteraiida_qeInputsget_dict_5__smearing->clusteraiida_qeget_dict_5Inputssmearing\n\n\n\n\n\n\nclusteraiida_qeInputscalculate_qe_5__working_directory\n\ncalculate_qe_5__working_directory\n\n\n\nclusteraiida_qecalculate_qe_5Inputsworking_directory\n\nworking_directory\n\n\n\nclusteraiida_qeInputscalculate_qe_5__working_directory->clusteraiida_qecalculate_qe_5Inputsworking_directory\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_2859163708959743150__item\n\ninjected_GetItem_2859163708959743150__item\n\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_2859163708959743150__item->clusteraiida_qeinjected_GetItem_2859163708959743150Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_2095185757530090309__item\n\ninjected_GetItem_2095185757530090309__item\n\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_2095185757530090309__item->clusteraiida_qeinjected_GetItem_2095185757530090309Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m6396244699285524644__item\n\ninjected_GetItem_m6396244699285524644__item\n\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m6396244699285524644__item->clusteraiida_qeinjected_GetItem_m6396244699285524644Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m3217087382920924098__item\n\ninjected_GetItem_m3217087382920924098__item\n\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m3217087382920924098__item->clusteraiida_qeinjected_GetItem_m3217087382920924098Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m1410919064082391699__item\n\ninjected_GetItem_m1410919064082391699__item\n\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m1410919064082391699__item->clusteraiida_qeinjected_GetItem_m1410919064082391699Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m9115075428129331383__item\n\ninjected_GetItem_m9115075428129331383__item\n\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m9115075428129331383__item->clusteraiida_qeinjected_GetItem_m9115075428129331383Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m7237000809964411643__item\n\ninjected_GetItem_m7237000809964411643__item\n\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m7237000809964411643__item->clusteraiida_qeinjected_GetItem_m7237000809964411643Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m5860620980043280550__item\n\ninjected_GetItem_m5860620980043280550__item\n\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m5860620980043280550__item->clusteraiida_qeinjected_GetItem_m5860620980043280550Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m6458391072898921223__item\n\ninjected_GetItem_m6458391072898921223__item\n\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m6458391072898921223__item->clusteraiida_qeinjected_GetItem_m6458391072898921223Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_1684197267152821370__item\n\ninjected_GetItem_1684197267152821370__item\n\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_1684197267152821370__item->clusteraiida_qeinjected_GetItem_1684197267152821370Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_3919628805879474670__item\n\ninjected_GetItem_3919628805879474670__item\n\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_3919628805879474670__item->clusteraiida_qeinjected_GetItem_3919628805879474670Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m740119179149754946__item\n\ninjected_GetItem_m740119179149754946__item\n\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m740119179149754946__item->clusteraiida_qeinjected_GetItem_m740119179149754946Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_2084798752545049754__item\n\ninjected_GetItem_2084798752545049754__item\n\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_2084798752545049754__item->clusteraiida_qeinjected_GetItem_2084798752545049754Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_2761976441505203068__item\n\ninjected_GetItem_2761976441505203068__item\n\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_2761976441505203068__item->clusteraiida_qeinjected_GetItem_2761976441505203068Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m4556998621263697855__item\n\ninjected_GetItem_m4556998621263697855__item\n\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m4556998621263697855__item->clusteraiida_qeinjected_GetItem_m4556998621263697855Inputsitem\n\n\n\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m9206283876700615862__item\n\ninjected_GetItem_m9206283876700615862__item\n\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862Inputsitem\n\nitem\n\n\n\nclusteraiida_qeInputsinjected_GetItem_m9206283876700615862__item->clusteraiida_qeinjected_GetItem_m9206283876700615862Inputsitem\n\n\n\n\n\n\nclusteraiida_qeOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeOutputsWithInjectionplot_energy_volume_curve__plot_energy_volume_curve\n\nplot_energy_volume_curve__plot_energy_volume_curve\n\n\n\nclusteraiida_qeget_bulk_structureInputsrun\n\nrun\n\n\n\nclusteraiida_qeget_bulk_structureOutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeget_bulk_structureInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeget_bulk_structureOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeget_bulk_structureOutputsWithInjectionget_bulk_structure\n\nget_bulk_structure\n\n\n\nclusteraiida_qeget_dict_0Inputsstructure\n\nstructure\n\n\n\nclusteraiida_qeget_bulk_structureOutputsWithInjectionget_bulk_structure->clusteraiida_qeget_dict_0Inputsstructure\n\n\n\n\n\n\nclusteraiida_qeget_dict_0Inputsrun\n\nrun\n\n\n\nclusteraiida_qeget_dict_0OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeget_dict_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeget_dict_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeget_dict_0OutputsWithInjectionget_dict_0\n\nget_dict_0\n\n\n\nclusteraiida_qecalculate_qe_0Inputsinput_dict\n\ninput_dict\n\n\n\nclusteraiida_qeget_dict_0OutputsWithInjectionget_dict_0->clusteraiida_qecalculate_qe_0Inputsinput_dict\n\n\n\n\n\n\nclusteraiida_qecalculate_qe_0Inputsrun\n\nrun\n\n\n\nclusteraiida_qecalculate_qe_0OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qecalculate_qe_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qecalculate_qe_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qecalculate_qe_0OutputsWithInjectioncalculate_qe_0\n\ncalculate_qe_0\n\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_0OutputsWithInjectioncalculate_qe_0->clusteraiida_qeinjected_GetItem_2859163708959743150Inputsobj\n\n\n\n\n\n\nclusteraiida_qegenerate_structuresInputsrun\n\nrun\n\n\n\nclusteraiida_qegenerate_structuresOutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qegenerate_structuresInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qegenerate_structuresInputsstructure\n\nstructure\n\n\n\nclusteraiida_qegenerate_structuresOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qegenerate_structuresOutputsWithInjectiongenerate_structures\n\ngenerate_structures\n\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309Inputsobj\n\nobj\n\n\n\nclusteraiida_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusteraiida_qeinjected_GetItem_2095185757530090309Inputsobj\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699Inputsobj\n\nobj\n\n\n\nclusteraiida_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusteraiida_qeinjected_GetItem_m1410919064082391699Inputsobj\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550Inputsobj\n\nobj\n\n\n\nclusteraiida_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusteraiida_qeinjected_GetItem_m5860620980043280550Inputsobj\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670Inputsobj\n\nobj\n\n\n\nclusteraiida_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusteraiida_qeinjected_GetItem_3919628805879474670Inputsobj\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068Inputsobj\n\nobj\n\n\n\nclusteraiida_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusteraiida_qeinjected_GetItem_2761976441505203068Inputsobj\n\n\n\n\n\n\nclusteraiida_qeget_list_0Inputsrun\n\nrun\n\n\n\nclusteraiida_qeget_list_0OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeget_list_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeget_list_0Inputss_0\n\ns_0\n\n\n\nclusteraiida_qeget_list_0Inputss_1\n\ns_1\n\n\n\nclusteraiida_qeget_list_0Inputss_2\n\ns_2\n\n\n\nclusteraiida_qeget_list_0Inputss_3\n\ns_3\n\n\n\nclusteraiida_qeget_list_0Inputss_4\n\ns_4\n\n\n\nclusteraiida_qeget_list_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeget_list_0OutputsWithInjectionget_list_0\n\nget_list_0\n\n\n\nclusteraiida_qeplot_energy_volume_curveInputsvolume_lst\n\nvolume_lst\n\n\n\nclusteraiida_qeget_list_0OutputsWithInjectionget_list_0->clusteraiida_qeplot_energy_volume_curveInputsvolume_lst\n\n\n\n\n\n\nclusteraiida_qeget_list_1Inputsrun\n\nrun\n\n\n\nclusteraiida_qeget_list_1OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeget_list_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeget_list_1Inputss_0\n\ns_0\n\n\n\nclusteraiida_qeget_list_1Inputss_1\n\ns_1\n\n\n\nclusteraiida_qeget_list_1Inputss_2\n\ns_2\n\n\n\nclusteraiida_qeget_list_1Inputss_3\n\ns_3\n\n\n\nclusteraiida_qeget_list_1Inputss_4\n\ns_4\n\n\n\nclusteraiida_qeget_list_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeget_list_1OutputsWithInjectionget_list_1\n\nget_list_1\n\n\n\nclusteraiida_qeplot_energy_volume_curveInputsenergy_lst\n\nenergy_lst\n\n\n\nclusteraiida_qeget_list_1OutputsWithInjectionget_list_1->clusteraiida_qeplot_energy_volume_curveInputsenergy_lst\n\n\n\n\n\n\nclusteraiida_qeget_dict_1Inputsrun\n\nrun\n\n\n\nclusteraiida_qeget_dict_1OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeget_dict_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeget_dict_1Inputsstructure\n\nstructure\n\n\n\nclusteraiida_qeget_dict_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeget_dict_1OutputsWithInjectionget_dict_1\n\nget_dict_1\n\n\n\nclusteraiida_qecalculate_qe_1Inputsinput_dict\n\ninput_dict\n\n\n\nclusteraiida_qeget_dict_1OutputsWithInjectionget_dict_1->clusteraiida_qecalculate_qe_1Inputsinput_dict\n\n\n\n\n\n\nclusteraiida_qecalculate_qe_1Inputsrun\n\nrun\n\n\n\nclusteraiida_qecalculate_qe_1OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qecalculate_qe_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qecalculate_qe_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qecalculate_qe_1OutputsWithInjectioncalculate_qe_1\n\ncalculate_qe_1\n\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_1OutputsWithInjectioncalculate_qe_1->clusteraiida_qeinjected_GetItem_m6396244699285524644Inputsobj\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_1OutputsWithInjectioncalculate_qe_1->clusteraiida_qeinjected_GetItem_m3217087382920924098Inputsobj\n\n\n\n\n\n\nclusteraiida_qeget_dict_2Inputsrun\n\nrun\n\n\n\nclusteraiida_qeget_dict_2OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeget_dict_2Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeget_dict_2Inputsstructure\n\nstructure\n\n\n\nclusteraiida_qeget_dict_2OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeget_dict_2OutputsWithInjectionget_dict_2\n\nget_dict_2\n\n\n\nclusteraiida_qecalculate_qe_2Inputsinput_dict\n\ninput_dict\n\n\n\nclusteraiida_qeget_dict_2OutputsWithInjectionget_dict_2->clusteraiida_qecalculate_qe_2Inputsinput_dict\n\n\n\n\n\n\nclusteraiida_qecalculate_qe_2Inputsrun\n\nrun\n\n\n\nclusteraiida_qecalculate_qe_2OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qecalculate_qe_2Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qecalculate_qe_2OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qecalculate_qe_2OutputsWithInjectioncalculate_qe_2\n\ncalculate_qe_2\n\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_2OutputsWithInjectioncalculate_qe_2->clusteraiida_qeinjected_GetItem_m9115075428129331383Inputsobj\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_2OutputsWithInjectioncalculate_qe_2->clusteraiida_qeinjected_GetItem_m7237000809964411643Inputsobj\n\n\n\n\n\n\nclusteraiida_qeget_dict_3Inputsrun\n\nrun\n\n\n\nclusteraiida_qeget_dict_3OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeget_dict_3Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeget_dict_3Inputsstructure\n\nstructure\n\n\n\nclusteraiida_qeget_dict_3OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeget_dict_3OutputsWithInjectionget_dict_3\n\nget_dict_3\n\n\n\nclusteraiida_qecalculate_qe_3Inputsinput_dict\n\ninput_dict\n\n\n\nclusteraiida_qeget_dict_3OutputsWithInjectionget_dict_3->clusteraiida_qecalculate_qe_3Inputsinput_dict\n\n\n\n\n\n\nclusteraiida_qecalculate_qe_3Inputsrun\n\nrun\n\n\n\nclusteraiida_qecalculate_qe_3OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qecalculate_qe_3Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qecalculate_qe_3OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qecalculate_qe_3OutputsWithInjectioncalculate_qe_3\n\ncalculate_qe_3\n\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_3OutputsWithInjectioncalculate_qe_3->clusteraiida_qeinjected_GetItem_m6458391072898921223Inputsobj\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_3OutputsWithInjectioncalculate_qe_3->clusteraiida_qeinjected_GetItem_1684197267152821370Inputsobj\n\n\n\n\n\n\nclusteraiida_qeget_dict_4Inputsrun\n\nrun\n\n\n\nclusteraiida_qeget_dict_4OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeget_dict_4Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeget_dict_4Inputsstructure\n\nstructure\n\n\n\nclusteraiida_qeget_dict_4OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeget_dict_4OutputsWithInjectionget_dict_4\n\nget_dict_4\n\n\n\nclusteraiida_qecalculate_qe_4Inputsinput_dict\n\ninput_dict\n\n\n\nclusteraiida_qeget_dict_4OutputsWithInjectionget_dict_4->clusteraiida_qecalculate_qe_4Inputsinput_dict\n\n\n\n\n\n\nclusteraiida_qecalculate_qe_4Inputsrun\n\nrun\n\n\n\nclusteraiida_qecalculate_qe_4OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qecalculate_qe_4Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qecalculate_qe_4OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qecalculate_qe_4OutputsWithInjectioncalculate_qe_4\n\ncalculate_qe_4\n\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_4OutputsWithInjectioncalculate_qe_4->clusteraiida_qeinjected_GetItem_m740119179149754946Inputsobj\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_4OutputsWithInjectioncalculate_qe_4->clusteraiida_qeinjected_GetItem_2084798752545049754Inputsobj\n\n\n\n\n\n\nclusteraiida_qeget_dict_5Inputsrun\n\nrun\n\n\n\nclusteraiida_qeget_dict_5OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeget_dict_5Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeget_dict_5Inputsstructure\n\nstructure\n\n\n\nclusteraiida_qeget_dict_5OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeget_dict_5OutputsWithInjectionget_dict_5\n\nget_dict_5\n\n\n\nclusteraiida_qecalculate_qe_5Inputsinput_dict\n\ninput_dict\n\n\n\nclusteraiida_qeget_dict_5OutputsWithInjectionget_dict_5->clusteraiida_qecalculate_qe_5Inputsinput_dict\n\n\n\n\n\n\nclusteraiida_qecalculate_qe_5Inputsrun\n\nrun\n\n\n\nclusteraiida_qecalculate_qe_5OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qecalculate_qe_5Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qecalculate_qe_5OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qecalculate_qe_5OutputsWithInjectioncalculate_qe_5\n\ncalculate_qe_5\n\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_5OutputsWithInjectioncalculate_qe_5->clusteraiida_qeinjected_GetItem_m4556998621263697855Inputsobj\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862Inputsobj\n\nobj\n\n\n\nclusteraiida_qecalculate_qe_5OutputsWithInjectioncalculate_qe_5->clusteraiida_qeinjected_GetItem_m9206283876700615862Inputsobj\n\n\n\n\n\n\nclusteraiida_qeplot_energy_volume_curveInputsrun\n\nrun\n\n\n\nclusteraiida_qeplot_energy_volume_curveOutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeplot_energy_volume_curveInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeplot_energy_volume_curveOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeplot_energy_volume_curveOutputsWithInjectionplot_energy_volume_curve\n\nplot_energy_volume_curve\n\n\n\nclusteraiida_qeplot_energy_volume_curveOutputsWithInjectionplot_energy_volume_curve->clusteraiida_qeOutputsWithInjectionplot_energy_volume_curve__plot_energy_volume_curve\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_2859163708959743150OutputsWithInjectiongetitem->clusteraiida_qegenerate_structuresInputsstructure\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_2095185757530090309OutputsWithInjectiongetitem->clusteraiida_qeget_dict_1Inputsstructure\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m6396244699285524644OutputsWithInjectiongetitem->clusteraiida_qeget_list_1Inputss_0\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m3217087382920924098OutputsWithInjectiongetitem->clusteraiida_qeget_list_0Inputss_0\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m1410919064082391699OutputsWithInjectiongetitem->clusteraiida_qeget_dict_2Inputsstructure\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m9115075428129331383OutputsWithInjectiongetitem->clusteraiida_qeget_list_1Inputss_1\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m7237000809964411643OutputsWithInjectiongetitem->clusteraiida_qeget_list_0Inputss_1\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m5860620980043280550OutputsWithInjectiongetitem->clusteraiida_qeget_dict_3Inputsstructure\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m6458391072898921223OutputsWithInjectiongetitem->clusteraiida_qeget_list_1Inputss_2\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_1684197267152821370OutputsWithInjectiongetitem->clusteraiida_qeget_list_0Inputss_2\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_3919628805879474670OutputsWithInjectiongetitem->clusteraiida_qeget_dict_4Inputsstructure\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m740119179149754946OutputsWithInjectiongetitem->clusteraiida_qeget_list_1Inputss_3\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_2084798752545049754OutputsWithInjectiongetitem->clusteraiida_qeget_list_0Inputss_3\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_2761976441505203068OutputsWithInjectiongetitem->clusteraiida_qeget_dict_5Inputsstructure\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m4556998621263697855OutputsWithInjectiongetitem->clusteraiida_qeget_list_1Inputss_4\n\n\n\n\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862Inputsrun\n\nrun\n\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862OutputsWithInjectionran\n\nran\n\n\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusteraiida_qeinjected_GetItem_m9206283876700615862OutputsWithInjectiongetitem->clusteraiida_qeget_list_0Inputss_4\n\n\n\n\n\n\n","text/plain":""},"metadata":{}}],"execution_count":29},{"cell_type":"code","source":"wf.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02308] 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-pythonworkflow-fl--x---218119f8:02404] 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-pythonworkflow-fl--x---218119f8:02421] 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-pythonworkflow-fl--x---218119f8:02443] 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-pythonworkflow-fl--x---218119f8:02459] 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-pythonworkflow-fl--x---218119f8:02470] 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":30,"output_type":"execute_result","data":{"text/plain":"{'plot_energy_volume_curve__plot_energy_volume_curve': None}"},"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":30}]} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aiida" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define workflow with aiida" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.aiida import write_workflow_json\n", + "from python_workflow_definition.shared import get_dict, get_list\n", + "\n", + "from aiida import load_profile, orm\n", + "\n", + "load_profile()\n", + "\n", + "workflow_json_filename = \"aiida_qe.json\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from aiida_workgraph import task, WorkGraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from workflow import (\n", + " generate_structures,\n", + " get_bulk_structure,\n", + " calculate_qe as _calculate_qe,\n", + " plot_energy_volume_curve,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calculate_qe = task(outputs=[\"energy\", \"volume\", \"structure\"])(_calculate_qe)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wg = WorkGraph(\"wg-qe\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prepare the inputs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "element = orm.Str(\"Al\")\n", + "a = orm.Float(4.04)\n", + "cubic = orm.Bool(True)\n", + "relax_workdir = orm.Str(\"mini\")\n", + "pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n", + "kpts = orm.List([3, 3, 3])\n", + "calc_type_relax = orm.Str(\"vc-relax\")\n", + "calc_type_scf = orm.Str(\"scf\")\n", + "smearing = orm.Float(0.02)\n", + "strain_lst = orm.List([0.9, 0.95, 1.0, 1.05, 1.1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Actual tasks to construct the EOS workflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "get_bulk_structure_task = wg.add_task(\n", + " get_bulk_structure,\n", + " element=element,\n", + " a=a,\n", + " cubic=cubic,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "relax_prepare_input_dict_task = wg.add_task(\n", + " 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", + "\n", + "relax_task = wg.add_task(\n", + " calculate_qe,\n", + " input_dict=relax_prepare_input_dict_task.outputs.result,\n", + " working_directory=relax_workdir,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "generate_structures_task = wg.add_task(\n", + " generate_structures,\n", + " structure=relax_task.outputs.structure,\n", + " strain_lst=strain_lst,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "get_volumes_task = wg.add_task(get_list)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "get_energies_task = wg.add_task(get_list)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "strain_dir_tasks, scf_qe_tasks, scf_get_dict_tasks = [], [], []\n", + "\n", + "for 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", + " 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", + " 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})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot_energy_volume_curve_task = wg.add_task(\n", + " plot_energy_volume_curve,\n", + " volume_lst=get_volumes_task.outputs.result,\n", + " energy_lst=get_energies_task.outputs.result,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wg" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "_ = write_workflow_json(wg=wg, file_name=workflow_json_filename)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!cat {workflow_json_filename}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Workflow with jobflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from jobflow.managers.local import run_locally" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "flow = load_workflow_json(file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "flow[0].function_kwargs[\"a\"] = 4.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_base" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\n", + "delayed_object_lst[-1].draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[0].input['a'] = 4.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wf.get_bulk_structure.inputs.a.value = 4.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] + } + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/example_workflows/quantum_espresso/cwl.ipynb b/example_workflows/quantum_espresso/cwl.ipynb index 5dc1979..32b8994 100644 --- a/example_workflows/quantum_espresso/cwl.ipynb +++ b/example_workflows/quantum_espresso/cwl.ipynb @@ -1,117 +1,86 @@ { - "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": "4eca79ef-1053-4f69-89ad-2bee8411068e", "cell_type": "code", - "source": "import os", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "0", + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "import os" + ] }, { - "id": "377fef56-484d-491c-b19e-1be6931e44eb", "cell_type": "code", - "source": "import pickle", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "1", + "metadata": {}, "outputs": [], - "execution_count": 2 + "source": [ + "import pickle" + ] }, { - "id": "92e3921b-2bb8-4333-8cfe-4bd27f785d24", "cell_type": "code", - "source": "from python_workflow_definition.cwl import write_workflow", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "2", + "metadata": {}, "outputs": [], - "execution_count": 3 + "source": [ + "from python_workflow_definition.cwl import write_workflow" + ] }, { - "id": "5303c059-8ae4-4557-858e-b4bd64eac711", "cell_type": "code", - "source": "write_workflow(file_name=\"workflow.json\")", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "3", + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "write_workflow(file_name=\"workflow.json\")" + ] }, { - "id": "0192ca74-3971-464b-9435-c156e0b6e623", "cell_type": "code", - "source": "os.environ[\"ESPRESSO_PSEUDO\"] = os.path.abspath(os.path.join(\"../../espresso/pseudo\"))", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "4", + "metadata": {}, "outputs": [], - "execution_count": 5 + "source": [ + "os.environ[\"ESPRESSO_PSEUDO\"] = os.path.abspath(os.path.join(\"../../espresso/pseudo\"))" + ] }, { - "id": "df302bd2-e9b6-4595-979c-67c46414d986", "cell_type": "code", - "source": "! cwltool --preserve-environment=ESPRESSO_PSEUDO workflow.cwl workflow.yml", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "/srv/conda/envs/notebook/bin/cwltool:11: DeprecationWarning: Nesting argument groups is deprecated.\n sys.exit(run())\n\u001B[1;30mINFO\u001B[0m /srv/conda/envs/notebook/bin/cwltool 3.1.20250110105449\n\u001B[1;30mINFO\u001B[0m Resolved 'workflow.cwl' to 'file:///home/jovyan/example_workflows/quantum_espresso/workflow.cwl'\n\u001B[1;30mINFO\u001B[0m [workflow ] start\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_bulk_structure_0\n\u001B[1;30mINFO\u001B[0m [step get_bulk_structure_0] start\n\u001B[1;30mINFO\u001B[0m [job get_bulk_structure_0] /tmp/9sant4h9$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/va137af6/stga19aac01-d6f9-48d3-ba6b-d8a6e460f525/workflow.py \\\n --function=workflow.get_bulk_structure \\\n --arg_cubic=/tmp/va137af6/stgd2861bb7-939d-449d-9600-71f380ee058d/cubic.pickle \\\n --arg_element=/tmp/va137af6/stg93f5775e-477a-4b2e-87ac-822ff4097346/element.pickle \\\n --arg_a=/tmp/va137af6/stgcfd0bd7b-a186-4b46-80a6-663aeb5d0fa9/a.pickle\n\u001B[1;30mINFO\u001B[0m [job get_bulk_structure_0] Max memory used: 110MiB\n\u001B[1;30mINFO\u001B[0m [job get_bulk_structure_0] completed success\n\u001B[1;30mINFO\u001B[0m [step get_bulk_structure_0] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_dict_13\n\u001B[1;30mINFO\u001B[0m [step get_dict_13] start\n\u001B[1;30mINFO\u001B[0m [job get_dict_13] /tmp/_o8rxcyc$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --function=python_workflow_definition.shared.get_dict \\\n --arg_smearing=/tmp/1h2uwpt9/stg17e865b8-f1f4-406f-a9c7-b8deddc5695d/smearing.pickle \\\n --arg_calculation=/tmp/1h2uwpt9/stgf1d25320-f3de-48f7-8087-5cdb5531765c/calculation_0.pickle \\\n --arg_kpts=/tmp/1h2uwpt9/stgc9e37196-83cf-49d9-88e1-b5acb7c53e7f/kpts.pickle \\\n --arg_pseudopotentials=/tmp/1h2uwpt9/stgcfb6bfd1-3ae7-4600-b07d-ca107c1a275c/pseudopotentials.pickle \\\n --arg_structure=/tmp/1h2uwpt9/stg0da627e7-f19e-4948-b23e-4552aa692862/result.pickle\n\u001B[1;30mINFO\u001B[0m [job get_dict_13] completed success\n\u001B[1;30mINFO\u001B[0m [step get_dict_13] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step calculate_qe_1\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_1] start\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_1] /tmp/q56p65x4$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/5hwlsb8q/stga00637b3-d27a-4b67-b4b2-5857ffc8f94a/workflow.py \\\n --function=workflow.calculate_qe \\\n --arg_input_dict=/tmp/5hwlsb8q/stgea0d773c-cef9-49b7-9895-09c22db6f52d/result.pickle \\\n --arg_working_directory=/tmp/5hwlsb8q/stg541840e1-d4a6-4a2c-a220-ab09e72c869d/working_directory_0.pickle\n[jupyter-pythonworkflow-fl--x---d7231032:09273] 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\u001B[1;30mINFO\u001B[0m [job calculate_qe_1] Max memory used: 273MiB\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_1] completed success\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_1] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step generate_structures_2\n\u001B[1;30mINFO\u001B[0m [step generate_structures_2] start\n\u001B[1;30mINFO\u001B[0m [job generate_structures_2] /tmp/81vwps2h$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/0d6xih7u/stg8da9bfd1-34a7-4282-8446-97a728d4747b/workflow.py \\\n --function=workflow.generate_structures \\\n --arg_structure=/tmp/0d6xih7u/stg89eb15f9-014d-4c20-8197-87c6c7345ffe/structure.pickle \\\n --arg_strain_lst=/tmp/0d6xih7u/stg80ec088c-9b6a-45bd-8565-e68fd3c76210/strain_lst.pickle\n\u001B[1;30mINFO\u001B[0m [job generate_structures_2] Max memory used: 96MiB\n\u001B[1;30mINFO\u001B[0m [job generate_structures_2] completed success\n\u001B[1;30mINFO\u001B[0m [step generate_structures_2] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_dict_25\n\u001B[1;30mINFO\u001B[0m [step get_dict_25] start\n\u001B[1;30mINFO\u001B[0m [job get_dict_25] /tmp/hj3teyvh$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --function=python_workflow_definition.shared.get_dict \\\n --arg_smearing=/tmp/ky497mud/stgf2ab029c-fd78-4490-a4aa-2ee352fa40a2/smearing.pickle \\\n --arg_calculation=/tmp/ky497mud/stg12f82711-28cb-42e6-80c5-59e7fa946ea8/calculation_1.pickle \\\n --arg_kpts=/tmp/ky497mud/stgd35fecc6-83e5-493e-85ad-caf6acd301cb/kpts.pickle \\\n --arg_pseudopotentials=/tmp/ky497mud/stg9b98aba6-11a6-4718-bd3a-23f160518077/pseudopotentials.pickle \\\n --arg_structure=/tmp/ky497mud/stg00376f4a-a991-469a-b494-27c160e6c15d/s_2.pickle\n\u001B[1;30mINFO\u001B[0m [job get_dict_25] completed success\n\u001B[1;30mINFO\u001B[0m [step get_dict_25] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_dict_20\n\u001B[1;30mINFO\u001B[0m [step get_dict_20] start\n\u001B[1;30mINFO\u001B[0m [job get_dict_20] /tmp/y9drdoe7$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --function=python_workflow_definition.shared.get_dict \\\n --arg_smearing=/tmp/dsu142t1/stgcba59359-36e1-4bf9-9e6f-e7cf99a23077/smearing.pickle \\\n --arg_calculation=/tmp/dsu142t1/stg56a2646f-2057-4670-bb4e-f55af62c5858/calculation_1.pickle \\\n --arg_kpts=/tmp/dsu142t1/stgc443e9a8-c9b6-4c5e-8321-6a70d347706b/kpts.pickle \\\n --arg_pseudopotentials=/tmp/dsu142t1/stg47b4b44d-c69c-4629-aaed-0e15bf14426e/pseudopotentials.pickle \\\n --arg_structure=/tmp/dsu142t1/stg0e5b3c6e-a315-4eaf-9a66-dbf5669eaada/s_0.pickle\n\u001B[1;30mINFO\u001B[0m [job get_dict_20] completed success\n\u001B[1;30mINFO\u001B[0m [step get_dict_20] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_dict_23\n\u001B[1;30mINFO\u001B[0m [step get_dict_23] start\n\u001B[1;30mINFO\u001B[0m [job get_dict_23] /tmp/9v59c4vd$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --function=python_workflow_definition.shared.get_dict \\\n --arg_smearing=/tmp/2mc_byfs/stgace4b178-c0ff-406e-95ac-754318766886/smearing.pickle \\\n --arg_calculation=/tmp/2mc_byfs/stg793df1d8-8f8d-4bb3-9c7c-243a48dc494b/calculation_1.pickle \\\n --arg_kpts=/tmp/2mc_byfs/stga852e76a-885f-4e39-8ab4-ecebf95c656f/kpts.pickle \\\n --arg_pseudopotentials=/tmp/2mc_byfs/stgd06acdff-6e0c-476c-be57-1f21b2d03711/pseudopotentials.pickle \\\n --arg_structure=/tmp/2mc_byfs/stg02210df5-d3e2-42b8-a75e-47e2f2c9f274/s_1.pickle\n\u001B[1;30mINFO\u001B[0m [job get_dict_23] completed success\n\u001B[1;30mINFO\u001B[0m [step get_dict_23] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_dict_29\n\u001B[1;30mINFO\u001B[0m [step get_dict_29] start\n\u001B[1;30mINFO\u001B[0m [job get_dict_29] /tmp/q_svsf9g$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --function=python_workflow_definition.shared.get_dict \\\n --arg_smearing=/tmp/8u8e7db4/stgbba611dc-3b23-4653-a293-f71d492a42af/smearing.pickle \\\n --arg_calculation=/tmp/8u8e7db4/stge9a32972-6649-4eb5-abd7-9db61d929d2d/calculation_1.pickle \\\n --arg_kpts=/tmp/8u8e7db4/stg02098ea5-7487-4a66-bb77-99a6336d7b71/kpts.pickle \\\n --arg_pseudopotentials=/tmp/8u8e7db4/stg571b6259-4599-4c39-8cb2-79a70feb78b8/pseudopotentials.pickle \\\n --arg_structure=/tmp/8u8e7db4/stg64c55a4d-8af6-40bf-abfd-3ec8a690b90b/s_4.pickle\n\u001B[1;30mINFO\u001B[0m [job get_dict_29] completed success\n\u001B[1;30mINFO\u001B[0m [step get_dict_29] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_dict_27\n\u001B[1;30mINFO\u001B[0m [step get_dict_27] start\n\u001B[1;30mINFO\u001B[0m [job get_dict_27] /tmp/vgcwzb84$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --function=python_workflow_definition.shared.get_dict \\\n --arg_smearing=/tmp/xf32x1ld/stg3cbb6408-2383-49d0-9476-ef3fbee7c165/smearing.pickle \\\n --arg_calculation=/tmp/xf32x1ld/stgeb36ed3b-b442-43ea-b14d-1397875e8839/calculation_1.pickle \\\n --arg_kpts=/tmp/xf32x1ld/stge8854d32-32f3-4a90-8e66-8ce7b1160d8d/kpts.pickle \\\n --arg_pseudopotentials=/tmp/xf32x1ld/stg0dba3c44-e6af-46a9-9f00-c08969392ede/pseudopotentials.pickle \\\n --arg_structure=/tmp/xf32x1ld/stg4223a500-1f85-4651-9130-bd1629008770/s_3.pickle\n\u001B[1;30mINFO\u001B[0m [job get_dict_27] completed success\n\u001B[1;30mINFO\u001B[0m [step get_dict_27] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step calculate_qe_3\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_3] start\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_3] /tmp/v2e_84tz$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/n81xp6_a/stgf98a9803-3329-400e-a03c-02b51d3f3c97/workflow.py \\\n --function=workflow.calculate_qe \\\n --arg_input_dict=/tmp/n81xp6_a/stgd93a737b-2598-4fb8-bdcb-bb1d2048116f/result.pickle \\\n --arg_working_directory=/tmp/n81xp6_a/stg5ad2a52b-2844-45e4-b227-3d835efa01f6/working_directory_1.pickle\n[jupyter-pythonworkflow-fl--x---d7231032:09459] 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\u001B[1;30mINFO\u001B[0m [job calculate_qe_3] Max memory used: 240MiB\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_3] completed success\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_3] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step calculate_qe_4\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_4] start\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_4] /tmp/tgwdkhxx$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/l5mihx97/stgf73a20aa-bd97-46af-a923-b8d776da2b98/workflow.py \\\n --function=workflow.calculate_qe \\\n --arg_input_dict=/tmp/l5mihx97/stgb8c3fcbe-9277-46c4-b8a2-a1171a292580/result.pickle \\\n --arg_working_directory=/tmp/l5mihx97/stg3ae0b93a-2e0b-4f1b-b079-985ea6bbaa72/working_directory_2.pickle\n[jupyter-pythonworkflow-fl--x---d7231032:09533] 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\u001B[1;30mINFO\u001B[0m [job calculate_qe_4] Max memory used: 213MiB\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_4] completed success\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_4] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step calculate_qe_5\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_5] start\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_5] /tmp/d36x49f6$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/nvm7fsf5/stg384bab04-833c-43f2-bd00-f4b5a5c93eec/workflow.py \\\n --function=workflow.calculate_qe \\\n --arg_input_dict=/tmp/nvm7fsf5/stg9aa51e21-01b0-4157-b73f-a3feee8a917a/result.pickle \\\n --arg_working_directory=/tmp/nvm7fsf5/stg02ef6345-c598-4127-95c7-e92d0a977c40/working_directory_3.pickle\n[jupyter-pythonworkflow-fl--x---d7231032:09611] 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\u001B[1;30mINFO\u001B[0m [job calculate_qe_5] Max memory used: 243MiB\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_5] completed success\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_5] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step calculate_qe_6\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_6] start\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_6] /tmp/eiyg8it6$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/708xmf3f/stg791b1717-cfb1-4569-ba75-d648a84e0a72/workflow.py \\\n --function=workflow.calculate_qe \\\n --arg_input_dict=/tmp/708xmf3f/stg9ebf7054-080c-4173-a8b9-2247d01a0068/result.pickle \\\n --arg_working_directory=/tmp/708xmf3f/stg1afccee5-d9b6-46ed-bc2c-fa36bdb8013d/working_directory_4.pickle\n[jupyter-pythonworkflow-fl--x---d7231032:09688] 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\u001B[1;30mINFO\u001B[0m [job calculate_qe_6] Max memory used: 245MiB\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_6] completed success\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_6] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step calculate_qe_7\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_7] start\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_7] /tmp/qjgxwxnd$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/g3sp392q/stg0a51a8da-c7a7-4d90-a49c-1817002a62a6/workflow.py \\\n --function=workflow.calculate_qe \\\n --arg_input_dict=/tmp/g3sp392q/stg67e73a60-3cc6-46dd-b009-cfc0034aec2c/result.pickle \\\n --arg_working_directory=/tmp/g3sp392q/stgf3d265db-820b-4af3-8975-0a6faa0d7a67/working_directory_5.pickle\n[jupyter-pythonworkflow-fl--x---d7231032:09770] 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\u001B[1;30mINFO\u001B[0m [job calculate_qe_7] Max memory used: 244MiB\n\u001B[1;30mINFO\u001B[0m [job calculate_qe_7] completed success\n\u001B[1;30mINFO\u001B[0m [step calculate_qe_7] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_list_31\n\u001B[1;30mINFO\u001B[0m [step get_list_31] start\n\u001B[1;30mINFO\u001B[0m [job get_list_31] /tmp/mnovytq_$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --function=python_workflow_definition.shared.get_list \\\n --arg_0=/tmp/bz0ntajx/stgdab2f59b-b118-44c4-96ef-b4639edaee4e/energy.pickle \\\n --arg_2=/tmp/bz0ntajx/stg2e9bec4d-1824-4152-b003-aab0eac204cd/energy.pickle \\\n --arg_1=/tmp/bz0ntajx/stg9511563e-9784-48a9-8d81-74ade3a084c1/energy.pickle \\\n --arg_4=/tmp/bz0ntajx/stg17845efd-e335-421e-9891-6e627254edb4/energy.pickle \\\n --arg_3=/tmp/bz0ntajx/stg051fa3bc-832a-4d70-b9fb-b9948f51904d/energy.pickle\n\u001B[1;30mINFO\u001B[0m [job get_list_31] completed success\n\u001B[1;30mINFO\u001B[0m [step get_list_31] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step get_list_30\n\u001B[1;30mINFO\u001B[0m [step get_list_30] start\n\u001B[1;30mINFO\u001B[0m [job get_list_30] /tmp/vc0dzppy$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --function=python_workflow_definition.shared.get_list \\\n --arg_0=/tmp/mejux8b1/stg71e3a6a9-c56b-4be8-8720-0ca90ac40513/volume.pickle \\\n --arg_2=/tmp/mejux8b1/stg429d498d-cf56-4561-a653-8048c1213851/volume.pickle \\\n --arg_1=/tmp/mejux8b1/stgee1a0001-20f2-45de-ac4e-77b0d0c59957/volume.pickle \\\n --arg_4=/tmp/mejux8b1/stg0de2a6dc-57cd-4a0c-9637-ef2e63e96fce/volume.pickle \\\n --arg_3=/tmp/mejux8b1/stga4551f25-d5f6-47c6-92ea-452cf694a286/volume.pickle\n\u001B[1;30mINFO\u001B[0m [job get_list_30] completed success\n\u001B[1;30mINFO\u001B[0m [step get_list_30] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] starting step plot_energy_volume_curve_8\n\u001B[1;30mINFO\u001B[0m [step plot_energy_volume_curve_8] start\n\u001B[1;30mINFO\u001B[0m [job plot_energy_volume_curve_8] /tmp/j4v3j3mt$ python \\\n -m \\\n python_workflow_definition.cwl \\\n --workflowfile=/tmp/_67k4bu3/stg5be48d76-8a92-4b02-b3d6-7bdb4c35c9ce/workflow.py \\\n --function=workflow.plot_energy_volume_curve \\\n --arg_volume_lst=/tmp/_67k4bu3/stgd43e71b0-d16b-4eb2-8d14-83924dafd7d6/result.pickle \\\n --arg_energy_lst=/tmp/_67k4bu3/stg43eeacdd-5042-4f2d-8efc-d8e0d5fe1c14/result.pickle\n\u001B[1;30mINFO\u001B[0m [job plot_energy_volume_curve_8] Max memory used: 112MiB\n\u001B[1;30mINFO\u001B[0m [job plot_energy_volume_curve_8] completed success\n\u001B[1;30mINFO\u001B[0m [step plot_energy_volume_curve_8] completed success\n\u001B[1;30mINFO\u001B[0m [workflow ] completed success\n{\n \"result_file\": {\n \"location\": \"file:///home/jovyan/example_workflows/quantum_espresso/result.pickle\",\n \"basename\": \"result.pickle\",\n \"class\": \"File\",\n \"checksum\": \"sha1$dbc1aaddc8b7343d6d33b34edcf608b8f8801918\",\n \"size\": 4,\n \"path\": \"/home/jovyan/example_workflows/quantum_espresso/result.pickle\"\n }\n}\u001B[1;30mINFO\u001B[0m Final process status is success\n" - } - ], - "execution_count": 6 + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "! cwltool --preserve-environment=ESPRESSO_PSEUDO workflow.cwl workflow.yml" + ] }, { - "id": "2942dbba-ea0a-4d20-be5c-ed9992d09ff8", "cell_type": "code", - "source": "with open(\"result.pickle\", \"rb\") as f:\n print(pickle.load(f))", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "None\n" - } - ], - "execution_count": 7 + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"result.pickle\", \"rb\") as f:\n", + " print(pickle.load(f))" + ] }, { - "id": "60e909ee-d0d0-4bd1-81c8-dd5274ae5834", "cell_type": "code", - "source": "", - "metadata": { - "trusted": true - }, + "execution_count": null, + "id": "7", + "metadata": {}, "outputs": [], - "execution_count": null + "source": [] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/example_workflows/quantum_espresso/jobflow.ipynb b/example_workflows/quantum_espresso/jobflow.ipynb index d8e0863..1ecb163 100644 --- a/example_workflows/quantum_espresso/jobflow.ipynb +++ b/example_workflows/quantum_espresso/jobflow.ipynb @@ -1 +1,431 @@ -{"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":"[`jobflow`](https://materialsproject.github.io/jobflow/index.html) and [`atomate2`](https://materialsproject.github.io/atomate2/index.html) are key packages of the [Materials Project](https://materialsproject.org/) . `jobflow` was especially designed to simplify the execution of dynamic workflows -- when the actual number of jobs is dynamically determined upon runtime instead of being statically fixed before running the workflow(s). `jobflow`'s overall flexibility allows for building workflows that go beyond the usage in materials science. `jobflow` serves as the basis of `atomate2`, which implements data generation workflows in the context of materials science and will be used for data generation in the Materials Project in the future.","metadata":{"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"cell_type":"markdown","source":"## Define workflow with jobflow\n\nWe start by importing the job decorator and Flow class from `jobflow` and the respective PWD tools.","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":[],"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":"markdown","source":"## Quantum Espresso Workflow\nWe will use the knowledge from the previous arithmetic workflow example to create the Quantum Espresso-related tasks for calculating an \"Energy vs. Volume\" curve. It’s important to note that this is only a basic implementation, and further extensions towards data validation or for a simplified user experience can be added. For example, one can typically configure run commands for quantum-chemical programs via configuration files in atomate2.","metadata":{"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"cell_type":"code","source":"from 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)\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":6},{"cell_type":"markdown","source":"We need to specify the typical QE input like pseudopotential(s) and structure model.","metadata":{"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"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":"markdown","source":"Next, for the \"Energy vs. Volume\" curve, we meed to specify the number of strained structures and save them into a list object. For each of the strained structures, we will carry out a QE calculation.","metadata":{"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"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":"markdown","source":"Finally, we specify a plotter for the \"Energy vs. Volume\" curve and can export the workflow.","metadata":{"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"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":"{\n \"version\": \"0.1.0\",\n \"nodes\": [\n {\n \"id\": 0,\n \"type\": \"function\",\n \"value\": \"workflow.get_bulk_structure\"\n },\n {\n \"id\": 1,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 2,\n \"type\": \"function\",\n \"value\": \"workflow.generate_structures\"\n },\n {\n \"id\": 3,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 4,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 5,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 6,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 7,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 8,\n \"type\": \"function\",\n \"value\": \"workflow.plot_energy_volume_curve\"\n },\n {\n \"id\": 9,\n \"type\": \"input\",\n \"name\": \"element\",\n \"value\": \"Al\"\n },\n {\n \"id\": 10,\n \"type\": \"input\",\n \"name\": \"a\",\n \"value\": 4.04\n },\n {\n \"id\": 11,\n \"type\": \"input\",\n \"name\": \"cubic\",\n \"value\": true\n },\n {\n \"id\": 12,\n \"type\": \"input\",\n \"name\": \"working_directory_0\",\n \"value\": \"mini\"\n },\n {\n \"id\": 13,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 14,\n \"type\": \"input\",\n \"name\": \"pseudopotentials\",\n \"value\": {\n \"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"\n }\n },\n {\n \"id\": 15,\n \"type\": \"input\",\n \"name\": \"kpts\",\n \"value\": [\n 3,\n 3,\n 3\n ]\n },\n {\n \"id\": 16,\n \"type\": \"input\",\n \"name\": \"calculation_0\",\n \"value\": \"vc-relax\"\n },\n {\n \"id\": 17,\n \"type\": \"input\",\n \"name\": \"smearing\",\n \"value\": 0.02\n },\n {\n \"id\": 18,\n \"type\": \"input\",\n \"name\": \"strain_lst\",\n \"value\": [\n 0.9,\n 0.9500000000000001,\n 1.0,\n 1.05,\n 1.1\n ]\n },\n {\n \"id\": 19,\n \"type\": \"input\",\n \"name\": \"working_directory_1\",\n \"value\": \"strain_0\"\n },\n {\n \"id\": 20,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 21,\n \"type\": \"input\",\n \"name\": \"calculation_1\",\n \"value\": \"scf\"\n },\n {\n \"id\": 22,\n \"type\": \"input\",\n \"name\": \"working_directory_2\",\n \"value\": \"strain_1\"\n },\n {\n \"id\": 23,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 24,\n \"type\": \"input\",\n \"name\": \"working_directory_3\",\n \"value\": \"strain_2\"\n },\n {\n \"id\": 25,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 26,\n \"type\": \"input\",\n \"name\": \"working_directory_4\",\n \"value\": \"strain_3\"\n },\n {\n \"id\": 27,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 28,\n \"type\": \"input\",\n \"name\": \"working_directory_5\",\n \"value\": \"strain_4\"\n },\n {\n \"id\": 29,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 30,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 31,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 32,\n \"type\": \"output\",\n \"name\": \"result\"\n }\n ],\n \"edges\": [\n {\n \"target\": 0,\n \"targetPort\": \"element\",\n \"source\": 9,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"a\",\n \"source\": 10,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"cubic\",\n \"source\": 11,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"working_directory\",\n \"source\": 12,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"structure\",\n \"source\": 0,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 14,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"kpts\",\n \"source\": 15,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"calculation\",\n \"source\": 16,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"smearing\",\n \"source\": 17,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"input_dict\",\n \"source\": 13,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"structure\",\n \"source\": 1,\n \"sourcePort\": \"structure\"\n },\n {\n \"target\": 2,\n \"targetPort\": \"strain_lst\",\n \"source\": 18,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"working_directory\",\n \"source\": 19,\n \"sourcePort\": null\n },\n {\n \"target\": 20,\n \"targetPort\": \"structure\",\n \"source\": 2,\n \"sourcePort\": \"s_0\"\n },\n {\n \"target\": 20,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 14,\n \"sourcePort\": null\n },\n {\n \"target\": 20,\n \"targetPort\": \"kpts\",\n \"source\": 15,\n \"sourcePort\": null\n },\n {\n \"target\": 20,\n \"targetPort\": \"calculation\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 20,\n \"targetPort\": \"smearing\",\n \"source\": 17,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"input_dict\",\n \"source\": 20,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"working_directory\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 23,\n \"targetPort\": \"structure\",\n \"source\": 2,\n \"sourcePort\": \"s_1\"\n },\n {\n \"target\": 23,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 14,\n \"sourcePort\": null\n },\n {\n \"target\": 23,\n \"targetPort\": \"kpts\",\n \"source\": 15,\n \"sourcePort\": null\n },\n {\n \"target\": 23,\n \"targetPort\": \"calculation\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 23,\n \"targetPort\": \"smearing\",\n \"source\": 17,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"input_dict\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"working_directory\",\n \"source\": 24,\n \"sourcePort\": null\n },\n {\n \"target\": 25,\n \"targetPort\": \"structure\",\n \"source\": 2,\n \"sourcePort\": \"s_2\"\n },\n {\n \"target\": 25,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 14,\n \"sourcePort\": null\n },\n {\n \"target\": 25,\n \"targetPort\": \"kpts\",\n \"source\": 15,\n \"sourcePort\": null\n },\n {\n \"target\": 25,\n \"targetPort\": \"calculation\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 25,\n \"targetPort\": \"smearing\",\n \"source\": 17,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"input_dict\",\n \"source\": 25,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"working_directory\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 27,\n \"targetPort\": \"structure\",\n \"source\": 2,\n \"sourcePort\": \"s_3\"\n },\n {\n \"target\": 27,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 14,\n \"sourcePort\": null\n },\n {\n \"target\": 27,\n \"targetPort\": \"kpts\",\n \"source\": 15,\n \"sourcePort\": null\n },\n {\n \"target\": 27,\n \"targetPort\": \"calculation\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 27,\n \"targetPort\": \"smearing\",\n \"source\": 17,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"input_dict\",\n \"source\": 27,\n \"sourcePort\": null\n },\n {\n \"target\": 7,\n \"targetPort\": \"working_directory\",\n \"source\": 28,\n \"sourcePort\": null\n },\n {\n \"target\": 29,\n \"targetPort\": \"structure\",\n \"source\": 2,\n \"sourcePort\": \"s_4\"\n },\n {\n \"target\": 29,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 14,\n \"sourcePort\": null\n },\n {\n \"target\": 29,\n \"targetPort\": \"kpts\",\n \"source\": 15,\n \"sourcePort\": null\n },\n {\n \"target\": 29,\n \"targetPort\": \"calculation\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 29,\n \"targetPort\": \"smearing\",\n \"source\": 17,\n \"sourcePort\": null\n },\n {\n \"target\": 7,\n \"targetPort\": \"input_dict\",\n \"source\": 29,\n \"sourcePort\": null\n },\n {\n \"target\": 30,\n \"targetPort\": \"0\",\n \"source\": 3,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 30,\n \"targetPort\": \"1\",\n \"source\": 4,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 30,\n \"targetPort\": \"2\",\n \"source\": 5,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 30,\n \"targetPort\": \"3\",\n \"source\": 6,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 30,\n \"targetPort\": \"4\",\n \"source\": 7,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 8,\n \"targetPort\": \"volume_lst\",\n \"source\": 30,\n \"sourcePort\": null\n },\n {\n \"target\": 31,\n \"targetPort\": \"0\",\n \"source\": 3,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 31,\n \"targetPort\": \"1\",\n \"source\": 4,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 31,\n \"targetPort\": \"2\",\n \"source\": 5,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 31,\n \"targetPort\": \"3\",\n \"source\": 6,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 31,\n \"targetPort\": \"4\",\n \"source\": 7,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 8,\n \"targetPort\": \"energy_lst\",\n \"source\": 31,\n \"sourcePort\": null\n },\n {\n \"target\": 32,\n \"targetPort\": null,\n \"source\": 8,\n \"sourcePort\": null\n }\n ]\n}"}],"execution_count":15},{"cell_type":"markdown","source":"## Load Workflow with aiida\n\nNow, we can import the workflow, run it with `aiida` and plot the \"Energy vs. Volume\" curve.","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":"e9bb01de73ff4284a7578d7064ae369f"}},"metadata":{}}],"execution_count":20},{"cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"05/26/2025 04:59:05 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n05/26/2025 04:59:05 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PyFunction, finished.\n05/26/2025 04:59:05 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10\n05/26/2025 04:59:06 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n05/26/2025 04:59:06 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\n[jupyter-pythonworkflow-fl--x---218119f8:02569] 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\n05/26/2025 04:59:56 AM <2497> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n05/26/2025 04:59:57 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: calculate_qe2, type: PyFunction, finished.\n05/26/2025 04:59:57 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n05/26/2025 04:59:58 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: generate_structures3, type: PyFunction, finished.\n05/26/2025 04:59:58 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict11,get_dict12,get_dict13,get_dict14,get_dict15\n05/26/2025 04:59:58 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: get_dict11, type: PyFunction, finished.\n05/26/2025 04:59:58 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,get_dict12,get_dict13,get_dict14,get_dict15\n[jupyter-pythonworkflow-fl--x---218119f8:02586] 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\n05/26/2025 05:00:10 AM <2497> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:00:10 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: calculate_qe4, type: PyFunction, finished.\n05/26/2025 05:00:10 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict13,get_dict14,get_dict15\n05/26/2025 05:00:11 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n05/26/2025 05:00:11 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe5,get_dict13,get_dict14,get_dict15\n[jupyter-pythonworkflow-fl--x---218119f8:02596] 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\n05/26/2025 05:00:22 AM <2497> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:00:22 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: calculate_qe5, type: PyFunction, finished.\n05/26/2025 05:00:22 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict13,get_dict14,get_dict15\n05/26/2025 05:00:23 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: get_dict13, type: PyFunction, finished.\n05/26/2025 05:00:23 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6,get_dict14,get_dict15\n[jupyter-pythonworkflow-fl--x---218119f8:02606] 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\n05/26/2025 05:00:35 AM <2497> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:00:35 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n05/26/2025 05:00:35 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict15\n05/26/2025 05:00:35 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n05/26/2025 05:00:36 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe7,get_dict15\n[jupyter-pythonworkflow-fl--x---218119f8:02616] 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\n05/26/2025 05:00:50 AM <2497> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:00:51 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: calculate_qe7, type: PyFunction, finished.\n05/26/2025 05:00:51 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict15\n05/26/2025 05:00:51 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: get_dict15, type: PyFunction, finished.\n05/26/2025 05:00:51 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe8\n[jupyter-pythonworkflow-fl--x---218119f8:02626] 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\n05/26/2025 05:01:05 AM <2497> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:01:05 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PyFunction, finished.\n05/26/2025 05:01:06 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list16,get_list17\n05/26/2025 05:01:06 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: get_list16, type: PyFunction, finished.\n05/26/2025 05:01:07 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n05/26/2025 05:01:07 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n05/26/2025 05:01:07 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n05/26/2025 05:01:08 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve9, type: PyFunction, finished.\n05/26/2025 05:01:08 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/26/2025 05:01:08 AM <2497> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [111|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\n\nAnd we can repeat the same process using `pyiron`.","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_7a6b0a5d731ab6c2313227f09941d617\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521b110>\n\n\n\nvolume_lst_30c54979ac77823618f2e69329ff2e23\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521aea0>\n\n\n\nvolume_lst_30c54979ac77823618f2e69329ff2e23->create_function_job_7a6b0a5d731ab6c2313227f09941d617\n\n\n\n\n\n0_b28c4ab19cf80aceb6ea9905c5579cdf\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521a900>\n\n\n\n0_b28c4ab19cf80aceb6ea9905c5579cdf->volume_lst_30c54979ac77823618f2e69329ff2e23\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_b28c4ab19cf80aceb6ea9905c5579cdf\n\n\n\n\n\n0_31407cd5438b8f801835dcb5c1b4d41c\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521a2d0>\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_31407cd5438b8f801835dcb5c1b4d41c\n\n\n\n\n\nenergy_lst_7a67d028a4fc3e7b717ea0eabdc78b61\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521a870>\n\n\n\n0_31407cd5438b8f801835dcb5c1b4d41c->energy_lst_7a67d028a4fc3e7b717ea0eabdc78b61\n\n\n\n\n\ninput_dict_26015174619bcf580cff994859503441\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72e615219610>\n\n\n\ninput_dict_26015174619bcf580cff994859503441->0_b28c4ab19cf80aceb6ea9905c5579cdf\n\n\n\n\n\ninput_dict_26015174619bcf580cff994859503441->0_31407cd5438b8f801835dcb5c1b4d41c\n\n\n\n\n\nstructure_d68ff2adbab972340efae09bf2dca5b6\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72e615219340>\n\n\n\nstructure_d68ff2adbab972340efae09bf2dca5b6->input_dict_26015174619bcf580cff994859503441\n\n\n\n\n\nstructure_f26c3fb8bc87bf85ed5296f40ec2ae34\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72e6154ef320>\n\n\n\nstructure_f26c3fb8bc87bf85ed5296f40ec2ae34->structure_d68ff2adbab972340efae09bf2dca5b6\n\n\n\n\n\nstructure_6c6a71df64a4775eb5b2b6627712d17c\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72e615219010>\n\n\n\nstructure_f26c3fb8bc87bf85ed5296f40ec2ae34->structure_6c6a71df64a4775eb5b2b6627712d17c\n\n\n\n\n\nstructure_535ac9ea932cf7dd1ea2a048ff184ef9\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72e615218ce0>\n\n\n\nstructure_f26c3fb8bc87bf85ed5296f40ec2ae34->structure_535ac9ea932cf7dd1ea2a048ff184ef9\n\n\n\n\n\nstructure_b52cf29645cbdc73b2126ad614a6748d\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72e6152189b0>\n\n\n\nstructure_f26c3fb8bc87bf85ed5296f40ec2ae34->structure_b52cf29645cbdc73b2126ad614a6748d\n\n\n\n\n\nstructure_8b6656321f1e07cd30f21bb9d083f734\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72e615218680>\n\n\n\nstructure_f26c3fb8bc87bf85ed5296f40ec2ae34->structure_8b6656321f1e07cd30f21bb9d083f734\n\n\n\n\n\ninput_dict_aa3da715c96cd1fef134c69b1da72e42\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72e6152192b0>\n\n\n\nstructure_6c6a71df64a4775eb5b2b6627712d17c->input_dict_aa3da715c96cd1fef134c69b1da72e42\n\n\n\n\n\ninput_dict_eac440c283c1a2924bb89ecb82a35639\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72e615218f80>\n\n\n\nstructure_535ac9ea932cf7dd1ea2a048ff184ef9->input_dict_eac440c283c1a2924bb89ecb82a35639\n\n\n\n\n\ninput_dict_523110518563cadc66dc6aefb11923b8\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72e615218c50>\n\n\n\nstructure_b52cf29645cbdc73b2126ad614a6748d->input_dict_523110518563cadc66dc6aefb11923b8\n\n\n\n\n\ninput_dict_20011bd02b7fe4c3fa64102f5cee0ce1\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72e615218920>\n\n\n\nstructure_8b6656321f1e07cd30f21bb9d083f734->input_dict_20011bd02b7fe4c3fa64102f5cee0ce1\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_f26c3fb8bc87bf85ed5296f40ec2ae34\n\n\n\n\n\ninput_dict_f2214e5b325d98ae04c3309fcba1e8c7\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x72e6151fbbf0>\n\n\n\ninput_dict_f2214e5b325d98ae04c3309fcba1e8c7->structure_f26c3fb8bc87bf85ed5296f40ec2ae34\n\n\n\n\n\nstructure_85578fbee37b882dfe6c61e46c6e3e6f\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x72e6151fbc80>\n\n\n\nstructure_85578fbee37b882dfe6c61e46c6e3e6f->input_dict_f2214e5b325d98ae04c3309fcba1e8c7\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_85578fbee37b882dfe6c61e46c6e3e6f\n\n\n\n\n\na_457b6d376c6fce696df148a385afa46d\n\na=4.04\n\n\n\na_457b6d376c6fce696df148a385afa46d->structure_85578fbee37b882dfe6c61e46c6e3e6f\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_85578fbee37b882dfe6c61e46c6e3e6f\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_26015174619bcf580cff994859503441\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_f2214e5b325d98ae04c3309fcba1e8c7\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_aa3da715c96cd1fef134c69b1da72e42\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_eac440c283c1a2924bb89ecb82a35639\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_523110518563cadc66dc6aefb11923b8\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_20011bd02b7fe4c3fa64102f5cee0ce1\n\n\n\n\n\n1_7641bae76279fbdc2c20282392d6c910\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521a8d0>\n\n\n\ninput_dict_aa3da715c96cd1fef134c69b1da72e42->1_7641bae76279fbdc2c20282392d6c910\n\n\n\n\n\n1_6a3f07c7438420109a6c39351d9758ad\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521a2a0>\n\n\n\ninput_dict_aa3da715c96cd1fef134c69b1da72e42->1_6a3f07c7438420109a6c39351d9758ad\n\n\n\n\n\n2_3cb49005be6d0d7ed322544b87487017\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521a6f0>\n\n\n\ninput_dict_eac440c283c1a2924bb89ecb82a35639->2_3cb49005be6d0d7ed322544b87487017\n\n\n\n\n\n2_98818efec695006665bf7df606718768\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x72e615219df0>\n\n\n\ninput_dict_eac440c283c1a2924bb89ecb82a35639->2_98818efec695006665bf7df606718768\n\n\n\n\n\n3_139a6bb55cab1b6d5192deadc359db9a\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521aa50>\n\n\n\ninput_dict_523110518563cadc66dc6aefb11923b8->3_139a6bb55cab1b6d5192deadc359db9a\n\n\n\n\n\n3_9d10a16dc50af676367547dceb0d00b7\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521a420>\n\n\n\ninput_dict_523110518563cadc66dc6aefb11923b8->3_9d10a16dc50af676367547dceb0d00b7\n\n\n\n\n\n4_8c659057d9f7b0eb48589698a769c3e3\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521ab10>\n\n\n\ninput_dict_20011bd02b7fe4c3fa64102f5cee0ce1->4_8c659057d9f7b0eb48589698a769c3e3\n\n\n\n\n\n4_2ab7c060eeaf5356ef9c2df021a5051d\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x72e61521a4e0>\n\n\n\ninput_dict_20011bd02b7fe4c3fa64102f5cee0ce1->4_2ab7c060eeaf5356ef9c2df021a5051d\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_26015174619bcf580cff994859503441\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_f2214e5b325d98ae04c3309fcba1e8c7\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_aa3da715c96cd1fef134c69b1da72e42\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_eac440c283c1a2924bb89ecb82a35639\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_523110518563cadc66dc6aefb11923b8\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_20011bd02b7fe4c3fa64102f5cee0ce1\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_f2214e5b325d98ae04c3309fcba1e8c7\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_26015174619bcf580cff994859503441\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_f2214e5b325d98ae04c3309fcba1e8c7\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_aa3da715c96cd1fef134c69b1da72e42\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_eac440c283c1a2924bb89ecb82a35639\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_523110518563cadc66dc6aefb11923b8\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_20011bd02b7fe4c3fa64102f5cee0ce1\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_d68ff2adbab972340efae09bf2dca5b6\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_6c6a71df64a4775eb5b2b6627712d17c\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_535ac9ea932cf7dd1ea2a048ff184ef9\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_b52cf29645cbdc73b2126ad614a6748d\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_8b6656321f1e07cd30f21bb9d083f734\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_26015174619bcf580cff994859503441\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_aa3da715c96cd1fef134c69b1da72e42\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_eac440c283c1a2924bb89ecb82a35639\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_523110518563cadc66dc6aefb11923b8\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_20011bd02b7fe4c3fa64102f5cee0ce1\n\n\n\n\n\n1_7641bae76279fbdc2c20282392d6c910->volume_lst_30c54979ac77823618f2e69329ff2e23\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_7641bae76279fbdc2c20282392d6c910\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_6a3f07c7438420109a6c39351d9758ad\n\n\n\n\n\n1_6a3f07c7438420109a6c39351d9758ad->energy_lst_7a67d028a4fc3e7b717ea0eabdc78b61\n\n\n\n\n\n2_3cb49005be6d0d7ed322544b87487017->volume_lst_30c54979ac77823618f2e69329ff2e23\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_3cb49005be6d0d7ed322544b87487017\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_98818efec695006665bf7df606718768\n\n\n\n\n\n2_98818efec695006665bf7df606718768->energy_lst_7a67d028a4fc3e7b717ea0eabdc78b61\n\n\n\n\n\n3_139a6bb55cab1b6d5192deadc359db9a->volume_lst_30c54979ac77823618f2e69329ff2e23\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_139a6bb55cab1b6d5192deadc359db9a\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_9d10a16dc50af676367547dceb0d00b7\n\n\n\n\n\n3_9d10a16dc50af676367547dceb0d00b7->energy_lst_7a67d028a4fc3e7b717ea0eabdc78b61\n\n\n\n\n\n4_8c659057d9f7b0eb48589698a769c3e3->volume_lst_30c54979ac77823618f2e69329ff2e23\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_8c659057d9f7b0eb48589698a769c3e3\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_2ab7c060eeaf5356ef9c2df021a5051d\n\n\n\n\n\n4_2ab7c060eeaf5356ef9c2df021a5051d->energy_lst_7a67d028a4fc3e7b717ea0eabdc78b61\n\n\n\n\n\nenergy_lst_7a67d028a4fc3e7b717ea0eabdc78b61->create_function_job_7a6b0a5d731ab6c2313227f09941d617\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_2ca4aeae204ceaa28593c93054b07908 was saved and received the ID: 1\nThe job get_dict_1e47509b88d63a21fd421686554c8f4a was saved and received the ID: 2\nThe job calculate_qe_411e578f2700d09ba2df9a4c682b4582 was saved and received the ID: 3\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02656] 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_550221ce8aa27fbdf50dbf13e059ce24 was saved and received the ID: 4\nThe job get_dict_68a4c6ff00bffbd8f249d6022ec8abb2 was saved and received the ID: 5\nThe job calculate_qe_8e11594357cf470d576634593684ae66 was saved and received the ID: 6\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02670] 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_64aacd2badb7b0a126a5662dabd1ce0c was saved and received the ID: 7\nThe job calculate_qe_95276d45f24b5e6e645aab15a3b853df was saved and received the ID: 8\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02680] 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_7079cab3db71ad163cfc2e39fcf98688 was saved and received the ID: 9\nThe job calculate_qe_3c1dbc8b42e651e328ae99033a426980 was saved and received the ID: 10\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02690] 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_0e89a9ec0ef1fd918240aa8d2dc44178 was saved and received the ID: 11\nThe job calculate_qe_2550d6d1ccd7ab3d68c384d3887a3fe3 was saved and received the ID: 12\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02700] 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_2ac7f25535cfa6c6850c0f9af197b541 was saved and received the ID: 13\nThe job calculate_qe_10d82eb36a247279f62c63b70e1a55d2 was saved and received the ID: 14\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02710] 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_e21c87f95f3795055e7214eec6d7c927 was saved and received the ID: 15\nThe job get_list_61df540ee8a34a06782249cbe8834865 was saved and received the ID: 16\nThe job plot_energy_volume_curve_bbe171c30a8de804ba8d4227e65e62bf 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":"markdown","source":"## Load Workflow with pyiron_workflow","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.pyiron_workflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":26},{"cell_type":"code","source":"wf = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":27},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"wf.get_bulk_structure.inputs.a.value = 4.05","metadata":{"trusted":true},"outputs":[],"execution_count":28},{"cell_type":"code","source":"wf.draw(size=(10,10))","metadata":{"trusted":true},"outputs":[{"execution_count":29,"output_type":"execute_result","data":{"image/svg+xml":"\n\n\n\n\n\nclusterjobflow_qe\n\njobflow_qe: Workflow\n\nclusterjobflow_qeInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeget_bulk_structure\n\n\n\n\n\n\n\nget_bulk_structure: get_bulk_structure\n\n\nclusterjobflow_qeget_bulk_structureInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeget_bulk_structureOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qecalculate_qe_0\n\n\n\n\n\n\n\ncalculate_qe_0: calculate_qe\n\n\nclusterjobflow_qecalculate_qe_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qecalculate_qe_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qegenerate_structures\n\n\n\n\n\n\n\ngenerate_structures: generate_structures\n\n\nclusterjobflow_qegenerate_structuresInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qegenerate_structuresOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qecalculate_qe_1\n\n\n\n\n\n\n\ncalculate_qe_1: calculate_qe\n\n\nclusterjobflow_qecalculate_qe_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qecalculate_qe_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qecalculate_qe_2\n\n\n\n\n\n\n\ncalculate_qe_2: calculate_qe\n\n\nclusterjobflow_qecalculate_qe_2Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qecalculate_qe_2OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qecalculate_qe_3\n\n\n\n\n\n\n\ncalculate_qe_3: calculate_qe\n\n\nclusterjobflow_qecalculate_qe_3Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qecalculate_qe_3OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qecalculate_qe_4\n\n\n\n\n\n\n\ncalculate_qe_4: calculate_qe\n\n\nclusterjobflow_qecalculate_qe_4Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qecalculate_qe_4OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qecalculate_qe_5\n\n\n\n\n\n\n\ncalculate_qe_5: calculate_qe\n\n\nclusterjobflow_qecalculate_qe_5Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qecalculate_qe_5OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeplot_energy_volume_curve\n\n\n\n\n\n\n\nplot_energy_volume_curve: plot_energy_volume_curve\n\n\nclusterjobflow_qeplot_energy_volume_curveInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeplot_energy_volume_curveOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeget_dict_0\n\n\n\n\n\n\n\nget_dict_0: get_dict\n\n\nclusterjobflow_qeget_dict_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeget_dict_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeget_dict_1\n\n\n\n\n\n\n\nget_dict_1: get_dict\n\n\nclusterjobflow_qeget_dict_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeget_dict_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeget_dict_2\n\n\n\n\n\n\n\nget_dict_2: get_dict\n\n\nclusterjobflow_qeget_dict_2Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeget_dict_2OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeget_dict_3\n\n\n\n\n\n\n\nget_dict_3: get_dict\n\n\nclusterjobflow_qeget_dict_3Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeget_dict_3OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeget_dict_4\n\n\n\n\n\n\n\nget_dict_4: get_dict\n\n\nclusterjobflow_qeget_dict_4Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeget_dict_4OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeget_dict_5\n\n\n\n\n\n\n\nget_dict_5: get_dict\n\n\nclusterjobflow_qeget_dict_5Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeget_dict_5OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeget_list_0\n\n\n\n\n\n\n\nget_list_0: get_list\n\n\nclusterjobflow_qeget_list_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeget_list_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeget_list_1\n\n\n\n\n\n\n\nget_list_1: get_list\n\n\nclusterjobflow_qeget_list_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeget_list_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325\n\n\n\n\n\n\n\ninjected_GetItem_5694145002635648325: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365\n\n\n\n\n\n\n\ninjected_GetItem_m7622113868385731365: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791\n\n\n\n\n\n\n\ninjected_GetItem_m7790390688026446791: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348\n\n\n\n\n\n\n\ninjected_GetItem_5456709381594516348: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486\n\n\n\n\n\n\n\ninjected_GetItem_4383803830111319486: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834\n\n\n\n\n\n\n\ninjected_GetItem_m3166596768653844834: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303\n\n\n\n\n\n\n\ninjected_GetItem_4953877338424805303: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943\n\n\n\n\n\n\n\ninjected_GetItem_5783905775072188943: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119\n\n\n\n\n\n\n\ninjected_GetItem_7844378773575257119: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799\n\n\n\n\n\n\n\ninjected_GetItem_7793121321835543799: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898\n\n\n\n\n\n\n\ninjected_GetItem_m4457864957213635898: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240\n\n\n\n\n\n\n\ninjected_GetItem_m4756093589586022240: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325\n\n\n\n\n\n\n\ninjected_GetItem_m8892127622114284325: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342\n\n\n\n\n\n\n\ninjected_GetItem_7481934391931090342: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338\n\n\n\n\n\n\n\ninjected_GetItem_1478812047534775338: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138\n\n\n\n\n\n\n\ninjected_GetItem_m6581548438773794138: GetItem\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\n\nclusterjobflow_qeInputsrun\n\nrun\n\n\n\nclusterjobflow_qeOutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeInputsget_bulk_structure__element\n\nget_bulk_structure__element\n\n\n\nclusterjobflow_qeget_bulk_structureInputselement\n\nelement\n\n\n\nclusterjobflow_qeInputsget_bulk_structure__element->clusterjobflow_qeget_bulk_structureInputselement\n\n\n\n\n\n\nclusterjobflow_qeInputsget_bulk_structure__a\n\nget_bulk_structure__a\n\n\n\nclusterjobflow_qeget_bulk_structureInputsa\n\na\n\n\n\nclusterjobflow_qeInputsget_bulk_structure__a->clusterjobflow_qeget_bulk_structureInputsa\n\n\n\n\n\n\nclusterjobflow_qeInputsget_bulk_structure__cubic\n\nget_bulk_structure__cubic\n\n\n\nclusterjobflow_qeget_bulk_structureInputscubic\n\ncubic\n\n\n\nclusterjobflow_qeInputsget_bulk_structure__cubic->clusterjobflow_qeget_bulk_structureInputscubic\n\n\n\n\n\n\nclusterjobflow_qeInputscalculate_qe_0__working_directory\n\ncalculate_qe_0__working_directory\n\n\n\nclusterjobflow_qecalculate_qe_0Inputsworking_directory\n\nworking_directory\n\n\n\nclusterjobflow_qeInputscalculate_qe_0__working_directory->clusterjobflow_qecalculate_qe_0Inputsworking_directory\n\n\n\n\n\n\nclusterjobflow_qeInputsgenerate_structures__strain_lst\n\ngenerate_structures__strain_lst\n\n\n\nclusterjobflow_qegenerate_structuresInputsstrain_lst\n\nstrain_lst\n\n\n\nclusterjobflow_qeInputsgenerate_structures__strain_lst->clusterjobflow_qegenerate_structuresInputsstrain_lst\n\n\n\n\n\n\nclusterjobflow_qeInputscalculate_qe_1__working_directory\n\ncalculate_qe_1__working_directory\n\n\n\nclusterjobflow_qecalculate_qe_1Inputsworking_directory\n\nworking_directory\n\n\n\nclusterjobflow_qeInputscalculate_qe_1__working_directory->clusterjobflow_qecalculate_qe_1Inputsworking_directory\n\n\n\n\n\n\nclusterjobflow_qeInputscalculate_qe_2__working_directory\n\ncalculate_qe_2__working_directory\n\n\n\nclusterjobflow_qecalculate_qe_2Inputsworking_directory\n\nworking_directory\n\n\n\nclusterjobflow_qeInputscalculate_qe_2__working_directory->clusterjobflow_qecalculate_qe_2Inputsworking_directory\n\n\n\n\n\n\nclusterjobflow_qeInputscalculate_qe_3__working_directory\n\ncalculate_qe_3__working_directory\n\n\n\nclusterjobflow_qecalculate_qe_3Inputsworking_directory\n\nworking_directory\n\n\n\nclusterjobflow_qeInputscalculate_qe_3__working_directory->clusterjobflow_qecalculate_qe_3Inputsworking_directory\n\n\n\n\n\n\nclusterjobflow_qeInputscalculate_qe_4__working_directory\n\ncalculate_qe_4__working_directory\n\n\n\nclusterjobflow_qecalculate_qe_4Inputsworking_directory\n\nworking_directory\n\n\n\nclusterjobflow_qeInputscalculate_qe_4__working_directory->clusterjobflow_qecalculate_qe_4Inputsworking_directory\n\n\n\n\n\n\nclusterjobflow_qeInputscalculate_qe_5__working_directory\n\ncalculate_qe_5__working_directory\n\n\n\nclusterjobflow_qecalculate_qe_5Inputsworking_directory\n\nworking_directory\n\n\n\nclusterjobflow_qeInputscalculate_qe_5__working_directory->clusterjobflow_qecalculate_qe_5Inputsworking_directory\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_0__pseudopotentials\n\nget_dict_0__pseudopotentials\n\n\n\nclusterjobflow_qeget_dict_0Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterjobflow_qeInputsget_dict_0__pseudopotentials->clusterjobflow_qeget_dict_0Inputspseudopotentials\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_0__kpts\n\nget_dict_0__kpts\n\n\n\nclusterjobflow_qeget_dict_0Inputskpts\n\nkpts\n\n\n\nclusterjobflow_qeInputsget_dict_0__kpts->clusterjobflow_qeget_dict_0Inputskpts\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_0__calculation\n\nget_dict_0__calculation\n\n\n\nclusterjobflow_qeget_dict_0Inputscalculation\n\ncalculation\n\n\n\nclusterjobflow_qeInputsget_dict_0__calculation->clusterjobflow_qeget_dict_0Inputscalculation\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_0__smearing\n\nget_dict_0__smearing\n\n\n\nclusterjobflow_qeget_dict_0Inputssmearing\n\nsmearing\n\n\n\nclusterjobflow_qeInputsget_dict_0__smearing->clusterjobflow_qeget_dict_0Inputssmearing\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_1__pseudopotentials\n\nget_dict_1__pseudopotentials\n\n\n\nclusterjobflow_qeget_dict_1Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterjobflow_qeInputsget_dict_1__pseudopotentials->clusterjobflow_qeget_dict_1Inputspseudopotentials\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_1__kpts\n\nget_dict_1__kpts\n\n\n\nclusterjobflow_qeget_dict_1Inputskpts\n\nkpts\n\n\n\nclusterjobflow_qeInputsget_dict_1__kpts->clusterjobflow_qeget_dict_1Inputskpts\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_1__calculation\n\nget_dict_1__calculation\n\n\n\nclusterjobflow_qeget_dict_1Inputscalculation\n\ncalculation\n\n\n\nclusterjobflow_qeInputsget_dict_1__calculation->clusterjobflow_qeget_dict_1Inputscalculation\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_1__smearing\n\nget_dict_1__smearing\n\n\n\nclusterjobflow_qeget_dict_1Inputssmearing\n\nsmearing\n\n\n\nclusterjobflow_qeInputsget_dict_1__smearing->clusterjobflow_qeget_dict_1Inputssmearing\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_2__pseudopotentials\n\nget_dict_2__pseudopotentials\n\n\n\nclusterjobflow_qeget_dict_2Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterjobflow_qeInputsget_dict_2__pseudopotentials->clusterjobflow_qeget_dict_2Inputspseudopotentials\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_2__kpts\n\nget_dict_2__kpts\n\n\n\nclusterjobflow_qeget_dict_2Inputskpts\n\nkpts\n\n\n\nclusterjobflow_qeInputsget_dict_2__kpts->clusterjobflow_qeget_dict_2Inputskpts\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_2__calculation\n\nget_dict_2__calculation\n\n\n\nclusterjobflow_qeget_dict_2Inputscalculation\n\ncalculation\n\n\n\nclusterjobflow_qeInputsget_dict_2__calculation->clusterjobflow_qeget_dict_2Inputscalculation\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_2__smearing\n\nget_dict_2__smearing\n\n\n\nclusterjobflow_qeget_dict_2Inputssmearing\n\nsmearing\n\n\n\nclusterjobflow_qeInputsget_dict_2__smearing->clusterjobflow_qeget_dict_2Inputssmearing\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_3__pseudopotentials\n\nget_dict_3__pseudopotentials\n\n\n\nclusterjobflow_qeget_dict_3Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterjobflow_qeInputsget_dict_3__pseudopotentials->clusterjobflow_qeget_dict_3Inputspseudopotentials\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_3__kpts\n\nget_dict_3__kpts\n\n\n\nclusterjobflow_qeget_dict_3Inputskpts\n\nkpts\n\n\n\nclusterjobflow_qeInputsget_dict_3__kpts->clusterjobflow_qeget_dict_3Inputskpts\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_3__calculation\n\nget_dict_3__calculation\n\n\n\nclusterjobflow_qeget_dict_3Inputscalculation\n\ncalculation\n\n\n\nclusterjobflow_qeInputsget_dict_3__calculation->clusterjobflow_qeget_dict_3Inputscalculation\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_3__smearing\n\nget_dict_3__smearing\n\n\n\nclusterjobflow_qeget_dict_3Inputssmearing\n\nsmearing\n\n\n\nclusterjobflow_qeInputsget_dict_3__smearing->clusterjobflow_qeget_dict_3Inputssmearing\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_4__pseudopotentials\n\nget_dict_4__pseudopotentials\n\n\n\nclusterjobflow_qeget_dict_4Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterjobflow_qeInputsget_dict_4__pseudopotentials->clusterjobflow_qeget_dict_4Inputspseudopotentials\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_4__kpts\n\nget_dict_4__kpts\n\n\n\nclusterjobflow_qeget_dict_4Inputskpts\n\nkpts\n\n\n\nclusterjobflow_qeInputsget_dict_4__kpts->clusterjobflow_qeget_dict_4Inputskpts\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_4__calculation\n\nget_dict_4__calculation\n\n\n\nclusterjobflow_qeget_dict_4Inputscalculation\n\ncalculation\n\n\n\nclusterjobflow_qeInputsget_dict_4__calculation->clusterjobflow_qeget_dict_4Inputscalculation\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_4__smearing\n\nget_dict_4__smearing\n\n\n\nclusterjobflow_qeget_dict_4Inputssmearing\n\nsmearing\n\n\n\nclusterjobflow_qeInputsget_dict_4__smearing->clusterjobflow_qeget_dict_4Inputssmearing\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_5__pseudopotentials\n\nget_dict_5__pseudopotentials\n\n\n\nclusterjobflow_qeget_dict_5Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterjobflow_qeInputsget_dict_5__pseudopotentials->clusterjobflow_qeget_dict_5Inputspseudopotentials\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_5__kpts\n\nget_dict_5__kpts\n\n\n\nclusterjobflow_qeget_dict_5Inputskpts\n\nkpts\n\n\n\nclusterjobflow_qeInputsget_dict_5__kpts->clusterjobflow_qeget_dict_5Inputskpts\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_5__calculation\n\nget_dict_5__calculation\n\n\n\nclusterjobflow_qeget_dict_5Inputscalculation\n\ncalculation\n\n\n\nclusterjobflow_qeInputsget_dict_5__calculation->clusterjobflow_qeget_dict_5Inputscalculation\n\n\n\n\n\n\nclusterjobflow_qeInputsget_dict_5__smearing\n\nget_dict_5__smearing\n\n\n\nclusterjobflow_qeget_dict_5Inputssmearing\n\nsmearing\n\n\n\nclusterjobflow_qeInputsget_dict_5__smearing->clusterjobflow_qeget_dict_5Inputssmearing\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_5694145002635648325__item\n\ninjected_GetItem_5694145002635648325__item\n\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_5694145002635648325__item->clusterjobflow_qeinjected_GetItem_5694145002635648325Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m7622113868385731365__item\n\ninjected_GetItem_m7622113868385731365__item\n\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m7622113868385731365__item->clusterjobflow_qeinjected_GetItem_m7622113868385731365Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m7790390688026446791__item\n\ninjected_GetItem_m7790390688026446791__item\n\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m7790390688026446791__item->clusterjobflow_qeinjected_GetItem_m7790390688026446791Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_5456709381594516348__item\n\ninjected_GetItem_5456709381594516348__item\n\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_5456709381594516348__item->clusterjobflow_qeinjected_GetItem_5456709381594516348Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_4383803830111319486__item\n\ninjected_GetItem_4383803830111319486__item\n\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_4383803830111319486__item->clusterjobflow_qeinjected_GetItem_4383803830111319486Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m3166596768653844834__item\n\ninjected_GetItem_m3166596768653844834__item\n\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m3166596768653844834__item->clusterjobflow_qeinjected_GetItem_m3166596768653844834Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_4953877338424805303__item\n\ninjected_GetItem_4953877338424805303__item\n\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_4953877338424805303__item->clusterjobflow_qeinjected_GetItem_4953877338424805303Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_5783905775072188943__item\n\ninjected_GetItem_5783905775072188943__item\n\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_5783905775072188943__item->clusterjobflow_qeinjected_GetItem_5783905775072188943Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_7844378773575257119__item\n\ninjected_GetItem_7844378773575257119__item\n\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_7844378773575257119__item->clusterjobflow_qeinjected_GetItem_7844378773575257119Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_7793121321835543799__item\n\ninjected_GetItem_7793121321835543799__item\n\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_7793121321835543799__item->clusterjobflow_qeinjected_GetItem_7793121321835543799Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m4457864957213635898__item\n\ninjected_GetItem_m4457864957213635898__item\n\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m4457864957213635898__item->clusterjobflow_qeinjected_GetItem_m4457864957213635898Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m4756093589586022240__item\n\ninjected_GetItem_m4756093589586022240__item\n\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m4756093589586022240__item->clusterjobflow_qeinjected_GetItem_m4756093589586022240Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m8892127622114284325__item\n\ninjected_GetItem_m8892127622114284325__item\n\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m8892127622114284325__item->clusterjobflow_qeinjected_GetItem_m8892127622114284325Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_7481934391931090342__item\n\ninjected_GetItem_7481934391931090342__item\n\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_7481934391931090342__item->clusterjobflow_qeinjected_GetItem_7481934391931090342Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_1478812047534775338__item\n\ninjected_GetItem_1478812047534775338__item\n\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_1478812047534775338__item->clusterjobflow_qeinjected_GetItem_1478812047534775338Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m6581548438773794138__item\n\ninjected_GetItem_m6581548438773794138__item\n\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138Inputsitem\n\nitem\n\n\n\nclusterjobflow_qeInputsinjected_GetItem_m6581548438773794138__item->clusterjobflow_qeinjected_GetItem_m6581548438773794138Inputsitem\n\n\n\n\n\n\nclusterjobflow_qeOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeOutputsWithInjectionplot_energy_volume_curve__plot_energy_volume_curve\n\nplot_energy_volume_curve__plot_energy_volume_curve\n\n\n\nclusterjobflow_qeget_bulk_structureInputsrun\n\nrun\n\n\n\nclusterjobflow_qeget_bulk_structureOutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeget_bulk_structureInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeget_bulk_structureOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeget_bulk_structureOutputsWithInjectionget_bulk_structure\n\nget_bulk_structure\n\n\n\nclusterjobflow_qeget_dict_0Inputsstructure\n\nstructure\n\n\n\nclusterjobflow_qeget_bulk_structureOutputsWithInjectionget_bulk_structure->clusterjobflow_qeget_dict_0Inputsstructure\n\n\n\n\n\n\nclusterjobflow_qecalculate_qe_0Inputsrun\n\nrun\n\n\n\nclusterjobflow_qecalculate_qe_0OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qecalculate_qe_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qecalculate_qe_0Inputsinput_dict\n\ninput_dict\n\n\n\nclusterjobflow_qecalculate_qe_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qecalculate_qe_0OutputsWithInjectioncalculate_qe_0\n\ncalculate_qe_0\n\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_0OutputsWithInjectioncalculate_qe_0->clusterjobflow_qeinjected_GetItem_5694145002635648325Inputsobj\n\n\n\n\n\n\nclusterjobflow_qegenerate_structuresInputsrun\n\nrun\n\n\n\nclusterjobflow_qegenerate_structuresOutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qegenerate_structuresInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qegenerate_structuresInputsstructure\n\nstructure\n\n\n\nclusterjobflow_qegenerate_structuresOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qegenerate_structuresOutputsWithInjectiongenerate_structures\n\ngenerate_structures\n\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365Inputsobj\n\nobj\n\n\n\nclusterjobflow_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterjobflow_qeinjected_GetItem_m7622113868385731365Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791Inputsobj\n\nobj\n\n\n\nclusterjobflow_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterjobflow_qeinjected_GetItem_m7790390688026446791Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348Inputsobj\n\nobj\n\n\n\nclusterjobflow_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterjobflow_qeinjected_GetItem_5456709381594516348Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486Inputsobj\n\nobj\n\n\n\nclusterjobflow_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterjobflow_qeinjected_GetItem_4383803830111319486Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834Inputsobj\n\nobj\n\n\n\nclusterjobflow_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterjobflow_qeinjected_GetItem_m3166596768653844834Inputsobj\n\n\n\n\n\n\nclusterjobflow_qecalculate_qe_1Inputsrun\n\nrun\n\n\n\nclusterjobflow_qecalculate_qe_1OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qecalculate_qe_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qecalculate_qe_1Inputsinput_dict\n\ninput_dict\n\n\n\nclusterjobflow_qecalculate_qe_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qecalculate_qe_1OutputsWithInjectioncalculate_qe_1\n\ncalculate_qe_1\n\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_1OutputsWithInjectioncalculate_qe_1->clusterjobflow_qeinjected_GetItem_4953877338424805303Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_1OutputsWithInjectioncalculate_qe_1->clusterjobflow_qeinjected_GetItem_m4756093589586022240Inputsobj\n\n\n\n\n\n\nclusterjobflow_qecalculate_qe_2Inputsrun\n\nrun\n\n\n\nclusterjobflow_qecalculate_qe_2OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qecalculate_qe_2Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qecalculate_qe_2Inputsinput_dict\n\ninput_dict\n\n\n\nclusterjobflow_qecalculate_qe_2OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qecalculate_qe_2OutputsWithInjectioncalculate_qe_2\n\ncalculate_qe_2\n\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_2OutputsWithInjectioncalculate_qe_2->clusterjobflow_qeinjected_GetItem_5783905775072188943Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_2OutputsWithInjectioncalculate_qe_2->clusterjobflow_qeinjected_GetItem_m8892127622114284325Inputsobj\n\n\n\n\n\n\nclusterjobflow_qecalculate_qe_3Inputsrun\n\nrun\n\n\n\nclusterjobflow_qecalculate_qe_3OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qecalculate_qe_3Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qecalculate_qe_3Inputsinput_dict\n\ninput_dict\n\n\n\nclusterjobflow_qecalculate_qe_3OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qecalculate_qe_3OutputsWithInjectioncalculate_qe_3\n\ncalculate_qe_3\n\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_3OutputsWithInjectioncalculate_qe_3->clusterjobflow_qeinjected_GetItem_7844378773575257119Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_3OutputsWithInjectioncalculate_qe_3->clusterjobflow_qeinjected_GetItem_7481934391931090342Inputsobj\n\n\n\n\n\n\nclusterjobflow_qecalculate_qe_4Inputsrun\n\nrun\n\n\n\nclusterjobflow_qecalculate_qe_4OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qecalculate_qe_4Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qecalculate_qe_4Inputsinput_dict\n\ninput_dict\n\n\n\nclusterjobflow_qecalculate_qe_4OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qecalculate_qe_4OutputsWithInjectioncalculate_qe_4\n\ncalculate_qe_4\n\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_4OutputsWithInjectioncalculate_qe_4->clusterjobflow_qeinjected_GetItem_7793121321835543799Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_4OutputsWithInjectioncalculate_qe_4->clusterjobflow_qeinjected_GetItem_1478812047534775338Inputsobj\n\n\n\n\n\n\nclusterjobflow_qecalculate_qe_5Inputsrun\n\nrun\n\n\n\nclusterjobflow_qecalculate_qe_5OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qecalculate_qe_5Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qecalculate_qe_5Inputsinput_dict\n\ninput_dict\n\n\n\nclusterjobflow_qecalculate_qe_5OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qecalculate_qe_5OutputsWithInjectioncalculate_qe_5\n\ncalculate_qe_5\n\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_5OutputsWithInjectioncalculate_qe_5->clusterjobflow_qeinjected_GetItem_m4457864957213635898Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138Inputsobj\n\nobj\n\n\n\nclusterjobflow_qecalculate_qe_5OutputsWithInjectioncalculate_qe_5->clusterjobflow_qeinjected_GetItem_m6581548438773794138Inputsobj\n\n\n\n\n\n\nclusterjobflow_qeplot_energy_volume_curveInputsrun\n\nrun\n\n\n\nclusterjobflow_qeplot_energy_volume_curveOutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeplot_energy_volume_curveInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeplot_energy_volume_curveInputsvolume_lst\n\nvolume_lst\n\n\n\nclusterjobflow_qeplot_energy_volume_curveInputsenergy_lst\n\nenergy_lst\n\n\n\nclusterjobflow_qeplot_energy_volume_curveOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeplot_energy_volume_curveOutputsWithInjectionplot_energy_volume_curve\n\nplot_energy_volume_curve\n\n\n\nclusterjobflow_qeplot_energy_volume_curveOutputsWithInjectionplot_energy_volume_curve->clusterjobflow_qeOutputsWithInjectionplot_energy_volume_curve__plot_energy_volume_curve\n\n\n\n\n\n\nclusterjobflow_qeget_dict_0Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeget_dict_0OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeget_dict_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeget_dict_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeget_dict_0OutputsWithInjectionget_dict_0\n\nget_dict_0\n\n\n\nclusterjobflow_qeget_dict_0OutputsWithInjectionget_dict_0->clusterjobflow_qecalculate_qe_0Inputsinput_dict\n\n\n\n\n\n\nclusterjobflow_qeget_dict_1Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeget_dict_1OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeget_dict_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeget_dict_1Inputsstructure\n\nstructure\n\n\n\nclusterjobflow_qeget_dict_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeget_dict_1OutputsWithInjectionget_dict_1\n\nget_dict_1\n\n\n\nclusterjobflow_qeget_dict_1OutputsWithInjectionget_dict_1->clusterjobflow_qecalculate_qe_1Inputsinput_dict\n\n\n\n\n\n\nclusterjobflow_qeget_dict_2Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeget_dict_2OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeget_dict_2Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeget_dict_2Inputsstructure\n\nstructure\n\n\n\nclusterjobflow_qeget_dict_2OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeget_dict_2OutputsWithInjectionget_dict_2\n\nget_dict_2\n\n\n\nclusterjobflow_qeget_dict_2OutputsWithInjectionget_dict_2->clusterjobflow_qecalculate_qe_2Inputsinput_dict\n\n\n\n\n\n\nclusterjobflow_qeget_dict_3Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeget_dict_3OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeget_dict_3Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeget_dict_3Inputsstructure\n\nstructure\n\n\n\nclusterjobflow_qeget_dict_3OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeget_dict_3OutputsWithInjectionget_dict_3\n\nget_dict_3\n\n\n\nclusterjobflow_qeget_dict_3OutputsWithInjectionget_dict_3->clusterjobflow_qecalculate_qe_3Inputsinput_dict\n\n\n\n\n\n\nclusterjobflow_qeget_dict_4Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeget_dict_4OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeget_dict_4Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeget_dict_4Inputsstructure\n\nstructure\n\n\n\nclusterjobflow_qeget_dict_4OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeget_dict_4OutputsWithInjectionget_dict_4\n\nget_dict_4\n\n\n\nclusterjobflow_qeget_dict_4OutputsWithInjectionget_dict_4->clusterjobflow_qecalculate_qe_4Inputsinput_dict\n\n\n\n\n\n\nclusterjobflow_qeget_dict_5Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeget_dict_5OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeget_dict_5Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeget_dict_5Inputsstructure\n\nstructure\n\n\n\nclusterjobflow_qeget_dict_5OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeget_dict_5OutputsWithInjectionget_dict_5\n\nget_dict_5\n\n\n\nclusterjobflow_qeget_dict_5OutputsWithInjectionget_dict_5->clusterjobflow_qecalculate_qe_5Inputsinput_dict\n\n\n\n\n\n\nclusterjobflow_qeget_list_0Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeget_list_0OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeget_list_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeget_list_0Inputss_0\n\ns_0\n\n\n\nclusterjobflow_qeget_list_0Inputss_1\n\ns_1\n\n\n\nclusterjobflow_qeget_list_0Inputss_2\n\ns_2\n\n\n\nclusterjobflow_qeget_list_0Inputss_3\n\ns_3\n\n\n\nclusterjobflow_qeget_list_0Inputss_4\n\ns_4\n\n\n\nclusterjobflow_qeget_list_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeget_list_0OutputsWithInjectionget_list_0\n\nget_list_0\n\n\n\nclusterjobflow_qeget_list_0OutputsWithInjectionget_list_0->clusterjobflow_qeplot_energy_volume_curveInputsvolume_lst\n\n\n\n\n\n\nclusterjobflow_qeget_list_1Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeget_list_1OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeget_list_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeget_list_1Inputss_0\n\ns_0\n\n\n\nclusterjobflow_qeget_list_1Inputss_1\n\ns_1\n\n\n\nclusterjobflow_qeget_list_1Inputss_2\n\ns_2\n\n\n\nclusterjobflow_qeget_list_1Inputss_3\n\ns_3\n\n\n\nclusterjobflow_qeget_list_1Inputss_4\n\ns_4\n\n\n\nclusterjobflow_qeget_list_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeget_list_1OutputsWithInjectionget_list_1\n\nget_list_1\n\n\n\nclusterjobflow_qeget_list_1OutputsWithInjectionget_list_1->clusterjobflow_qeplot_energy_volume_curveInputsenergy_lst\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_5694145002635648325OutputsWithInjectiongetitem->clusterjobflow_qegenerate_structuresInputsstructure\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_m7622113868385731365OutputsWithInjectiongetitem->clusterjobflow_qeget_dict_1Inputsstructure\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_m7790390688026446791OutputsWithInjectiongetitem->clusterjobflow_qeget_dict_2Inputsstructure\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_5456709381594516348OutputsWithInjectiongetitem->clusterjobflow_qeget_dict_3Inputsstructure\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_4383803830111319486OutputsWithInjectiongetitem->clusterjobflow_qeget_dict_4Inputsstructure\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_m3166596768653844834OutputsWithInjectiongetitem->clusterjobflow_qeget_dict_5Inputsstructure\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_4953877338424805303OutputsWithInjectiongetitem->clusterjobflow_qeget_list_0Inputss_0\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_5783905775072188943OutputsWithInjectiongetitem->clusterjobflow_qeget_list_0Inputss_1\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_7844378773575257119OutputsWithInjectiongetitem->clusterjobflow_qeget_list_0Inputss_2\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_7793121321835543799OutputsWithInjectiongetitem->clusterjobflow_qeget_list_0Inputss_3\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_m4457864957213635898OutputsWithInjectiongetitem->clusterjobflow_qeget_list_0Inputss_4\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_m4756093589586022240OutputsWithInjectiongetitem->clusterjobflow_qeget_list_1Inputss_0\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_m8892127622114284325OutputsWithInjectiongetitem->clusterjobflow_qeget_list_1Inputss_1\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_7481934391931090342OutputsWithInjectiongetitem->clusterjobflow_qeget_list_1Inputss_2\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_1478812047534775338OutputsWithInjectiongetitem->clusterjobflow_qeget_list_1Inputss_3\n\n\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138Inputsrun\n\nrun\n\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138OutputsWithInjectionran\n\nran\n\n\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterjobflow_qeinjected_GetItem_m6581548438773794138OutputsWithInjectiongetitem->clusterjobflow_qeget_list_1Inputss_4\n\n\n\n\n\n\n","text/plain":""},"metadata":{}}],"execution_count":29},{"cell_type":"code","source":"wf.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:02722] 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-pythonworkflow-fl--x---218119f8:02738] 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-pythonworkflow-fl--x---218119f8:02748] 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-pythonworkflow-fl--x---218119f8:02758] 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-pythonworkflow-fl--x---218119f8:02768] 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-pythonworkflow-fl--x---218119f8:02778] 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":30,"output_type":"execute_result","data":{"text/plain":"{'plot_energy_volume_curve__plot_energy_volume_curve': None}"},"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":30}]} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# jobflow" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "[`jobflow`](https://materialsproject.github.io/jobflow/index.html) and [`atomate2`](https://materialsproject.github.io/atomate2/index.html) are key packages of the [Materials Project](https://materialsproject.org/) . `jobflow` was especially designed to simplify the execution of dynamic workflows -- when the actual number of jobs is dynamically determined upon runtime instead of being statically fixed before running the workflow(s). `jobflow`'s overall flexibility allows for building workflows that go beyond the usage in materials science. `jobflow` serves as the basis of `atomate2`, which implements data generation workflows in the context of materials science and will be used for data generation in the Materials Project in the future." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define workflow with jobflow\n", + "\n", + "We start by importing the job decorator and Flow class from `jobflow` and the respective PWD tools." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from jobflow import job, Flow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.jobflow import write_workflow_json" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "## Quantum Espresso Workflow\n", + "We will use the knowledge from the previous arithmetic workflow example to create the Quantum Espresso-related tasks for calculating an \"Energy vs. Volume\" curve. It’s important to note that this is only a basic implementation, and further extensions towards data validation or for a simplified user experience can be added. For example, one can typically configure run commands for quantum-chemical programs via configuration files in atomate2." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from 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", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "workflow_json_filename = \"jobflow_qe.json\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calculate_qe = job(_calculate_qe)\n", + "generate_structures = job(_generate_structures)\n", + "plot_energy_volume_curve = job(_plot_energy_volume_curve)\n", + "get_bulk_structure = job(_get_bulk_structure)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "We need to specify the typical QE input like pseudopotential(s) and structure model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "structure = get_bulk_structure(\n", + " element=\"Al\",\n", + " a=4.04,\n", + " cubic=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "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", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "Next, for the \"Energy vs. Volume\" curve, we meed to specify the number of strained structures and save them into a list object. For each of the strained structures, we will carry out a QE calculation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "number_of_strains = 5\n", + "structure_lst = generate_structures(\n", + " structure=calc_mini.output.structure,\n", + " strain_lst=np.linspace(0.9, 1.1, number_of_strains),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job_strain_lst = []\n", + "for 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)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "Finally, we specify a plotter for the \"Energy vs. Volume\" curve and can export the workflow." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "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", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "flow = Flow([structure, calc_mini, structure_lst] + job_strain_lst + [plot])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "write_workflow_json(flow=flow, file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!cat {workflow_json_filename}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Workflow with aiida\n", + "\n", + "Now, we can import the workflow, run it with `aiida` and plot the \"Energy vs. Volume\" curve." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from aiida import orm, load_profile\n", + "\n", + "load_profile()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.aiida import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wg = load_workflow_json(workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wg.nodes.get_bulk_structure1.inputs.a.value = orm.Float(4.05)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wg" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wg.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_base\n", + "\n", + "And we can repeat the same process using `pyiron`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=workflow_json_filename)\n", + "delayed_object_lst[-1].draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[0].input['a'] = 4.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wf.get_bulk_structure.inputs.a.value = 4.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] + } + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/example_workflows/quantum_espresso/pyiron_base.ipynb b/example_workflows/quantum_espresso/pyiron_base.ipynb index 5e7da33..a3439fd 100644 --- a/example_workflows/quantum_espresso/pyiron_base.ipynb +++ b/example_workflows/quantum_espresso/pyiron_base.ipynb @@ -1 +1,379 @@ -{"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":"ea65c6275f956bdb","cell_type":"code","source":"from 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":"686a6a5f54a0cef5","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":"{\n \"version\": \"0.1.0\",\n \"nodes\": [\n {\n \"id\": 0,\n \"type\": \"function\",\n \"value\": \"workflow.plot_energy_volume_curve\"\n },\n {\n \"id\": 1,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 2,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 3,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 4,\n \"type\": \"function\",\n \"value\": \"workflow.generate_structures\"\n },\n {\n \"id\": 5,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 6,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 7,\n \"type\": \"function\",\n \"value\": \"workflow.get_bulk_structure\"\n },\n {\n \"id\": 8,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 9,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 10,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 11,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 12,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 13,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 14,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 15,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 16,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 17,\n \"type\": \"input\",\n \"name\": \"working_directory_0\",\n \"value\": \"strain_0\"\n },\n {\n \"id\": 18,\n \"type\": \"input\",\n \"name\": \"working_directory_1\",\n \"value\": \"mini\"\n },\n {\n \"id\": 19,\n \"type\": \"input\",\n \"name\": \"element\",\n \"value\": \"Al\"\n },\n {\n \"id\": 20,\n \"type\": \"input\",\n \"name\": \"a\",\n \"value\": 4.04\n },\n {\n \"id\": 21,\n \"type\": \"input\",\n \"name\": \"cubic\",\n \"value\": true\n },\n {\n \"id\": 22,\n \"type\": \"input\",\n \"name\": \"pseudopotentials\",\n \"value\": {\n \"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"\n }\n },\n {\n \"id\": 23,\n \"type\": \"input\",\n \"name\": \"kpts\",\n \"value\": [\n 3,\n 3,\n 3\n ]\n },\n {\n \"id\": 24,\n \"type\": \"input\",\n \"name\": \"calculation_0\",\n \"value\": \"vc-relax\"\n },\n {\n \"id\": 25,\n \"type\": \"input\",\n \"name\": \"smearing\",\n \"value\": 0.02\n },\n {\n \"id\": 26,\n \"type\": \"input\",\n \"name\": \"strain_lst\",\n \"value\": [\n 0.9,\n 0.9500000000000001,\n 1.0,\n 1.05,\n 1.1\n ]\n },\n {\n \"id\": 27,\n \"type\": \"input\",\n \"name\": \"calculation_1\",\n \"value\": \"scf\"\n },\n {\n \"id\": 28,\n \"type\": \"input\",\n \"name\": \"working_directory_2\",\n \"value\": \"strain_1\"\n },\n {\n \"id\": 29,\n \"type\": \"input\",\n \"name\": \"working_directory_3\",\n \"value\": \"strain_2\"\n },\n {\n \"id\": 30,\n \"type\": \"input\",\n \"name\": \"working_directory_4\",\n \"value\": \"strain_3\"\n },\n {\n \"id\": 31,\n \"type\": \"input\",\n \"name\": \"working_directory_5\",\n \"value\": \"strain_4\"\n },\n {\n \"id\": 32,\n \"type\": \"output\",\n \"name\": \"result\"\n }\n ],\n \"edges\": [\n {\n \"target\": 0,\n \"targetPort\": \"volume_lst\",\n \"source\": 1,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"0\",\n \"source\": 2,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 2,\n \"targetPort\": \"working_directory\",\n \"source\": 17,\n \"sourcePort\": null\n },\n {\n \"target\": 2,\n \"targetPort\": \"input_dict\",\n \"source\": 3,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"structure\",\n \"source\": 4,\n \"sourcePort\": \"s_0\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"structure\",\n \"source\": 5,\n \"sourcePort\": \"structure\"\n },\n {\n \"target\": 5,\n \"targetPort\": \"working_directory\",\n \"source\": 18,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"input_dict\",\n \"source\": 6,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"structure\",\n \"source\": 7,\n \"sourcePort\": null\n },\n {\n \"target\": 7,\n \"targetPort\": \"element\",\n \"source\": 19,\n \"sourcePort\": null\n },\n {\n \"target\": 7,\n \"targetPort\": \"a\",\n \"source\": 20,\n \"sourcePort\": null\n },\n {\n \"target\": 7,\n \"targetPort\": \"cubic\",\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\": \"kpts\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"calculation\",\n \"source\": 24,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"smearing\",\n \"source\": 25,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"strain_lst\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"kpts\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"calculation\",\n \"source\": 27,\n \"sourcePort\": null\n },\n {\n \"target\": 3,\n \"targetPort\": \"smearing\",\n \"source\": 25,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"1\",\n \"source\": 8,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 8,\n \"targetPort\": \"working_directory\",\n \"source\": 28,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"input_dict\",\n \"source\": 9,\n \"sourcePort\": null\n },\n {\n \"target\": 9,\n \"targetPort\": \"structure\",\n \"source\": 4,\n \"sourcePort\": \"s_1\"\n },\n {\n \"target\": 9,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 9,\n \"targetPort\": \"kpts\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 9,\n \"targetPort\": \"calculation\",\n \"source\": 27,\n \"sourcePort\": null\n },\n {\n \"target\": 9,\n \"targetPort\": \"smearing\",\n \"source\": 25,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"2\",\n \"source\": 10,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 10,\n \"targetPort\": \"working_directory\",\n \"source\": 29,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"input_dict\",\n \"source\": 11,\n \"sourcePort\": null\n },\n {\n \"target\": 11,\n \"targetPort\": \"structure\",\n \"source\": 4,\n \"sourcePort\": \"s_2\"\n },\n {\n \"target\": 11,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 11,\n \"targetPort\": \"kpts\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 11,\n \"targetPort\": \"calculation\",\n \"source\": 27,\n \"sourcePort\": null\n },\n {\n \"target\": 11,\n \"targetPort\": \"smearing\",\n \"source\": 25,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"3\",\n \"source\": 12,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 12,\n \"targetPort\": \"working_directory\",\n \"source\": 30,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"input_dict\",\n \"source\": 13,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"structure\",\n \"source\": 4,\n \"sourcePort\": \"s_3\"\n },\n {\n \"target\": 13,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"kpts\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"calculation\",\n \"source\": 27,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"smearing\",\n \"source\": 25,\n \"sourcePort\": null\n },\n {\n \"target\": 1,\n \"targetPort\": \"4\",\n \"source\": 14,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 14,\n \"targetPort\": \"working_directory\",\n \"source\": 31,\n \"sourcePort\": null\n },\n {\n \"target\": 14,\n \"targetPort\": \"input_dict\",\n \"source\": 15,\n \"sourcePort\": null\n },\n {\n \"target\": 15,\n \"targetPort\": \"structure\",\n \"source\": 4,\n \"sourcePort\": \"s_4\"\n },\n {\n \"target\": 15,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 22,\n \"sourcePort\": null\n },\n {\n \"target\": 15,\n \"targetPort\": \"kpts\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 15,\n \"targetPort\": \"calculation\",\n \"source\": 27,\n \"sourcePort\": null\n },\n {\n \"target\": 15,\n \"targetPort\": \"smearing\",\n \"source\": 25,\n \"sourcePort\": null\n },\n {\n \"target\": 0,\n \"targetPort\": \"energy_lst\",\n \"source\": 16,\n \"sourcePort\": null\n },\n {\n \"target\": 16,\n \"targetPort\": \"0\",\n \"source\": 2,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 16,\n \"targetPort\": \"1\",\n \"source\": 8,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 16,\n \"targetPort\": \"2\",\n \"source\": 10,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 16,\n \"targetPort\": \"3\",\n \"source\": 12,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 16,\n \"targetPort\": \"4\",\n \"source\": 14,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 32,\n \"targetPort\": null,\n \"source\": 0,\n \"sourcePort\": null\n }\n ]\n}"}],"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":"05/26/2025 04:46:41 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure8\n05/26/2025 04:46:41 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_bulk_structure8, type: PyFunction, finished.\n05/26/2025 04:46:41 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict7\n05/26/2025 04:46:42 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict7, type: PyFunction, finished.\n05/26/2025 04:46:42 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6\n[jupyter-pythonworkflow-fl--x---218119f8:01776] 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\n05/26/2025 04:47:34 AM <1688> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n05/26/2025 04:47:34 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n05/26/2025 04:47:34 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures5\n05/26/2025 04:47:35 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: generate_structures5, type: PyFunction, finished.\n05/26/2025 04:47:35 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict4,get_dict10,get_dict12,get_dict14,get_dict16\n05/26/2025 04:47:36 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict4, type: PyFunction, finished.\n05/26/2025 04:47:36 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe3,get_dict10,get_dict12,get_dict14,get_dict16\n[jupyter-pythonworkflow-fl--x---218119f8:01828] 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\n05/26/2025 04:47:47 AM <1688> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 04:47:47 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe3, type: PyFunction, finished.\n05/26/2025 04:47:47 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10,get_dict12,get_dict14,get_dict16\n05/26/2025 04:47:48 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n05/26/2025 04:47:48 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe9,get_dict12,get_dict14,get_dict16\n[jupyter-pythonworkflow-fl--x---218119f8:01860] 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\n05/26/2025 04:47:59 AM <1688> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 04:48:00 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe9, type: PyFunction, finished.\n05/26/2025 04:48:00 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict14,get_dict16\n05/26/2025 04:48:00 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n05/26/2025 04:48:00 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe11,get_dict14,get_dict16\n[jupyter-pythonworkflow-fl--x---218119f8:01874] 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\n05/26/2025 04:48:13 AM <1688> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 04:48:13 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe11, type: PyFunction, finished.\n05/26/2025 04:48:13 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict16\n05/26/2025 04:48:14 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n05/26/2025 04:48:14 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe13,get_dict16\n[jupyter-pythonworkflow-fl--x---218119f8:01885] 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\n05/26/2025 04:48:29 AM <1688> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 04:48:29 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe13, type: PyFunction, finished.\n05/26/2025 04:48:29 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict16\n05/26/2025 04:48:29 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict16, type: PyFunction, finished.\n05/26/2025 04:48:29 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe15\n[jupyter-pythonworkflow-fl--x---218119f8:01895] 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\n05/26/2025 04:48:44 AM <1688> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 04:48:44 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe15, type: PyFunction, finished.\n05/26/2025 04:48:44 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list2,get_list17\n05/26/2025 04:48:44 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_list2, type: PyFunction, finished.\n05/26/2025 04:48:44 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n05/26/2025 04:48:45 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n05/26/2025 04:48:45 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve1\n05/26/2025 04:48:45 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve1, type: PyFunction, finished.\n05/26/2025 04:48:46 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/26/2025 04:48:46 AM <1688> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|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":[],"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-05-26 04:48:47,564 INFO Started executing jobs locally\n2025-05-26 04:48:47,751 INFO Starting job - get_bulk_structure (f386f375-fcc9-4700-a077-b8c7b4ed29d4)\n2025-05-26 04:48:47,754 INFO Finished job - get_bulk_structure (f386f375-fcc9-4700-a077-b8c7b4ed29d4)\n2025-05-26 04:48:47,755 INFO Starting job - get_dict (6c1c9b0f-5c14-4ae9-be98-984400228394)\n2025-05-26 04:48:47,757 INFO Finished job - get_dict (6c1c9b0f-5c14-4ae9-be98-984400228394)\n2025-05-26 04:48:47,757 INFO Starting job - calculate_qe (f511b680-fa97-420f-904d-2ae232dbe75b)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:01905] 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-05-26 04:49:37,980 INFO Finished job - calculate_qe (f511b680-fa97-420f-904d-2ae232dbe75b)\n2025-05-26 04:49:37,981 INFO Starting job - generate_structures (d5fc7015-e7fe-4111-bf16-23bdc6755f93)\n2025-05-26 04:49:37,985 INFO Finished job - generate_structures (d5fc7015-e7fe-4111-bf16-23bdc6755f93)\n2025-05-26 04:49:37,986 INFO Starting job - get_dict (49b7b2e8-78ca-4d63-bfa6-f3b47ca3378f)\n2025-05-26 04:49:37,988 INFO Finished job - get_dict (49b7b2e8-78ca-4d63-bfa6-f3b47ca3378f)\n2025-05-26 04:49:37,988 INFO Starting job - get_dict (a45e0be5-c229-4817-8dc8-e2f54c46205f)\n2025-05-26 04:49:37,990 INFO Finished job - get_dict (a45e0be5-c229-4817-8dc8-e2f54c46205f)\n2025-05-26 04:49:37,990 INFO Starting job - get_dict (30bf90f1-57c2-474b-8bd2-d8a18061d85c)\n2025-05-26 04:49:37,992 INFO Finished job - get_dict (30bf90f1-57c2-474b-8bd2-d8a18061d85c)\n2025-05-26 04:49:37,993 INFO Starting job - get_dict (d4b595f2-93a9-42d7-a547-f64be9b4ca80)\n2025-05-26 04:49:37,995 INFO Finished job - get_dict (d4b595f2-93a9-42d7-a547-f64be9b4ca80)\n2025-05-26 04:49:37,996 INFO Starting job - get_dict (8c32a293-38d8-4c3a-82fc-78edd324d64d)\n2025-05-26 04:49:37,998 INFO Finished job - get_dict (8c32a293-38d8-4c3a-82fc-78edd324d64d)\n2025-05-26 04:49:37,998 INFO Starting job - calculate_qe (e747fb6a-e704-44ff-906e-664be75da6fc)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:01923] 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-05-26 04:49:48,629 INFO Finished job - calculate_qe (e747fb6a-e704-44ff-906e-664be75da6fc)\n2025-05-26 04:49:48,630 INFO Starting job - calculate_qe (579fbf80-e6e7-464c-a808-f5cecd9ef430)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---218119f8:01934] 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-05-26 04:50:00,439 INFO Finished job - calculate_qe (579fbf80-e6e7-464c-a808-f5cecd9ef430)\n2025-05-26 04:50:00,439 INFO Starting job - calculate_qe (ceb70e3f-c90a-4aa3-a670-23ecf40fa11b)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---218119f8:01945] 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-05-26 04:50:13,181 INFO Finished job - calculate_qe (ceb70e3f-c90a-4aa3-a670-23ecf40fa11b)\n2025-05-26 04:50:13,182 INFO Starting job - calculate_qe (290a2a1d-9a74-40b1-af28-e4f61b357694)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---218119f8:01955] 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-05-26 04:50:27,249 INFO Finished job - calculate_qe (290a2a1d-9a74-40b1-af28-e4f61b357694)\n2025-05-26 04:50:27,250 INFO Starting job - calculate_qe (a9f810e8-c291-46b9-ab8f-4c59765bf3b9)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---218119f8:01965] 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-05-26 04:50:37,525 INFO Finished job - calculate_qe (a9f810e8-c291-46b9-ab8f-4c59765bf3b9)\n2025-05-26 04:50:37,526 INFO Starting job - get_list (20122c29-0e2d-4a9c-8506-d371390f8042)\n2025-05-26 04:50:37,528 INFO Finished job - get_list (20122c29-0e2d-4a9c-8506-d371390f8042)\n2025-05-26 04:50:37,529 INFO Starting job - get_list (9842e2f0-3ca3-4a23-b82b-a3644a0294a8)\n2025-05-26 04:50:37,531 INFO Finished job - get_list (9842e2f0-3ca3-4a23-b82b-a3644a0294a8)\n2025-05-26 04:50:37,532 INFO Starting job - plot_energy_volume_curve (a1614162-0427-4cd2-a2c4-01837c5ae505)\n2025-05-26 04:50:37,581 INFO Finished job - plot_energy_volume_curve (a1614162-0427-4cd2-a2c4-01837c5ae505)\n2025-05-26 04:50:37,582 INFO Finished executing jobs locally\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"execution_count":22,"output_type":"execute_result","data":{"text/plain":"{'f386f375-fcc9-4700-a077-b8c7b4ed29d4': {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/example_workflows/quantum_espresso'))},\n '6c1c9b0f-5c14-4ae9-be98-984400228394': {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/example_workflows/quantum_espresso'))},\n 'f511b680-fa97-420f-904d-2ae232dbe75b': {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.045637215946841, 0.0, 0.0], [0.0, 4.045637215946841, 0.0], [0.0, 0.0, 4.045637215946841]], \"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.02281860797342, 2.02281860797342], [2.02281860797342, 0.0, 2.02281860797342], [2.02281860797342, 2.02281860797342, 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.9365262253598, 'volume': 66.21567448236252}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'd5fc7015-e7fe-4111-bf16-23bdc6755f93': {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.906019785962149, 0.0, 0.0], [0.0, 3.906019785962149, 0.0], [0.0, 0.0, 3.906019785962149]], \"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.953009892981074, 1.953009892981074], [1.953009892981074, 0.0, 1.953009892981074], [1.953009892981074, 1.953009892981074, 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.977053844318049, 0.0, 0.0], [0.0, 3.977053844318049, 0.0], [0.0, 0.0, 3.977053844318049]], \"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.988526922159024, 1.988526922159024], [1.988526922159024, 0.0, 1.988526922159024], [1.988526922159024, 1.988526922159024, 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.045637215946841, 0.0, 0.0], [0.0, 4.045637215946841, 0.0], [0.0, 0.0, 4.045637215946841]], \"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.02281860797342, 2.02281860797342], [2.02281860797342, 0.0, 2.02281860797342], [2.02281860797342, 2.02281860797342, 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.111970927282956, 0.0, 0.0], [0.0, 4.111970927282956, 0.0], [0.0, 0.0, 4.111970927282956]], \"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.0559854636414774, 2.0559854636414774], [2.0559854636414774, 0.0, 2.0559854636414774], [2.0559854636414774, 2.0559854636414774, 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.176230852372181, 0.0, 0.0], [0.0, 4.176230852372181, 0.0], [0.0, 0.0, 4.176230852372181]], \"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.08811542618609, 2.08811542618609], [2.08811542618609, 0.0, 2.08811542618609], [2.08811542618609, 2.08811542618609, 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/example_workflows/quantum_espresso'))},\n '49b7b2e8-78ca-4d63-bfa6-f3b47ca3378f': {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.977053844318049, 0.0, 0.0], [0.0, 3.977053844318049, 0.0], [0.0, 0.0, 3.977053844318049]], \"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.988526922159024, 1.988526922159024], [1.988526922159024, 0.0, 1.988526922159024], [1.988526922159024, 1.988526922159024, 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/example_workflows/quantum_espresso'))},\n 'a45e0be5-c229-4817-8dc8-e2f54c46205f': {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.045637215946841, 0.0, 0.0], [0.0, 4.045637215946841, 0.0], [0.0, 0.0, 4.045637215946841]], \"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.02281860797342, 2.02281860797342], [2.02281860797342, 0.0, 2.02281860797342], [2.02281860797342, 2.02281860797342, 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/example_workflows/quantum_espresso'))},\n '30bf90f1-57c2-474b-8bd2-d8a18061d85c': {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.111970927282956, 0.0, 0.0], [0.0, 4.111970927282956, 0.0], [0.0, 0.0, 4.111970927282956]], \"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.0559854636414774, 2.0559854636414774], [2.0559854636414774, 0.0, 2.0559854636414774], [2.0559854636414774, 2.0559854636414774, 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/example_workflows/quantum_espresso'))},\n 'd4b595f2-93a9-42d7-a547-f64be9b4ca80': {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.176230852372181, 0.0, 0.0], [0.0, 4.176230852372181, 0.0], [0.0, 0.0, 4.176230852372181]], \"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.08811542618609, 2.08811542618609], [2.08811542618609, 0.0, 2.08811542618609], [2.08811542618609, 2.08811542618609, 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/example_workflows/quantum_espresso'))},\n '8c32a293-38d8-4c3a-82fc-78edd324d64d': {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.906019785962149, 0.0, 0.0], [0.0, 3.906019785962149, 0.0], [0.0, 0.0, 3.906019785962149]], \"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.953009892981074, 1.953009892981074], [1.953009892981074, 0.0, 1.953009892981074], [1.953009892981074, 1.953009892981074, 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/example_workflows/quantum_espresso'))},\n 'e747fb6a-e704-44ff-906e-664be75da6fc': {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.9770538269346, 0.0, 0.0], [0.0, 3.9770538269346, 0.0], [0.0, 0.0, 3.9770538269346]], \"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.9161488594614, 'volume': 62.904889933384574}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '579fbf80-e6e7-464c-a808-f5cecd9ef430': {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.045637198263616, 0.0, 0.0], [0.0, 4.045637198263616, 0.0], [0.0, 0.0, 4.045637198263616]], \"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.9365241668363, 'volume': 66.21567361408889}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'ceb70e3f-c90a-4aa3-a670-23ecf40fa11b': {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.111970909309796, 0.0, 0.0], [0.0, 4.111970909309796, 0.0], [0.0, 0.0, 4.111970909309796]], \"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.52645729479359}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '290a2a1d-9a74-40b1-af28-e4f61b357694': {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.17623083411814, 0.0, 0.0], [0.0, 4.17623083411814, 0.0], [0.0, 0.0, 4.17623083411814]], \"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.8737904693417, 'volume': 72.83724097549783}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'a9f810e8-c291-46b9-ab8f-4c59765bf3b9': {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.9060197688891853, 0.0, 0.0], [0.0, 3.9060197688891853, 0.0], [0.0, 0.0, 3.9060197688891853]], \"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.8457446150612, 'volume': 59.59410625268013}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '20122c29-0e2d-4a9c-8506-d371390f8042': {1: Response(output=[-1074.8457446150612, -1074.9161488594614, -1074.9365241668363, -1074.9192860025814, -1074.8737904693417], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '9842e2f0-3ca3-4a23-b82b-a3644a0294a8': {1: Response(output=[59.59410625268013, 62.904889933384574, 66.21567361408889, 69.52645729479359, 72.83724097549783], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'a1614162-0427-4cd2-a2c4-01837c5ae505': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))}}"},"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},{"id":"406b0429e65b9760","cell_type":"markdown","source":"## Load Workflow with pyiron_workflow","metadata":{}},{"id":"1b45a453f593202f","cell_type":"code","source":"from python_workflow_definition.pyiron_workflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":23},{"id":"97ef39ae859855ab","cell_type":"code","source":"wf = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":24},{"id":"907dcc6d-97a6-4b6a-8214-4ba96ce26769","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"id":"4368c6921b71e396","cell_type":"code","source":"wf.get_bulk_structure.inputs.a.value = 4.05","metadata":{"trusted":true},"outputs":[],"execution_count":25},{"id":"659ccc92-a4d9-4876-a63a-be5dac50e295","cell_type":"code","source":"wf.draw(size=(10,10))","metadata":{"trusted":true},"outputs":[{"execution_count":26,"output_type":"execute_result","data":{"image/svg+xml":"\n\n\n\n\n\nclusterpyiron_base_qe\n\npyiron_base_qe: Workflow\n\nclusterpyiron_base_qeInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeplot_energy_volume_curve\n\n\n\n\n\n\n\nplot_energy_volume_curve: plot_energy_volume_curve\n\n\nclusterpyiron_base_qeplot_energy_volume_curveInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeplot_energy_volume_curveOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeget_list_0\n\n\n\n\n\n\n\nget_list_0: get_list\n\n\nclusterpyiron_base_qeget_list_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeget_list_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qecalculate_qe_0\n\n\n\n\n\n\n\ncalculate_qe_0: calculate_qe\n\n\nclusterpyiron_base_qecalculate_qe_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qecalculate_qe_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeget_dict_0\n\n\n\n\n\n\n\nget_dict_0: get_dict\n\n\nclusterpyiron_base_qeget_dict_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeget_dict_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qegenerate_structures\n\n\n\n\n\n\n\ngenerate_structures: generate_structures\n\n\nclusterpyiron_base_qegenerate_structuresInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qegenerate_structuresOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qecalculate_qe_1\n\n\n\n\n\n\n\ncalculate_qe_1: calculate_qe\n\n\nclusterpyiron_base_qecalculate_qe_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qecalculate_qe_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeget_dict_1\n\n\n\n\n\n\n\nget_dict_1: get_dict\n\n\nclusterpyiron_base_qeget_dict_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeget_dict_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeget_bulk_structure\n\n\n\n\n\n\n\nget_bulk_structure: get_bulk_structure\n\n\nclusterpyiron_base_qeget_bulk_structureInputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeget_bulk_structureOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qecalculate_qe_2\n\n\n\n\n\n\n\ncalculate_qe_2: calculate_qe\n\n\nclusterpyiron_base_qecalculate_qe_2Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qecalculate_qe_2OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeget_dict_2\n\n\n\n\n\n\n\nget_dict_2: get_dict\n\n\nclusterpyiron_base_qeget_dict_2Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeget_dict_2OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qecalculate_qe_3\n\n\n\n\n\n\n\ncalculate_qe_3: calculate_qe\n\n\nclusterpyiron_base_qecalculate_qe_3Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qecalculate_qe_3OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeget_dict_3\n\n\n\n\n\n\n\nget_dict_3: get_dict\n\n\nclusterpyiron_base_qeget_dict_3Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeget_dict_3OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qecalculate_qe_4\n\n\n\n\n\n\n\ncalculate_qe_4: calculate_qe\n\n\nclusterpyiron_base_qecalculate_qe_4Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qecalculate_qe_4OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeget_dict_4\n\n\n\n\n\n\n\nget_dict_4: get_dict\n\n\nclusterpyiron_base_qeget_dict_4Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeget_dict_4OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qecalculate_qe_5\n\n\n\n\n\n\n\ncalculate_qe_5: calculate_qe\n\n\nclusterpyiron_base_qecalculate_qe_5Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qecalculate_qe_5OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeget_dict_5\n\n\n\n\n\n\n\nget_dict_5: get_dict\n\n\nclusterpyiron_base_qeget_dict_5Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeget_dict_5OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeget_list_1\n\n\n\n\n\n\n\nget_list_1: get_list\n\n\nclusterpyiron_base_qeget_list_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeget_list_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443\n\n\n\n\n\n\n\ninjected_GetItem_8448190184761347443: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667\n\n\n\n\n\n\n\ninjected_GetItem_6888005398033223667: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208\n\n\n\n\n\n\n\ninjected_GetItem_m2505717702026653208: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258\n\n\n\n\n\n\n\ninjected_GetItem_m5521004309196267258: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213\n\n\n\n\n\n\n\ninjected_GetItem_1374405447673059213: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602\n\n\n\n\n\n\n\ninjected_GetItem_4462229027723870602: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276\n\n\n\n\n\n\n\ninjected_GetItem_2384803467043042276: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316\n\n\n\n\n\n\n\ninjected_GetItem_7146740412064090316: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618\n\n\n\n\n\n\n\ninjected_GetItem_m350772300549240618: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236\n\n\n\n\n\n\n\ninjected_GetItem_4087305954482680236: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176\n\n\n\n\n\n\n\ninjected_GetItem_4692661231677176: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074\n\n\n\n\n\n\n\ninjected_GetItem_1607275248375012074: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821\n\n\n\n\n\n\n\ninjected_GetItem_3768223398597047821: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319\n\n\n\n\n\n\n\ninjected_GetItem_8054512655741111319: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312\n\n\n\n\n\n\n\ninjected_GetItem_m5340856505475737312: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304\n\n\n\n\n\n\n\ninjected_GetItem_m9009035754021092304: GetItem\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\n\nclusterpyiron_base_qeInputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeOutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_0__working_directory\n\ncalculate_qe_0__working_directory\n\n\n\nclusterpyiron_base_qecalculate_qe_0Inputsworking_directory\n\nworking_directory\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_0__working_directory->clusterpyiron_base_qecalculate_qe_0Inputsworking_directory\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_0__pseudopotentials\n\nget_dict_0__pseudopotentials\n\n\n\nclusterpyiron_base_qeget_dict_0Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterpyiron_base_qeInputsget_dict_0__pseudopotentials->clusterpyiron_base_qeget_dict_0Inputspseudopotentials\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_0__kpts\n\nget_dict_0__kpts\n\n\n\nclusterpyiron_base_qeget_dict_0Inputskpts\n\nkpts\n\n\n\nclusterpyiron_base_qeInputsget_dict_0__kpts->clusterpyiron_base_qeget_dict_0Inputskpts\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_0__calculation\n\nget_dict_0__calculation\n\n\n\nclusterpyiron_base_qeget_dict_0Inputscalculation\n\ncalculation\n\n\n\nclusterpyiron_base_qeInputsget_dict_0__calculation->clusterpyiron_base_qeget_dict_0Inputscalculation\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_0__smearing\n\nget_dict_0__smearing\n\n\n\nclusterpyiron_base_qeget_dict_0Inputssmearing\n\nsmearing\n\n\n\nclusterpyiron_base_qeInputsget_dict_0__smearing->clusterpyiron_base_qeget_dict_0Inputssmearing\n\n\n\n\n\n\nclusterpyiron_base_qeInputsgenerate_structures__strain_lst\n\ngenerate_structures__strain_lst\n\n\n\nclusterpyiron_base_qegenerate_structuresInputsstrain_lst\n\nstrain_lst\n\n\n\nclusterpyiron_base_qeInputsgenerate_structures__strain_lst->clusterpyiron_base_qegenerate_structuresInputsstrain_lst\n\n\n\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_1__working_directory\n\ncalculate_qe_1__working_directory\n\n\n\nclusterpyiron_base_qecalculate_qe_1Inputsworking_directory\n\nworking_directory\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_1__working_directory->clusterpyiron_base_qecalculate_qe_1Inputsworking_directory\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_1__pseudopotentials\n\nget_dict_1__pseudopotentials\n\n\n\nclusterpyiron_base_qeget_dict_1Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterpyiron_base_qeInputsget_dict_1__pseudopotentials->clusterpyiron_base_qeget_dict_1Inputspseudopotentials\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_1__kpts\n\nget_dict_1__kpts\n\n\n\nclusterpyiron_base_qeget_dict_1Inputskpts\n\nkpts\n\n\n\nclusterpyiron_base_qeInputsget_dict_1__kpts->clusterpyiron_base_qeget_dict_1Inputskpts\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_1__calculation\n\nget_dict_1__calculation\n\n\n\nclusterpyiron_base_qeget_dict_1Inputscalculation\n\ncalculation\n\n\n\nclusterpyiron_base_qeInputsget_dict_1__calculation->clusterpyiron_base_qeget_dict_1Inputscalculation\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_1__smearing\n\nget_dict_1__smearing\n\n\n\nclusterpyiron_base_qeget_dict_1Inputssmearing\n\nsmearing\n\n\n\nclusterpyiron_base_qeInputsget_dict_1__smearing->clusterpyiron_base_qeget_dict_1Inputssmearing\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_bulk_structure__element\n\nget_bulk_structure__element\n\n\n\nclusterpyiron_base_qeget_bulk_structureInputselement\n\nelement\n\n\n\nclusterpyiron_base_qeInputsget_bulk_structure__element->clusterpyiron_base_qeget_bulk_structureInputselement\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_bulk_structure__a\n\nget_bulk_structure__a\n\n\n\nclusterpyiron_base_qeget_bulk_structureInputsa\n\na\n\n\n\nclusterpyiron_base_qeInputsget_bulk_structure__a->clusterpyiron_base_qeget_bulk_structureInputsa\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_bulk_structure__cubic\n\nget_bulk_structure__cubic\n\n\n\nclusterpyiron_base_qeget_bulk_structureInputscubic\n\ncubic\n\n\n\nclusterpyiron_base_qeInputsget_bulk_structure__cubic->clusterpyiron_base_qeget_bulk_structureInputscubic\n\n\n\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_2__working_directory\n\ncalculate_qe_2__working_directory\n\n\n\nclusterpyiron_base_qecalculate_qe_2Inputsworking_directory\n\nworking_directory\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_2__working_directory->clusterpyiron_base_qecalculate_qe_2Inputsworking_directory\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_2__pseudopotentials\n\nget_dict_2__pseudopotentials\n\n\n\nclusterpyiron_base_qeget_dict_2Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterpyiron_base_qeInputsget_dict_2__pseudopotentials->clusterpyiron_base_qeget_dict_2Inputspseudopotentials\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_2__kpts\n\nget_dict_2__kpts\n\n\n\nclusterpyiron_base_qeget_dict_2Inputskpts\n\nkpts\n\n\n\nclusterpyiron_base_qeInputsget_dict_2__kpts->clusterpyiron_base_qeget_dict_2Inputskpts\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_2__calculation\n\nget_dict_2__calculation\n\n\n\nclusterpyiron_base_qeget_dict_2Inputscalculation\n\ncalculation\n\n\n\nclusterpyiron_base_qeInputsget_dict_2__calculation->clusterpyiron_base_qeget_dict_2Inputscalculation\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_2__smearing\n\nget_dict_2__smearing\n\n\n\nclusterpyiron_base_qeget_dict_2Inputssmearing\n\nsmearing\n\n\n\nclusterpyiron_base_qeInputsget_dict_2__smearing->clusterpyiron_base_qeget_dict_2Inputssmearing\n\n\n\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_3__working_directory\n\ncalculate_qe_3__working_directory\n\n\n\nclusterpyiron_base_qecalculate_qe_3Inputsworking_directory\n\nworking_directory\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_3__working_directory->clusterpyiron_base_qecalculate_qe_3Inputsworking_directory\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_3__pseudopotentials\n\nget_dict_3__pseudopotentials\n\n\n\nclusterpyiron_base_qeget_dict_3Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterpyiron_base_qeInputsget_dict_3__pseudopotentials->clusterpyiron_base_qeget_dict_3Inputspseudopotentials\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_3__kpts\n\nget_dict_3__kpts\n\n\n\nclusterpyiron_base_qeget_dict_3Inputskpts\n\nkpts\n\n\n\nclusterpyiron_base_qeInputsget_dict_3__kpts->clusterpyiron_base_qeget_dict_3Inputskpts\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_3__calculation\n\nget_dict_3__calculation\n\n\n\nclusterpyiron_base_qeget_dict_3Inputscalculation\n\ncalculation\n\n\n\nclusterpyiron_base_qeInputsget_dict_3__calculation->clusterpyiron_base_qeget_dict_3Inputscalculation\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_3__smearing\n\nget_dict_3__smearing\n\n\n\nclusterpyiron_base_qeget_dict_3Inputssmearing\n\nsmearing\n\n\n\nclusterpyiron_base_qeInputsget_dict_3__smearing->clusterpyiron_base_qeget_dict_3Inputssmearing\n\n\n\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_4__working_directory\n\ncalculate_qe_4__working_directory\n\n\n\nclusterpyiron_base_qecalculate_qe_4Inputsworking_directory\n\nworking_directory\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_4__working_directory->clusterpyiron_base_qecalculate_qe_4Inputsworking_directory\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_4__pseudopotentials\n\nget_dict_4__pseudopotentials\n\n\n\nclusterpyiron_base_qeget_dict_4Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterpyiron_base_qeInputsget_dict_4__pseudopotentials->clusterpyiron_base_qeget_dict_4Inputspseudopotentials\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_4__kpts\n\nget_dict_4__kpts\n\n\n\nclusterpyiron_base_qeget_dict_4Inputskpts\n\nkpts\n\n\n\nclusterpyiron_base_qeInputsget_dict_4__kpts->clusterpyiron_base_qeget_dict_4Inputskpts\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_4__calculation\n\nget_dict_4__calculation\n\n\n\nclusterpyiron_base_qeget_dict_4Inputscalculation\n\ncalculation\n\n\n\nclusterpyiron_base_qeInputsget_dict_4__calculation->clusterpyiron_base_qeget_dict_4Inputscalculation\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_4__smearing\n\nget_dict_4__smearing\n\n\n\nclusterpyiron_base_qeget_dict_4Inputssmearing\n\nsmearing\n\n\n\nclusterpyiron_base_qeInputsget_dict_4__smearing->clusterpyiron_base_qeget_dict_4Inputssmearing\n\n\n\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_5__working_directory\n\ncalculate_qe_5__working_directory\n\n\n\nclusterpyiron_base_qecalculate_qe_5Inputsworking_directory\n\nworking_directory\n\n\n\nclusterpyiron_base_qeInputscalculate_qe_5__working_directory->clusterpyiron_base_qecalculate_qe_5Inputsworking_directory\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_5__pseudopotentials\n\nget_dict_5__pseudopotentials\n\n\n\nclusterpyiron_base_qeget_dict_5Inputspseudopotentials\n\npseudopotentials\n\n\n\nclusterpyiron_base_qeInputsget_dict_5__pseudopotentials->clusterpyiron_base_qeget_dict_5Inputspseudopotentials\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_5__kpts\n\nget_dict_5__kpts\n\n\n\nclusterpyiron_base_qeget_dict_5Inputskpts\n\nkpts\n\n\n\nclusterpyiron_base_qeInputsget_dict_5__kpts->clusterpyiron_base_qeget_dict_5Inputskpts\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_5__calculation\n\nget_dict_5__calculation\n\n\n\nclusterpyiron_base_qeget_dict_5Inputscalculation\n\ncalculation\n\n\n\nclusterpyiron_base_qeInputsget_dict_5__calculation->clusterpyiron_base_qeget_dict_5Inputscalculation\n\n\n\n\n\n\nclusterpyiron_base_qeInputsget_dict_5__smearing\n\nget_dict_5__smearing\n\n\n\nclusterpyiron_base_qeget_dict_5Inputssmearing\n\nsmearing\n\n\n\nclusterpyiron_base_qeInputsget_dict_5__smearing->clusterpyiron_base_qeget_dict_5Inputssmearing\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_8448190184761347443__item\n\ninjected_GetItem_8448190184761347443__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_8448190184761347443__item->clusterpyiron_base_qeinjected_GetItem_8448190184761347443Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_6888005398033223667__item\n\ninjected_GetItem_6888005398033223667__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_6888005398033223667__item->clusterpyiron_base_qeinjected_GetItem_6888005398033223667Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m2505717702026653208__item\n\ninjected_GetItem_m2505717702026653208__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m2505717702026653208__item->clusterpyiron_base_qeinjected_GetItem_m2505717702026653208Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m5521004309196267258__item\n\ninjected_GetItem_m5521004309196267258__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m5521004309196267258__item->clusterpyiron_base_qeinjected_GetItem_m5521004309196267258Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_1374405447673059213__item\n\ninjected_GetItem_1374405447673059213__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_1374405447673059213__item->clusterpyiron_base_qeinjected_GetItem_1374405447673059213Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_4462229027723870602__item\n\ninjected_GetItem_4462229027723870602__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_4462229027723870602__item->clusterpyiron_base_qeinjected_GetItem_4462229027723870602Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_2384803467043042276__item\n\ninjected_GetItem_2384803467043042276__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_2384803467043042276__item->clusterpyiron_base_qeinjected_GetItem_2384803467043042276Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_7146740412064090316__item\n\ninjected_GetItem_7146740412064090316__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_7146740412064090316__item->clusterpyiron_base_qeinjected_GetItem_7146740412064090316Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m350772300549240618__item\n\ninjected_GetItem_m350772300549240618__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m350772300549240618__item->clusterpyiron_base_qeinjected_GetItem_m350772300549240618Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_4087305954482680236__item\n\ninjected_GetItem_4087305954482680236__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_4087305954482680236__item->clusterpyiron_base_qeinjected_GetItem_4087305954482680236Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_4692661231677176__item\n\ninjected_GetItem_4692661231677176__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_4692661231677176__item->clusterpyiron_base_qeinjected_GetItem_4692661231677176Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_1607275248375012074__item\n\ninjected_GetItem_1607275248375012074__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_1607275248375012074__item->clusterpyiron_base_qeinjected_GetItem_1607275248375012074Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_3768223398597047821__item\n\ninjected_GetItem_3768223398597047821__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_3768223398597047821__item->clusterpyiron_base_qeinjected_GetItem_3768223398597047821Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_8054512655741111319__item\n\ninjected_GetItem_8054512655741111319__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_8054512655741111319__item->clusterpyiron_base_qeinjected_GetItem_8054512655741111319Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m5340856505475737312__item\n\ninjected_GetItem_m5340856505475737312__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m5340856505475737312__item->clusterpyiron_base_qeinjected_GetItem_m5340856505475737312Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m9009035754021092304__item\n\ninjected_GetItem_m9009035754021092304__item\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304Inputsitem\n\nitem\n\n\n\nclusterpyiron_base_qeInputsinjected_GetItem_m9009035754021092304__item->clusterpyiron_base_qeinjected_GetItem_m9009035754021092304Inputsitem\n\n\n\n\n\n\nclusterpyiron_base_qeOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeOutputsWithInjectionplot_energy_volume_curve__plot_energy_volume_curve\n\nplot_energy_volume_curve__plot_energy_volume_curve\n\n\n\nclusterpyiron_base_qeplot_energy_volume_curveInputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeplot_energy_volume_curveOutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeplot_energy_volume_curveInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeplot_energy_volume_curveInputsvolume_lst\n\nvolume_lst\n\n\n\nclusterpyiron_base_qeplot_energy_volume_curveInputsenergy_lst\n\nenergy_lst\n\n\n\nclusterpyiron_base_qeplot_energy_volume_curveOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeplot_energy_volume_curveOutputsWithInjectionplot_energy_volume_curve\n\nplot_energy_volume_curve\n\n\n\nclusterpyiron_base_qeplot_energy_volume_curveOutputsWithInjectionplot_energy_volume_curve->clusterpyiron_base_qeOutputsWithInjectionplot_energy_volume_curve__plot_energy_volume_curve\n\n\n\n\n\n\nclusterpyiron_base_qeget_list_0Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeget_list_0OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeget_list_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeget_list_0Inputss_0\n\ns_0\n\n\n\nclusterpyiron_base_qeget_list_0Inputss_1\n\ns_1\n\n\n\nclusterpyiron_base_qeget_list_0Inputss_2\n\ns_2\n\n\n\nclusterpyiron_base_qeget_list_0Inputss_3\n\ns_3\n\n\n\nclusterpyiron_base_qeget_list_0Inputss_4\n\ns_4\n\n\n\nclusterpyiron_base_qeget_list_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeget_list_0OutputsWithInjectionget_list_0\n\nget_list_0\n\n\n\nclusterpyiron_base_qeget_list_0OutputsWithInjectionget_list_0->clusterpyiron_base_qeplot_energy_volume_curveInputsvolume_lst\n\n\n\n\n\n\nclusterpyiron_base_qecalculate_qe_0Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qecalculate_qe_0OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qecalculate_qe_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qecalculate_qe_0Inputsinput_dict\n\ninput_dict\n\n\n\nclusterpyiron_base_qecalculate_qe_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qecalculate_qe_0OutputsWithInjectioncalculate_qe_0\n\ncalculate_qe_0\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_0OutputsWithInjectioncalculate_qe_0->clusterpyiron_base_qeinjected_GetItem_8448190184761347443Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_0OutputsWithInjectioncalculate_qe_0->clusterpyiron_base_qeinjected_GetItem_1607275248375012074Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeget_dict_0Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeget_dict_0OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeget_dict_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeget_dict_0Inputsstructure\n\nstructure\n\n\n\nclusterpyiron_base_qeget_dict_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeget_dict_0OutputsWithInjectionget_dict_0\n\nget_dict_0\n\n\n\nclusterpyiron_base_qeget_dict_0OutputsWithInjectionget_dict_0->clusterpyiron_base_qecalculate_qe_0Inputsinput_dict\n\n\n\n\n\n\nclusterpyiron_base_qegenerate_structuresInputsrun\n\nrun\n\n\n\nclusterpyiron_base_qegenerate_structuresOutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qegenerate_structuresInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qegenerate_structuresInputsstructure\n\nstructure\n\n\n\nclusterpyiron_base_qegenerate_structuresOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qegenerate_structuresOutputsWithInjectiongenerate_structures\n\ngenerate_structures\n\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterpyiron_base_qeinjected_GetItem_6888005398033223667Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterpyiron_base_qeinjected_GetItem_1374405447673059213Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterpyiron_base_qeinjected_GetItem_2384803467043042276Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterpyiron_base_qeinjected_GetItem_m350772300549240618Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qegenerate_structuresOutputsWithInjectiongenerate_structures->clusterpyiron_base_qeinjected_GetItem_4692661231677176Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qecalculate_qe_1Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qecalculate_qe_1OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qecalculate_qe_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qecalculate_qe_1Inputsinput_dict\n\ninput_dict\n\n\n\nclusterpyiron_base_qecalculate_qe_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qecalculate_qe_1OutputsWithInjectioncalculate_qe_1\n\ncalculate_qe_1\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_1OutputsWithInjectioncalculate_qe_1->clusterpyiron_base_qeinjected_GetItem_m2505717702026653208Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeget_dict_1Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeget_dict_1OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeget_dict_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeget_dict_1Inputsstructure\n\nstructure\n\n\n\nclusterpyiron_base_qeget_dict_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeget_dict_1OutputsWithInjectionget_dict_1\n\nget_dict_1\n\n\n\nclusterpyiron_base_qeget_dict_1OutputsWithInjectionget_dict_1->clusterpyiron_base_qecalculate_qe_1Inputsinput_dict\n\n\n\n\n\n\nclusterpyiron_base_qeget_bulk_structureInputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeget_bulk_structureOutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeget_bulk_structureInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeget_bulk_structureOutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeget_bulk_structureOutputsWithInjectionget_bulk_structure\n\nget_bulk_structure\n\n\n\nclusterpyiron_base_qeget_bulk_structureOutputsWithInjectionget_bulk_structure->clusterpyiron_base_qeget_dict_1Inputsstructure\n\n\n\n\n\n\nclusterpyiron_base_qecalculate_qe_2Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qecalculate_qe_2OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qecalculate_qe_2Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qecalculate_qe_2Inputsinput_dict\n\ninput_dict\n\n\n\nclusterpyiron_base_qecalculate_qe_2OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qecalculate_qe_2OutputsWithInjectioncalculate_qe_2\n\ncalculate_qe_2\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_2OutputsWithInjectioncalculate_qe_2->clusterpyiron_base_qeinjected_GetItem_m5521004309196267258Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_2OutputsWithInjectioncalculate_qe_2->clusterpyiron_base_qeinjected_GetItem_3768223398597047821Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeget_dict_2Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeget_dict_2OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeget_dict_2Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeget_dict_2Inputsstructure\n\nstructure\n\n\n\nclusterpyiron_base_qeget_dict_2OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeget_dict_2OutputsWithInjectionget_dict_2\n\nget_dict_2\n\n\n\nclusterpyiron_base_qeget_dict_2OutputsWithInjectionget_dict_2->clusterpyiron_base_qecalculate_qe_2Inputsinput_dict\n\n\n\n\n\n\nclusterpyiron_base_qecalculate_qe_3Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qecalculate_qe_3OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qecalculate_qe_3Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qecalculate_qe_3Inputsinput_dict\n\ninput_dict\n\n\n\nclusterpyiron_base_qecalculate_qe_3OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qecalculate_qe_3OutputsWithInjectioncalculate_qe_3\n\ncalculate_qe_3\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_3OutputsWithInjectioncalculate_qe_3->clusterpyiron_base_qeinjected_GetItem_4462229027723870602Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_3OutputsWithInjectioncalculate_qe_3->clusterpyiron_base_qeinjected_GetItem_8054512655741111319Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeget_dict_3Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeget_dict_3OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeget_dict_3Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeget_dict_3Inputsstructure\n\nstructure\n\n\n\nclusterpyiron_base_qeget_dict_3OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeget_dict_3OutputsWithInjectionget_dict_3\n\nget_dict_3\n\n\n\nclusterpyiron_base_qeget_dict_3OutputsWithInjectionget_dict_3->clusterpyiron_base_qecalculate_qe_3Inputsinput_dict\n\n\n\n\n\n\nclusterpyiron_base_qecalculate_qe_4Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qecalculate_qe_4OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qecalculate_qe_4Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qecalculate_qe_4Inputsinput_dict\n\ninput_dict\n\n\n\nclusterpyiron_base_qecalculate_qe_4OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qecalculate_qe_4OutputsWithInjectioncalculate_qe_4\n\ncalculate_qe_4\n\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_4OutputsWithInjectioncalculate_qe_4->clusterpyiron_base_qeinjected_GetItem_7146740412064090316Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_4OutputsWithInjectioncalculate_qe_4->clusterpyiron_base_qeinjected_GetItem_m5340856505475737312Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeget_dict_4Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeget_dict_4OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeget_dict_4Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeget_dict_4Inputsstructure\n\nstructure\n\n\n\nclusterpyiron_base_qeget_dict_4OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeget_dict_4OutputsWithInjectionget_dict_4\n\nget_dict_4\n\n\n\nclusterpyiron_base_qeget_dict_4OutputsWithInjectionget_dict_4->clusterpyiron_base_qecalculate_qe_4Inputsinput_dict\n\n\n\n\n\n\nclusterpyiron_base_qecalculate_qe_5Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qecalculate_qe_5OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qecalculate_qe_5Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qecalculate_qe_5Inputsinput_dict\n\ninput_dict\n\n\n\nclusterpyiron_base_qecalculate_qe_5OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qecalculate_qe_5OutputsWithInjectioncalculate_qe_5\n\ncalculate_qe_5\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_5OutputsWithInjectioncalculate_qe_5->clusterpyiron_base_qeinjected_GetItem_4087305954482680236Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304Inputsobj\n\nobj\n\n\n\nclusterpyiron_base_qecalculate_qe_5OutputsWithInjectioncalculate_qe_5->clusterpyiron_base_qeinjected_GetItem_m9009035754021092304Inputsobj\n\n\n\n\n\n\nclusterpyiron_base_qeget_dict_5Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeget_dict_5OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeget_dict_5Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeget_dict_5Inputsstructure\n\nstructure\n\n\n\nclusterpyiron_base_qeget_dict_5OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeget_dict_5OutputsWithInjectionget_dict_5\n\nget_dict_5\n\n\n\nclusterpyiron_base_qeget_dict_5OutputsWithInjectionget_dict_5->clusterpyiron_base_qecalculate_qe_5Inputsinput_dict\n\n\n\n\n\n\nclusterpyiron_base_qeget_list_1Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeget_list_1OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeget_list_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeget_list_1Inputss_0\n\ns_0\n\n\n\nclusterpyiron_base_qeget_list_1Inputss_1\n\ns_1\n\n\n\nclusterpyiron_base_qeget_list_1Inputss_2\n\ns_2\n\n\n\nclusterpyiron_base_qeget_list_1Inputss_3\n\ns_3\n\n\n\nclusterpyiron_base_qeget_list_1Inputss_4\n\ns_4\n\n\n\nclusterpyiron_base_qeget_list_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeget_list_1OutputsWithInjectionget_list_1\n\nget_list_1\n\n\n\nclusterpyiron_base_qeget_list_1OutputsWithInjectionget_list_1->clusterpyiron_base_qeplot_energy_volume_curveInputsenergy_lst\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8448190184761347443OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_0Inputss_0\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_6888005398033223667OutputsWithInjectiongetitem->clusterpyiron_base_qeget_dict_0Inputsstructure\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m2505717702026653208OutputsWithInjectiongetitem->clusterpyiron_base_qegenerate_structuresInputsstructure\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5521004309196267258OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_0Inputss_1\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1374405447673059213OutputsWithInjectiongetitem->clusterpyiron_base_qeget_dict_2Inputsstructure\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4462229027723870602OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_0Inputss_2\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_2384803467043042276OutputsWithInjectiongetitem->clusterpyiron_base_qeget_dict_3Inputsstructure\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_7146740412064090316OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_0Inputss_3\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m350772300549240618OutputsWithInjectiongetitem->clusterpyiron_base_qeget_dict_4Inputsstructure\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4087305954482680236OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_0Inputss_4\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_4692661231677176OutputsWithInjectiongetitem->clusterpyiron_base_qeget_dict_5Inputsstructure\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_1607275248375012074OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_1Inputss_0\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_3768223398597047821OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_1Inputss_1\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_8054512655741111319OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_1Inputss_2\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m5340856505475737312OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_1Inputss_3\n\n\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304Inputsrun\n\nrun\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304OutputsWithInjectionran\n\nran\n\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304OutputsWithInjectionfailed\n\nfailed\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclusterpyiron_base_qeinjected_GetItem_m9009035754021092304OutputsWithInjectiongetitem->clusterpyiron_base_qeget_list_1Inputss_4\n\n\n\n\n\n\n","text/plain":""},"metadata":{}}],"execution_count":26},{"id":"1007f60c-23eb-4a28-a5c7-ea0c0909be38","cell_type":"code","source":"wf.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---218119f8:01978] 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-pythonworkflow-fl--x---218119f8:01993] 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-pythonworkflow-fl--x---218119f8:02008] 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-pythonworkflow-fl--x---218119f8:02018] 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-pythonworkflow-fl--x---218119f8:02028] 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-pythonworkflow-fl--x---218119f8:02039] 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":27,"output_type":"execute_result","data":{"text/plain":"{'plot_energy_volume_curve__plot_energy_volume_curve': None}"},"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":27},{"id":"5022eb03-b714-409d-b82b-cada385b351d","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# pyiron" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Define workflow with pyiron_base" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from pyiron_base import job\n", + "from python_workflow_definition.pyiron_base import write_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3", + "metadata": {}, + "outputs": [], + "source": [ + "from 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", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "workflow_json_filename = \"pyiron_base_qe.json\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "calculate_qe = job(_calculate_qe, output_key_lst=[\"energy\", \"volume\", \"structure\"])\n", + "generate_structures = job(_generate_structures)\n", + "plot_energy_volume_curve = job(_plot_energy_volume_curve)\n", + "get_bulk_structure = job(_get_bulk_structure)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "structure = get_bulk_structure(\n", + " element=\"Al\",\n", + " a=4.04,\n", + " cubic=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "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", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "number_of_strains = 5\n", + "structure_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", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "job_strain_lst = []\n", + "for 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)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "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", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "write_workflow_json(delayed_object=plot, file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "!cat {workflow_json_filename}" + ] + }, + { + "cell_type": "markdown", + "id": "14", + "metadata": {}, + "source": [ + "## Load Workflow with aiida" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "from aiida import orm, load_profile\n", + "\n", + "load_profile()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.aiida import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "wg = load_workflow_json(file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "wg.nodes.get_bulk_structure8.inputs.a.value = orm.Float(4.05)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19", + "metadata": {}, + "outputs": [], + "source": [ + "wg.run()" + ] + }, + { + "cell_type": "markdown", + "id": "20", + "metadata": {}, + "source": [ + "## Load Workflow with jobflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "from jobflow.managers.local import run_locally" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "flow = load_workflow_json(file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24", + "metadata": {}, + "outputs": [], + "source": [ + "flow[0].function_kwargs[\"a\"] = 4.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] + }, + { + "cell_type": "markdown", + "id": "26", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28", + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "30", + "metadata": {}, + "outputs": [], + "source": [ + "wf.get_bulk_structure.inputs.a.value = 4.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32", + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/example_workflows/quantum_espresso/pyiron_workflow.ipynb b/example_workflows/quantum_espresso/pyiron_workflow.ipynb index c7185ca..169cc8e 100644 --- a/example_workflows/quantum_espresso/pyiron_workflow.ipynb +++ b/example_workflows/quantum_espresso/pyiron_workflow.ipynb @@ -1 +1,431 @@ -{"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":"760acc89-8c02-4bc9-a8f6-2572506b7085","cell_type":"markdown","source":"# pyiron_workflow\n## Define workflow with pyiron_workflow","metadata":{}},{"id":"44aa8e82-2d78-4015-a56d-cd487aefc48f","cell_type":"code","source":"from inspect import isfunction\nimport numpy as np\nfrom pyiron_workflow import Workflow, to_function_node, as_function_node\nfrom pyiron_workflow.api import inputs_to_dict\nfrom python_workflow_definition.pyiron_workflow import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"341dab17-b329-42eb-a485-2f9326a048e9","cell_type":"code","source":"from 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":"729a1a3a-8377-4148-9b3c-a4a866f9c4ec","cell_type":"code","source":"@as_function_node(\"output_dict\")\ndef get_values_from_dict(input_dict):\n return list(input_dict.values())","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"6c2711ec-25f8-4ecd-9b9a-d9af1ec81316","cell_type":"code","source":"workflow_json_filename = \"pyiron_workflow_qe.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"3e1492bc-49bd-4f9c-9703-582a5a60579b","cell_type":"code","source":"calculate_qe = to_function_node(\"calculate_qe\", _calculate_qe, \"calculate_qe\")\ngenerate_structures = to_function_node(\"generate_structures\", _generate_structures, \"generate_structures\")\nget_bulk_structure = to_function_node(\"get_bulk_structure\", _get_bulk_structure, \"get_bulk_structure\")\nplot_energy_volume_curve = to_function_node(\"plot_energy_volume_curve\", _plot_energy_volume_curve, \"plot_energy_volume_curve\", validate_output_labels=False)","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"a4f2fe6d-bed4-49f8-b903-1ed69ff92eb7","cell_type":"code","source":"wf = Workflow(\"my_workflow\")","metadata":{"trusted":true},"outputs":[],"execution_count":6},{"id":"62268668-7f09-4fee-99d2-c770b4e558d9","cell_type":"code","source":"wf.pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"id":"b2ea76b0-f79b-461f-8126-7bac3bda4422","cell_type":"code","source":"wf.element = \"Al\"\nwf.a = 4.04\nwf.cubic = True\nwf.structure = get_bulk_structure(\n element=wf.element,\n a=wf.a,\n cubic=wf.cubic,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"id":"01bc824f-c990-448c-a4da-1ff8b519e720","cell_type":"code","source":"wf.working_directory_0 = \"mini\"\ninput_dict = {\n \"structure\": wf.structure, \n \"pseudopotentials\": wf.pseudopotentials, \n \"kpts\": (3, 3, 3), \n \"calculation\": \"vc-relax\", \n \"smearing\": 0.02,\n}\nwf.input_dict_0 = inputs_to_dict(\n input_specification=list(input_dict.keys()),\n **input_dict\n)","metadata":{"trusted":true},"outputs":[],"execution_count":9},{"id":"95d168a1-48db-434a-b17d-abea6c1633f5","cell_type":"code","source":"wf.calc_mini = calculate_qe(\n working_directory=wf.working_directory_0,\n input_dict=wf.input_dict_0,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"id":"fbfb0107-278d-4209-883c-8c0543c5c240","cell_type":"code","source":"number_of_strains = 5\nwf.strain_lst = np.linspace(0.9, 1.1, number_of_strains)\nwf.structure_lst = generate_structures( # the generate_structures() function is not available in the workflow graph\n structure=wf.calc_mini[\"structure\"],\n strain_lst=wf.strain_lst,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"956184d1-887a-4632-9311-b917fb5d7370","cell_type":"code","source":"job_strain_lst = []\nfor i in range(number_of_strains):\n setattr(wf, \"input_dict_\" + str(i+1), inputs_to_dict(\n input_specification=[\"structure\", \"pseudopotentials\", \"kpts\", \"calculation\", \"smearing\"],\n structure=wf.structure_lst[\"s_\" + str(i)],\n pseudopotentials=wf.pseudopotentials,\n kpts=(3, 3, 3),\n calculation=\"scf\",\n smearing=0.02,\n ))\n setattr(wf, \"calc_strain_\" + str(i), calculate_qe(\n working_directory=\"strain_\" + str(i),\n input_dict=getattr(wf, \"input_dict_\" + str(i+1)),\n ))\n job_strain_lst.append(getattr(wf, \"calc_strain_\" + str(i)))","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"id":"a0643f87-98f1-440e-9f0d-8cf316a69f0f","cell_type":"code","source":"volume_dict = {\"s_\" + str(i): j[\"volume\"] for i, j in enumerate(job_strain_lst)}\nwf.volume_dict = inputs_to_dict(\n input_specification=list(volume_dict.keys()),\n **volume_dict\n)\nenergy_dict = {\"s_\" + str(i): j[\"energy\"] for i, j in enumerate(job_strain_lst)}\nwf.energy_dict = inputs_to_dict(\n input_specification=list(energy_dict.keys()),\n **energy_dict,\n)\nwf.volume_lst = get_values_from_dict(\n input_dict=wf.volume_dict\n)\nwf.energy_lst = get_values_from_dict(\n input_dict=wf.energy_dict\n)","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"id":"96808641-c9e4-4d57-9f9c-8b1a9c1b1356","cell_type":"code","source":"wf.plot = plot_energy_volume_curve(volume_lst=wf.volume_lst, energy_lst=wf.energy_lst)","metadata":{"trusted":true},"outputs":[],"execution_count":14},{"id":"45f45321-dc88-4936-b1e2-6813e0bb63a0","cell_type":"code","source":"wf.draw(size=(10,10))","metadata":{"trusted":true},"outputs":[{"execution_count":15,"output_type":"execute_result","data":{"image/svg+xml":"\n\n\n\n\n\nclustermy_workflow\n\nmy_workflow: Workflow\n\nclustermy_workflowInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowstructure\n\n\n\n\n\n\n\nstructure: get_bulk_structure\n\n\nclustermy_workflowstructureInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowstructureOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinput_dict_0\n\n\n\n\n\n\n\ninput_dict_0: InputsToDict7245513302159894572\n\n\nclustermy_workflowinput_dict_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinput_dict_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowcalc_mini\n\n\n\n\n\n\n\ncalc_mini: calculate_qe\n\n\nclustermy_workflowcalc_miniInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowcalc_miniOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993\n\n\n\n\n\n\n\ninjected_GetItem_7861940023574593993: GetItem\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowstructure_lst\n\n\n\n\n\n\n\nstructure_lst: generate_structures\n\n\nclustermy_workflowstructure_lstInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowstructure_lstOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571\n\n\n\n\n\n\n\ninjected_GetItem_3639661277350423571: GetItem\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinput_dict_1\n\n\n\n\n\n\n\ninput_dict_1: InputsToDict7245513302159894572\n\n\nclustermy_workflowinput_dict_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinput_dict_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowcalc_strain_0\n\n\n\n\n\n\n\ncalc_strain_0: calculate_qe\n\n\nclustermy_workflowcalc_strain_0Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowcalc_strain_0OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841\n\n\n\n\n\n\n\ninjected_GetItem_m7252158415225576841: GetItem\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinput_dict_2\n\n\n\n\n\n\n\ninput_dict_2: InputsToDict7245513302159894572\n\n\nclustermy_workflowinput_dict_2Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinput_dict_2OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowcalc_strain_1\n\n\n\n\n\n\n\ncalc_strain_1: calculate_qe\n\n\nclustermy_workflowcalc_strain_1Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowcalc_strain_1OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235\n\n\n\n\n\n\n\ninjected_GetItem_m6988710272709122235: GetItem\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinput_dict_3\n\n\n\n\n\n\n\ninput_dict_3: InputsToDict7245513302159894572\n\n\nclustermy_workflowinput_dict_3Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinput_dict_3OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowcalc_strain_2\n\n\n\n\n\n\n\ncalc_strain_2: calculate_qe\n\n\nclustermy_workflowcalc_strain_2Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowcalc_strain_2OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504\n\n\n\n\n\n\n\ninjected_GetItem_m7506669112781170504: GetItem\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinput_dict_4\n\n\n\n\n\n\n\ninput_dict_4: InputsToDict7245513302159894572\n\n\nclustermy_workflowinput_dict_4Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinput_dict_4OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowcalc_strain_3\n\n\n\n\n\n\n\ncalc_strain_3: calculate_qe\n\n\nclustermy_workflowcalc_strain_3Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowcalc_strain_3OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386\n\n\n\n\n\n\n\ninjected_GetItem_2957691736869688386: GetItem\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinput_dict_5\n\n\n\n\n\n\n\ninput_dict_5: InputsToDict7245513302159894572\n\n\nclustermy_workflowinput_dict_5Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinput_dict_5OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowcalc_strain_4\n\n\n\n\n\n\n\ncalc_strain_4: calculate_qe\n\n\nclustermy_workflowcalc_strain_4Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowcalc_strain_4OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677\n\n\n\n\n\n\n\ninjected_GetItem_8710029016672139677: GetItem\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363\n\n\n\n\n\n\n\ninjected_GetItem_m1919156955132558363: GetItem\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020\n\n\n\n\n\n\n\ninjected_GetItem_4142543244691876020: GetItem\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353\n\n\n\n\n\n\n\ninjected_GetItem_m2782610468716623353: GetItem\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427\n\n\n\n\n\n\n\ninjected_GetItem_6927899509448106427: GetItem\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowvolume_dict\n\n\n\n\n\n\n\nvolume_dict: InputsToDictm7167683884169246426\n\n\nclustermy_workflowvolume_dictInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowvolume_dictOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781\n\n\n\n\n\n\n\ninjected_GetItem_7833741598610549781: GetItem\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128\n\n\n\n\n\n\n\ninjected_GetItem_m3668946170913939128: GetItem\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611\n\n\n\n\n\n\n\ninjected_GetItem_m6511681505733114611: GetItem\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242\n\n\n\n\n\n\n\ninjected_GetItem_m2724299995569513242: GetItem\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054\n\n\n\n\n\n\n\ninjected_GetItem_m447248367025958054: GetItem\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054Inputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054OutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowenergy_dict\n\n\n\n\n\n\n\nenergy_dict: InputsToDictm7167683884169246426\n\n\nclustermy_workflowenergy_dictInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowenergy_dictOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowvolume_lst\n\n\n\n\n\n\n\nvolume_lst: get_values_from_dict\n\n\nclustermy_workflowvolume_lstInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowvolume_lstOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowenergy_lst\n\n\n\n\n\n\n\nenergy_lst: get_values_from_dict\n\n\nclustermy_workflowenergy_lstInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowenergy_lstOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\nclustermy_workflowplot\n\n\n\n\n\n\n\nplot: plot_energy_volume_curve\n\n\nclustermy_workflowplotInputs\n\n\n\n\n\n\n\nInputs\n\n\nclustermy_workflowplotOutputsWithInjection\n\n\n\n\n\n\n\nOutputsWithInjection\n\n\n\nclustermy_workflowInputsrun\n\nrun\n\n\n\nclustermy_workflowOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowInputsstructure__element\n\nstructure__element\n\n\n\nclustermy_workflowstructureInputselement\n\nelement\n\n\n\nclustermy_workflowInputsstructure__element->clustermy_workflowstructureInputselement\n\n\n\n\n\n\nclustermy_workflowInputsstructure__a\n\nstructure__a\n\n\n\nclustermy_workflowstructureInputsa\n\na\n\n\n\nclustermy_workflowInputsstructure__a->clustermy_workflowstructureInputsa\n\n\n\n\n\n\nclustermy_workflowInputsstructure__cubic\n\nstructure__cubic\n\n\n\nclustermy_workflowstructureInputscubic\n\ncubic\n\n\n\nclustermy_workflowInputsstructure__cubic->clustermy_workflowstructureInputscubic\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_0__pseudopotentials\n\ninput_dict_0__pseudopotentials\n\n\n\nclustermy_workflowinput_dict_0Inputspseudopotentials\n\npseudopotentials\n\n\n\nclustermy_workflowInputsinput_dict_0__pseudopotentials->clustermy_workflowinput_dict_0Inputspseudopotentials\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_0__kpts\n\ninput_dict_0__kpts\n\n\n\nclustermy_workflowinput_dict_0Inputskpts\n\nkpts\n\n\n\nclustermy_workflowInputsinput_dict_0__kpts->clustermy_workflowinput_dict_0Inputskpts\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_0__calculation\n\ninput_dict_0__calculation\n\n\n\nclustermy_workflowinput_dict_0Inputscalculation\n\ncalculation\n\n\n\nclustermy_workflowInputsinput_dict_0__calculation->clustermy_workflowinput_dict_0Inputscalculation\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_0__smearing\n\ninput_dict_0__smearing\n\n\n\nclustermy_workflowinput_dict_0Inputssmearing\n\nsmearing\n\n\n\nclustermy_workflowInputsinput_dict_0__smearing->clustermy_workflowinput_dict_0Inputssmearing\n\n\n\n\n\n\nclustermy_workflowInputscalc_mini__working_directory\n\ncalc_mini__working_directory\n\n\n\nclustermy_workflowcalc_miniInputsworking_directory\n\nworking_directory\n\n\n\nclustermy_workflowInputscalc_mini__working_directory->clustermy_workflowcalc_miniInputsworking_directory\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_7861940023574593993__item\n\ninjected_GetItem_7861940023574593993__item\n\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_7861940023574593993__item->clustermy_workflowinjected_GetItem_7861940023574593993Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsstructure_lst__strain_lst\n\nstructure_lst__strain_lst\n\n\n\nclustermy_workflowstructure_lstInputsstrain_lst\n\nstrain_lst\n\n\n\nclustermy_workflowInputsstructure_lst__strain_lst->clustermy_workflowstructure_lstInputsstrain_lst\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_3639661277350423571__item\n\ninjected_GetItem_3639661277350423571__item\n\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_3639661277350423571__item->clustermy_workflowinjected_GetItem_3639661277350423571Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_1__pseudopotentials\n\ninput_dict_1__pseudopotentials\n\n\n\nclustermy_workflowinput_dict_1Inputspseudopotentials\n\npseudopotentials\n\n\n\nclustermy_workflowInputsinput_dict_1__pseudopotentials->clustermy_workflowinput_dict_1Inputspseudopotentials\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_1__kpts\n\ninput_dict_1__kpts\n\n\n\nclustermy_workflowinput_dict_1Inputskpts\n\nkpts\n\n\n\nclustermy_workflowInputsinput_dict_1__kpts->clustermy_workflowinput_dict_1Inputskpts\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_1__calculation\n\ninput_dict_1__calculation\n\n\n\nclustermy_workflowinput_dict_1Inputscalculation\n\ncalculation\n\n\n\nclustermy_workflowInputsinput_dict_1__calculation->clustermy_workflowinput_dict_1Inputscalculation\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_1__smearing\n\ninput_dict_1__smearing\n\n\n\nclustermy_workflowinput_dict_1Inputssmearing\n\nsmearing\n\n\n\nclustermy_workflowInputsinput_dict_1__smearing->clustermy_workflowinput_dict_1Inputssmearing\n\n\n\n\n\n\nclustermy_workflowInputscalc_strain_0__working_directory\n\ncalc_strain_0__working_directory\n\n\n\nclustermy_workflowcalc_strain_0Inputsworking_directory\n\nworking_directory\n\n\n\nclustermy_workflowInputscalc_strain_0__working_directory->clustermy_workflowcalc_strain_0Inputsworking_directory\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m7252158415225576841__item\n\ninjected_GetItem_m7252158415225576841__item\n\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m7252158415225576841__item->clustermy_workflowinjected_GetItem_m7252158415225576841Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_2__pseudopotentials\n\ninput_dict_2__pseudopotentials\n\n\n\nclustermy_workflowinput_dict_2Inputspseudopotentials\n\npseudopotentials\n\n\n\nclustermy_workflowInputsinput_dict_2__pseudopotentials->clustermy_workflowinput_dict_2Inputspseudopotentials\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_2__kpts\n\ninput_dict_2__kpts\n\n\n\nclustermy_workflowinput_dict_2Inputskpts\n\nkpts\n\n\n\nclustermy_workflowInputsinput_dict_2__kpts->clustermy_workflowinput_dict_2Inputskpts\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_2__calculation\n\ninput_dict_2__calculation\n\n\n\nclustermy_workflowinput_dict_2Inputscalculation\n\ncalculation\n\n\n\nclustermy_workflowInputsinput_dict_2__calculation->clustermy_workflowinput_dict_2Inputscalculation\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_2__smearing\n\ninput_dict_2__smearing\n\n\n\nclustermy_workflowinput_dict_2Inputssmearing\n\nsmearing\n\n\n\nclustermy_workflowInputsinput_dict_2__smearing->clustermy_workflowinput_dict_2Inputssmearing\n\n\n\n\n\n\nclustermy_workflowInputscalc_strain_1__working_directory\n\ncalc_strain_1__working_directory\n\n\n\nclustermy_workflowcalc_strain_1Inputsworking_directory\n\nworking_directory\n\n\n\nclustermy_workflowInputscalc_strain_1__working_directory->clustermy_workflowcalc_strain_1Inputsworking_directory\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m6988710272709122235__item\n\ninjected_GetItem_m6988710272709122235__item\n\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m6988710272709122235__item->clustermy_workflowinjected_GetItem_m6988710272709122235Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_3__pseudopotentials\n\ninput_dict_3__pseudopotentials\n\n\n\nclustermy_workflowinput_dict_3Inputspseudopotentials\n\npseudopotentials\n\n\n\nclustermy_workflowInputsinput_dict_3__pseudopotentials->clustermy_workflowinput_dict_3Inputspseudopotentials\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_3__kpts\n\ninput_dict_3__kpts\n\n\n\nclustermy_workflowinput_dict_3Inputskpts\n\nkpts\n\n\n\nclustermy_workflowInputsinput_dict_3__kpts->clustermy_workflowinput_dict_3Inputskpts\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_3__calculation\n\ninput_dict_3__calculation\n\n\n\nclustermy_workflowinput_dict_3Inputscalculation\n\ncalculation\n\n\n\nclustermy_workflowInputsinput_dict_3__calculation->clustermy_workflowinput_dict_3Inputscalculation\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_3__smearing\n\ninput_dict_3__smearing\n\n\n\nclustermy_workflowinput_dict_3Inputssmearing\n\nsmearing\n\n\n\nclustermy_workflowInputsinput_dict_3__smearing->clustermy_workflowinput_dict_3Inputssmearing\n\n\n\n\n\n\nclustermy_workflowInputscalc_strain_2__working_directory\n\ncalc_strain_2__working_directory\n\n\n\nclustermy_workflowcalc_strain_2Inputsworking_directory\n\nworking_directory\n\n\n\nclustermy_workflowInputscalc_strain_2__working_directory->clustermy_workflowcalc_strain_2Inputsworking_directory\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m7506669112781170504__item\n\ninjected_GetItem_m7506669112781170504__item\n\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m7506669112781170504__item->clustermy_workflowinjected_GetItem_m7506669112781170504Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_4__pseudopotentials\n\ninput_dict_4__pseudopotentials\n\n\n\nclustermy_workflowinput_dict_4Inputspseudopotentials\n\npseudopotentials\n\n\n\nclustermy_workflowInputsinput_dict_4__pseudopotentials->clustermy_workflowinput_dict_4Inputspseudopotentials\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_4__kpts\n\ninput_dict_4__kpts\n\n\n\nclustermy_workflowinput_dict_4Inputskpts\n\nkpts\n\n\n\nclustermy_workflowInputsinput_dict_4__kpts->clustermy_workflowinput_dict_4Inputskpts\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_4__calculation\n\ninput_dict_4__calculation\n\n\n\nclustermy_workflowinput_dict_4Inputscalculation\n\ncalculation\n\n\n\nclustermy_workflowInputsinput_dict_4__calculation->clustermy_workflowinput_dict_4Inputscalculation\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_4__smearing\n\ninput_dict_4__smearing\n\n\n\nclustermy_workflowinput_dict_4Inputssmearing\n\nsmearing\n\n\n\nclustermy_workflowInputsinput_dict_4__smearing->clustermy_workflowinput_dict_4Inputssmearing\n\n\n\n\n\n\nclustermy_workflowInputscalc_strain_3__working_directory\n\ncalc_strain_3__working_directory\n\n\n\nclustermy_workflowcalc_strain_3Inputsworking_directory\n\nworking_directory\n\n\n\nclustermy_workflowInputscalc_strain_3__working_directory->clustermy_workflowcalc_strain_3Inputsworking_directory\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_2957691736869688386__item\n\ninjected_GetItem_2957691736869688386__item\n\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_2957691736869688386__item->clustermy_workflowinjected_GetItem_2957691736869688386Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_5__pseudopotentials\n\ninput_dict_5__pseudopotentials\n\n\n\nclustermy_workflowinput_dict_5Inputspseudopotentials\n\npseudopotentials\n\n\n\nclustermy_workflowInputsinput_dict_5__pseudopotentials->clustermy_workflowinput_dict_5Inputspseudopotentials\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_5__kpts\n\ninput_dict_5__kpts\n\n\n\nclustermy_workflowinput_dict_5Inputskpts\n\nkpts\n\n\n\nclustermy_workflowInputsinput_dict_5__kpts->clustermy_workflowinput_dict_5Inputskpts\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_5__calculation\n\ninput_dict_5__calculation\n\n\n\nclustermy_workflowinput_dict_5Inputscalculation\n\ncalculation\n\n\n\nclustermy_workflowInputsinput_dict_5__calculation->clustermy_workflowinput_dict_5Inputscalculation\n\n\n\n\n\n\nclustermy_workflowInputsinput_dict_5__smearing\n\ninput_dict_5__smearing\n\n\n\nclustermy_workflowinput_dict_5Inputssmearing\n\nsmearing\n\n\n\nclustermy_workflowInputsinput_dict_5__smearing->clustermy_workflowinput_dict_5Inputssmearing\n\n\n\n\n\n\nclustermy_workflowInputscalc_strain_4__working_directory\n\ncalc_strain_4__working_directory\n\n\n\nclustermy_workflowcalc_strain_4Inputsworking_directory\n\nworking_directory\n\n\n\nclustermy_workflowInputscalc_strain_4__working_directory->clustermy_workflowcalc_strain_4Inputsworking_directory\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_8710029016672139677__item\n\ninjected_GetItem_8710029016672139677__item\n\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_8710029016672139677__item->clustermy_workflowinjected_GetItem_8710029016672139677Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m1919156955132558363__item\n\ninjected_GetItem_m1919156955132558363__item\n\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m1919156955132558363__item->clustermy_workflowinjected_GetItem_m1919156955132558363Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_4142543244691876020__item\n\ninjected_GetItem_4142543244691876020__item\n\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_4142543244691876020__item->clustermy_workflowinjected_GetItem_4142543244691876020Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m2782610468716623353__item\n\ninjected_GetItem_m2782610468716623353__item\n\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m2782610468716623353__item->clustermy_workflowinjected_GetItem_m2782610468716623353Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_6927899509448106427__item\n\ninjected_GetItem_6927899509448106427__item\n\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_6927899509448106427__item->clustermy_workflowinjected_GetItem_6927899509448106427Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_7833741598610549781__item\n\ninjected_GetItem_7833741598610549781__item\n\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_7833741598610549781__item->clustermy_workflowinjected_GetItem_7833741598610549781Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m3668946170913939128__item\n\ninjected_GetItem_m3668946170913939128__item\n\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m3668946170913939128__item->clustermy_workflowinjected_GetItem_m3668946170913939128Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m6511681505733114611__item\n\ninjected_GetItem_m6511681505733114611__item\n\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m6511681505733114611__item->clustermy_workflowinjected_GetItem_m6511681505733114611Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m2724299995569513242__item\n\ninjected_GetItem_m2724299995569513242__item\n\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m2724299995569513242__item->clustermy_workflowinjected_GetItem_m2724299995569513242Inputsitem\n\n\n\n\n\n\nclustermy_workflowInputsinjected_GetItem_m447248367025958054__item\n\ninjected_GetItem_m447248367025958054__item\n\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054Inputsitem\n\nitem\n\n\n\nclustermy_workflowInputsinjected_GetItem_m447248367025958054__item->clustermy_workflowinjected_GetItem_m447248367025958054Inputsitem\n\n\n\n\n\n\nclustermy_workflowOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowOutputsWithInjectionplot__plot_energy_volume_curve\n\nplot__plot_energy_volume_curve\n\n\n\nclustermy_workflowstructureInputsrun\n\nrun\n\n\n\nclustermy_workflowstructureOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowstructureInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowstructureOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowstructureOutputsWithInjectionget_bulk_structure\n\nget_bulk_structure\n\n\n\nclustermy_workflowinput_dict_0Inputsstructure\n\nstructure\n\n\n\nclustermy_workflowstructureOutputsWithInjectionget_bulk_structure->clustermy_workflowinput_dict_0Inputsstructure\n\n\n\n\n\n\nclustermy_workflowinput_dict_0Inputsrun\n\nrun\n\n\n\nclustermy_workflowinput_dict_0OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinput_dict_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinput_dict_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinput_dict_0OutputsWithInjectiondict\n\ndict: dict\n\n\n\nclustermy_workflowcalc_miniInputsinput_dict\n\ninput_dict\n\n\n\nclustermy_workflowinput_dict_0OutputsWithInjectiondict->clustermy_workflowcalc_miniInputsinput_dict\n\n\n\n\n\n\nclustermy_workflowcalc_miniInputsrun\n\nrun\n\n\n\nclustermy_workflowcalc_miniOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowcalc_miniInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowcalc_miniOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowcalc_miniOutputsWithInjectioncalculate_qe\n\ncalculate_qe\n\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_miniOutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_7861940023574593993Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowstructure_lstInputsstructure\n\nstructure\n\n\n\nclustermy_workflowinjected_GetItem_7861940023574593993OutputsWithInjectiongetitem->clustermy_workflowstructure_lstInputsstructure\n\n\n\n\n\n\nclustermy_workflowstructure_lstInputsrun\n\nrun\n\n\n\nclustermy_workflowstructure_lstOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowstructure_lstInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowstructure_lstOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowstructure_lstOutputsWithInjectiongenerate_structures\n\ngenerate_structures\n\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571Inputsobj\n\nobj\n\n\n\nclustermy_workflowstructure_lstOutputsWithInjectiongenerate_structures->clustermy_workflowinjected_GetItem_3639661277350423571Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841Inputsobj\n\nobj\n\n\n\nclustermy_workflowstructure_lstOutputsWithInjectiongenerate_structures->clustermy_workflowinjected_GetItem_m7252158415225576841Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235Inputsobj\n\nobj\n\n\n\nclustermy_workflowstructure_lstOutputsWithInjectiongenerate_structures->clustermy_workflowinjected_GetItem_m6988710272709122235Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504Inputsobj\n\nobj\n\n\n\nclustermy_workflowstructure_lstOutputsWithInjectiongenerate_structures->clustermy_workflowinjected_GetItem_m7506669112781170504Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386Inputsobj\n\nobj\n\n\n\nclustermy_workflowstructure_lstOutputsWithInjectiongenerate_structures->clustermy_workflowinjected_GetItem_2957691736869688386Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowinput_dict_1Inputsstructure\n\nstructure\n\n\n\nclustermy_workflowinjected_GetItem_3639661277350423571OutputsWithInjectiongetitem->clustermy_workflowinput_dict_1Inputsstructure\n\n\n\n\n\n\nclustermy_workflowinput_dict_1Inputsrun\n\nrun\n\n\n\nclustermy_workflowinput_dict_1OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinput_dict_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinput_dict_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinput_dict_1OutputsWithInjectiondict\n\ndict: dict\n\n\n\nclustermy_workflowcalc_strain_0Inputsinput_dict\n\ninput_dict\n\n\n\nclustermy_workflowinput_dict_1OutputsWithInjectiondict->clustermy_workflowcalc_strain_0Inputsinput_dict\n\n\n\n\n\n\nclustermy_workflowcalc_strain_0Inputsrun\n\nrun\n\n\n\nclustermy_workflowcalc_strain_0OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowcalc_strain_0Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowcalc_strain_0OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowcalc_strain_0OutputsWithInjectioncalculate_qe\n\ncalculate_qe\n\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_0OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_8710029016672139677Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_0OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_7833741598610549781Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowinput_dict_2Inputsstructure\n\nstructure\n\n\n\nclustermy_workflowinjected_GetItem_m7252158415225576841OutputsWithInjectiongetitem->clustermy_workflowinput_dict_2Inputsstructure\n\n\n\n\n\n\nclustermy_workflowinput_dict_2Inputsrun\n\nrun\n\n\n\nclustermy_workflowinput_dict_2OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinput_dict_2Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinput_dict_2OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinput_dict_2OutputsWithInjectiondict\n\ndict: dict\n\n\n\nclustermy_workflowcalc_strain_1Inputsinput_dict\n\ninput_dict\n\n\n\nclustermy_workflowinput_dict_2OutputsWithInjectiondict->clustermy_workflowcalc_strain_1Inputsinput_dict\n\n\n\n\n\n\nclustermy_workflowcalc_strain_1Inputsrun\n\nrun\n\n\n\nclustermy_workflowcalc_strain_1OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowcalc_strain_1Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowcalc_strain_1OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowcalc_strain_1OutputsWithInjectioncalculate_qe\n\ncalculate_qe\n\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_1OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_m1919156955132558363Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_1OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_m3668946170913939128Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowinput_dict_3Inputsstructure\n\nstructure\n\n\n\nclustermy_workflowinjected_GetItem_m6988710272709122235OutputsWithInjectiongetitem->clustermy_workflowinput_dict_3Inputsstructure\n\n\n\n\n\n\nclustermy_workflowinput_dict_3Inputsrun\n\nrun\n\n\n\nclustermy_workflowinput_dict_3OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinput_dict_3Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinput_dict_3OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinput_dict_3OutputsWithInjectiondict\n\ndict: dict\n\n\n\nclustermy_workflowcalc_strain_2Inputsinput_dict\n\ninput_dict\n\n\n\nclustermy_workflowinput_dict_3OutputsWithInjectiondict->clustermy_workflowcalc_strain_2Inputsinput_dict\n\n\n\n\n\n\nclustermy_workflowcalc_strain_2Inputsrun\n\nrun\n\n\n\nclustermy_workflowcalc_strain_2OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowcalc_strain_2Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowcalc_strain_2OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowcalc_strain_2OutputsWithInjectioncalculate_qe\n\ncalculate_qe\n\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_2OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_4142543244691876020Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_2OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_m6511681505733114611Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowinput_dict_4Inputsstructure\n\nstructure\n\n\n\nclustermy_workflowinjected_GetItem_m7506669112781170504OutputsWithInjectiongetitem->clustermy_workflowinput_dict_4Inputsstructure\n\n\n\n\n\n\nclustermy_workflowinput_dict_4Inputsrun\n\nrun\n\n\n\nclustermy_workflowinput_dict_4OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinput_dict_4Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinput_dict_4OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinput_dict_4OutputsWithInjectiondict\n\ndict: dict\n\n\n\nclustermy_workflowcalc_strain_3Inputsinput_dict\n\ninput_dict\n\n\n\nclustermy_workflowinput_dict_4OutputsWithInjectiondict->clustermy_workflowcalc_strain_3Inputsinput_dict\n\n\n\n\n\n\nclustermy_workflowcalc_strain_3Inputsrun\n\nrun\n\n\n\nclustermy_workflowcalc_strain_3OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowcalc_strain_3Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowcalc_strain_3OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowcalc_strain_3OutputsWithInjectioncalculate_qe\n\ncalculate_qe\n\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_3OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_m2782610468716623353Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_3OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_m2724299995569513242Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowinput_dict_5Inputsstructure\n\nstructure\n\n\n\nclustermy_workflowinjected_GetItem_2957691736869688386OutputsWithInjectiongetitem->clustermy_workflowinput_dict_5Inputsstructure\n\n\n\n\n\n\nclustermy_workflowinput_dict_5Inputsrun\n\nrun\n\n\n\nclustermy_workflowinput_dict_5OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinput_dict_5Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinput_dict_5OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinput_dict_5OutputsWithInjectiondict\n\ndict: dict\n\n\n\nclustermy_workflowcalc_strain_4Inputsinput_dict\n\ninput_dict\n\n\n\nclustermy_workflowinput_dict_5OutputsWithInjectiondict->clustermy_workflowcalc_strain_4Inputsinput_dict\n\n\n\n\n\n\nclustermy_workflowcalc_strain_4Inputsrun\n\nrun\n\n\n\nclustermy_workflowcalc_strain_4OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowcalc_strain_4Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowcalc_strain_4OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowcalc_strain_4OutputsWithInjectioncalculate_qe\n\ncalculate_qe\n\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_4OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_6927899509448106427Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054Inputsobj\n\nobj\n\n\n\nclustermy_workflowcalc_strain_4OutputsWithInjectioncalculate_qe->clustermy_workflowinjected_GetItem_m447248367025958054Inputsobj\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowvolume_dictInputss_0\n\ns_0\n\n\n\nclustermy_workflowinjected_GetItem_8710029016672139677OutputsWithInjectiongetitem->clustermy_workflowvolume_dictInputss_0\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowvolume_dictInputss_1\n\ns_1\n\n\n\nclustermy_workflowinjected_GetItem_m1919156955132558363OutputsWithInjectiongetitem->clustermy_workflowvolume_dictInputss_1\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowvolume_dictInputss_2\n\ns_2\n\n\n\nclustermy_workflowinjected_GetItem_4142543244691876020OutputsWithInjectiongetitem->clustermy_workflowvolume_dictInputss_2\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowvolume_dictInputss_3\n\ns_3\n\n\n\nclustermy_workflowinjected_GetItem_m2782610468716623353OutputsWithInjectiongetitem->clustermy_workflowvolume_dictInputss_3\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowvolume_dictInputss_4\n\ns_4\n\n\n\nclustermy_workflowinjected_GetItem_6927899509448106427OutputsWithInjectiongetitem->clustermy_workflowvolume_dictInputss_4\n\n\n\n\n\n\nclustermy_workflowvolume_dictInputsrun\n\nrun\n\n\n\nclustermy_workflowvolume_dictOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowvolume_dictInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowvolume_dictOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowvolume_dictOutputsWithInjectiondict\n\ndict: dict\n\n\n\nclustermy_workflowvolume_lstInputsinput_dict\n\ninput_dict\n\n\n\nclustermy_workflowvolume_dictOutputsWithInjectiondict->clustermy_workflowvolume_lstInputsinput_dict\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowenergy_dictInputss_0\n\ns_0\n\n\n\nclustermy_workflowinjected_GetItem_7833741598610549781OutputsWithInjectiongetitem->clustermy_workflowenergy_dictInputss_0\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowenergy_dictInputss_1\n\ns_1\n\n\n\nclustermy_workflowinjected_GetItem_m3668946170913939128OutputsWithInjectiongetitem->clustermy_workflowenergy_dictInputss_1\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowenergy_dictInputss_2\n\ns_2\n\n\n\nclustermy_workflowinjected_GetItem_m6511681505733114611OutputsWithInjectiongetitem->clustermy_workflowenergy_dictInputss_2\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowenergy_dictInputss_3\n\ns_3\n\n\n\nclustermy_workflowinjected_GetItem_m2724299995569513242OutputsWithInjectiongetitem->clustermy_workflowenergy_dictInputss_3\n\n\n\n\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054Inputsrun\n\nrun\n\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054OutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054Inputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054OutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054OutputsWithInjectiongetitem\n\ngetitem\n\n\n\nclustermy_workflowenergy_dictInputss_4\n\ns_4\n\n\n\nclustermy_workflowinjected_GetItem_m447248367025958054OutputsWithInjectiongetitem->clustermy_workflowenergy_dictInputss_4\n\n\n\n\n\n\nclustermy_workflowenergy_dictInputsrun\n\nrun\n\n\n\nclustermy_workflowenergy_dictOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowenergy_dictInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowenergy_dictOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowenergy_dictOutputsWithInjectiondict\n\ndict: dict\n\n\n\nclustermy_workflowenergy_lstInputsinput_dict\n\ninput_dict\n\n\n\nclustermy_workflowenergy_dictOutputsWithInjectiondict->clustermy_workflowenergy_lstInputsinput_dict\n\n\n\n\n\n\nclustermy_workflowvolume_lstInputsrun\n\nrun\n\n\n\nclustermy_workflowvolume_lstOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowvolume_lstInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowvolume_lstOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowvolume_lstOutputsWithInjectionoutput_dict\n\noutput_dict\n\n\n\nclustermy_workflowplotInputsvolume_lst\n\nvolume_lst\n\n\n\nclustermy_workflowvolume_lstOutputsWithInjectionoutput_dict->clustermy_workflowplotInputsvolume_lst\n\n\n\n\n\n\nclustermy_workflowenergy_lstInputsrun\n\nrun\n\n\n\nclustermy_workflowenergy_lstOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowenergy_lstInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowenergy_lstOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowenergy_lstOutputsWithInjectionoutput_dict\n\noutput_dict\n\n\n\nclustermy_workflowplotInputsenergy_lst\n\nenergy_lst\n\n\n\nclustermy_workflowenergy_lstOutputsWithInjectionoutput_dict->clustermy_workflowplotInputsenergy_lst\n\n\n\n\n\n\nclustermy_workflowplotInputsrun\n\nrun\n\n\n\nclustermy_workflowplotOutputsWithInjectionran\n\nran\n\n\n\n\nclustermy_workflowplotInputsaccumulate_and_run\n\naccumulate_and_run\n\n\n\nclustermy_workflowplotOutputsWithInjectionfailed\n\nfailed\n\n\n\nclustermy_workflowplotOutputsWithInjectionplot_energy_volume_curve\n\nplot_energy_volume_curve\n\n\n\nclustermy_workflowplotOutputsWithInjectionplot_energy_volume_curve->clustermy_workflowOutputsWithInjectionplot__plot_energy_volume_curve\n\n\n\n\n\n\n","text/plain":""},"metadata":{}}],"execution_count":15},{"id":"5bb8c16b-7815-4bb8-b8a1-b0d4aa8528c9","cell_type":"code","source":"write_workflow_json(graph_as_dict=wf.graph_as_dict, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":16},{"id":"944be632-3544-4a22-a105-78dd94c6a25d","cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\n \"version\": \"0.1.0\",\n \"nodes\": [\n {\n \"id\": 0,\n \"type\": \"function\",\n \"value\": \"workflow.get_bulk_structure\"\n },\n {\n \"id\": 1,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 2,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 3,\n \"type\": \"function\",\n \"value\": \"workflow.generate_structures\"\n },\n {\n \"id\": 4,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 5,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 6,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 7,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 8,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 9,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 10,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 11,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 12,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_dict\"\n },\n {\n \"id\": 13,\n \"type\": \"function\",\n \"value\": \"workflow.calculate_qe\"\n },\n {\n \"id\": 14,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 15,\n \"type\": \"function\",\n \"value\": \"python_workflow_definition.shared.get_list\"\n },\n {\n \"id\": 16,\n \"type\": \"function\",\n \"value\": \"workflow.plot_energy_volume_curve\"\n },\n {\n \"id\": 17,\n \"type\": \"input\",\n \"name\": \"element\",\n \"value\": \"Al\"\n },\n {\n \"id\": 18,\n \"type\": \"input\",\n \"name\": \"a\",\n \"value\": 4.04\n },\n {\n \"id\": 19,\n \"type\": \"input\",\n \"name\": \"cubic\",\n \"value\": true\n },\n {\n \"id\": 20,\n \"type\": \"input\",\n \"name\": \"pseudopotentials\",\n \"value\": {\n \"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"\n }\n },\n {\n \"id\": 21,\n \"type\": \"input\",\n \"name\": \"kpts\",\n \"value\": [\n 3,\n 3,\n 3\n ]\n },\n {\n \"id\": 22,\n \"type\": \"input\",\n \"name\": \"calculation_0\",\n \"value\": \"vc-relax\"\n },\n {\n \"id\": 23,\n \"type\": \"input\",\n \"name\": \"smearing\",\n \"value\": 0.02\n },\n {\n \"id\": 24,\n \"type\": \"input\",\n \"name\": \"working_directory_0\",\n \"value\": \"mini\"\n },\n {\n \"id\": 25,\n \"type\": \"input\",\n \"name\": \"strain_lst\",\n \"value\": [\n 0.9,\n 0.9500000000000001,\n 1.0,\n 1.05,\n 1.1\n ]\n },\n {\n \"id\": 26,\n \"type\": \"input\",\n \"name\": \"calculation_1\",\n \"value\": \"scf\"\n },\n {\n \"id\": 27,\n \"type\": \"input\",\n \"name\": \"working_directory_1\",\n \"value\": \"strain_0\"\n },\n {\n \"id\": 28,\n \"type\": \"input\",\n \"name\": \"working_directory_2\",\n \"value\": \"strain_1\"\n },\n {\n \"id\": 29,\n \"type\": \"input\",\n \"name\": \"working_directory_3\",\n \"value\": \"strain_2\"\n },\n {\n \"id\": 30,\n \"type\": \"input\",\n \"name\": \"working_directory_4\",\n \"value\": \"strain_3\"\n },\n {\n \"id\": 31,\n \"type\": \"input\",\n \"name\": \"working_directory_5\",\n \"value\": \"strain_4\"\n },\n {\n \"id\": 32,\n \"type\": \"output\",\n \"name\": \"result\"\n }\n ],\n \"edges\": [\n {\n \"target\": 3,\n \"targetPort\": \"structure\",\n \"source\": 2,\n \"sourcePort\": \"structure\"\n },\n {\n \"target\": 12,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_4\"\n },\n {\n \"target\": 10,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_3\"\n },\n {\n \"target\": 8,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_2\"\n },\n {\n \"target\": 6,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_1\"\n },\n {\n \"target\": 4,\n \"targetPort\": \"structure\",\n \"source\": 3,\n \"sourcePort\": \"s_0\"\n },\n {\n \"target\": 15,\n \"targetPort\": \"0\",\n \"source\": 5,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 14,\n \"targetPort\": \"0\",\n \"source\": 5,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 15,\n \"targetPort\": \"1\",\n \"source\": 7,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 14,\n \"targetPort\": \"1\",\n \"source\": 7,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 15,\n \"targetPort\": \"2\",\n \"source\": 9,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 14,\n \"targetPort\": \"2\",\n \"source\": 9,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 15,\n \"targetPort\": \"3\",\n \"source\": 11,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 14,\n \"targetPort\": \"3\",\n \"source\": 11,\n \"sourcePort\": \"volume\"\n },\n {\n \"target\": 15,\n \"targetPort\": \"4\",\n \"source\": 13,\n \"sourcePort\": \"energy\"\n },\n {\n \"target\": 14,\n \"targetPort\": \"4\",\n \"source\": 13,\n \"sourcePort\": \"volume\"\n },\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\": 5,\n \"targetPort\": \"input_dict\",\n \"source\": 4,\n \"sourcePort\": null\n },\n {\n \"target\": 7,\n \"targetPort\": \"input_dict\",\n \"source\": 6,\n \"sourcePort\": null\n },\n {\n \"target\": 9,\n \"targetPort\": \"input_dict\",\n \"source\": 8,\n \"sourcePort\": null\n },\n {\n \"target\": 11,\n \"targetPort\": \"input_dict\",\n \"source\": 10,\n \"sourcePort\": null\n },\n {\n \"target\": 13,\n \"targetPort\": \"input_dict\",\n \"source\": 12,\n \"sourcePort\": null\n },\n {\n \"target\": 16,\n \"targetPort\": \"volume_lst\",\n \"source\": 14,\n \"sourcePort\": null\n },\n {\n \"target\": 16,\n \"targetPort\": \"energy_lst\",\n \"source\": 15,\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\": \"pseudopotentials\",\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\": \"calculation\",\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\": 4,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 20,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"calculation\",\n \"source\": 26,\n \"sourcePort\": null\n },\n {\n \"target\": 4,\n \"targetPort\": \"smearing\",\n \"source\": 23,\n \"sourcePort\": null\n },\n {\n \"target\": 5,\n \"targetPort\": \"working_directory\",\n \"source\": 27,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 20,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 6,\n \"targetPort\": \"calculation\",\n \"source\": 26,\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\": 28,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 20,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 8,\n \"targetPort\": \"calculation\",\n \"source\": 26,\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\": 29,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 20,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 10,\n \"targetPort\": \"calculation\",\n \"source\": 26,\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\": 30,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"pseudopotentials\",\n \"source\": 20,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"kpts\",\n \"source\": 21,\n \"sourcePort\": null\n },\n {\n \"target\": 12,\n \"targetPort\": \"calculation\",\n \"source\": 26,\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\": 31,\n \"sourcePort\": null\n },\n {\n \"target\": 32,\n \"targetPort\": null,\n \"source\": 16,\n \"sourcePort\": null\n }\n ]\n}"}],"execution_count":17},{"id":"fef7107a-5af3-4434-ae4c-a8d45e1d9b61","cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"id":"5f4d2243-faf6-4d57-be70-5f7d1292e33e","cell_type":"code","source":"from aiida import orm, load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":18,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":18},{"id":"232c9447-8274-4a82-9c8c-468af7ec6c43","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":19},{"id":"97150c3d-dd11-4b24-8e19-a088bb85a2c8","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":20},{"id":"539e0245-c31c-4fb6-badd-c6ef155b43fa","cell_type":"code","source":"wg.nodes.get_bulk_structure1.inputs.a.value = orm.Float(4.05)","metadata":{"trusted":true},"outputs":[],"execution_count":21},{"id":"dac6c4ad-297e-43b1-8d0a-ea841f3d6aa7","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"05/26/2025 05:57:55 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n05/26/2025 05:57:56 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PyFunction, finished.\n05/26/2025 05:57:56 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict2\n05/26/2025 05:57:56 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict2, type: PyFunction, finished.\n05/26/2025 05:57:56 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe3\n[jupyter-pythonworkflow-fl--x---35e2fba5:00217] 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\n05/26/2025 05:58:48 AM <86> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n05/26/2025 05:58:48 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe3, type: PyFunction, finished.\n05/26/2025 05:58:48 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures4\n05/26/2025 05:58:49 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: generate_structures4, type: PyFunction, finished.\n05/26/2025 05:58:49 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict5,get_dict7,get_dict9,get_dict11,get_dict13\n05/26/2025 05:58:49 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict5, type: PyFunction, finished.\n05/26/2025 05:58:50 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6,get_dict7,get_dict9,get_dict11,get_dict13\n[jupyter-pythonworkflow-fl--x---35e2fba5:00262] 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\n05/26/2025 05:59:03 AM <86> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:59:04 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n05/26/2025 05:59:04 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict7,get_dict9,get_dict11,get_dict13\n05/26/2025 05:59:04 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict7, type: PyFunction, finished.\n05/26/2025 05:59:05 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe8,get_dict9,get_dict11,get_dict13\n[jupyter-pythonworkflow-fl--x---35e2fba5:00273] 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\n05/26/2025 05:59:16 AM <86> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:59:16 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PyFunction, finished.\n05/26/2025 05:59:16 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict9,get_dict11,get_dict13\n05/26/2025 05:59:17 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict9, type: PyFunction, finished.\n05/26/2025 05:59:17 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe10,get_dict11,get_dict13\n[jupyter-pythonworkflow-fl--x---35e2fba5:00285] 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\n05/26/2025 05:59:28 AM <86> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:59:29 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe10, type: PyFunction, finished.\n05/26/2025 05:59:29 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict11,get_dict13\n05/26/2025 05:59:29 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict11, type: PyFunction, finished.\n05/26/2025 05:59:29 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe12,get_dict13\n[jupyter-pythonworkflow-fl--x---35e2fba5:00296] 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\n05/26/2025 05:59:43 AM <86> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:59:43 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe12, type: PyFunction, finished.\n05/26/2025 05:59:43 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict13\n05/26/2025 05:59:44 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_dict13, type: PyFunction, finished.\n05/26/2025 05:59:44 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe14\n[jupyter-pythonworkflow-fl--x---35e2fba5:00307] 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\n05/26/2025 05:59:58 AM <86> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/26/2025 05:59:59 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: calculate_qe14, type: PyFunction, finished.\n05/26/2025 05:59:59 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list15,get_list16\n05/26/2025 05:59:59 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_list15, type: PyFunction, finished.\n05/26/2025 05:59:59 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list16\n05/26/2025 06:00:00 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: get_list16, type: PyFunction, finished.\n05/26/2025 06:00:00 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve17\n05/26/2025 06:00:01 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve17, type: PyFunction, finished.\n05/26/2025 06:00:01 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/26/2025 06:00:01 AM <86> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [17|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":22},{"id":"9226d966-d90a-4ab2-9776-df1b50bd6a49","cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"id":"ba32ad83-385d-4f1a-87ea-28a1383e6067","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":23},{"id":"4a39c916-a45b-48ac-b4a9-914688c5d85e","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":24},{"id":"9b03e3e7-3dba-4640-9869-76916413bfc0","cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":25},{"id":"a3f050c8-9a29-461e-bb68-b6cdc5e1bb1b","cell_type":"code","source":"flow[0].function_kwargs[\"a\"] = 4.05","metadata":{"trusted":true},"outputs":[],"execution_count":26},{"id":"19df3f74-8c2f-4563-a78a-f5307a9e084d","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-05-26 06:00:02,662 INFO Started executing jobs locally\n2025-05-26 06:00:02,768 INFO Starting job - get_bulk_structure (2521ebff-2219-4e59-9425-4f3ab2851e2a)\n2025-05-26 06:00:02,771 INFO Finished job - get_bulk_structure (2521ebff-2219-4e59-9425-4f3ab2851e2a)\n2025-05-26 06:00:02,772 INFO Starting job - get_dict (16a60b49-6205-418e-a640-7a128111d10c)\n2025-05-26 06:00:02,776 INFO Finished job - get_dict (16a60b49-6205-418e-a640-7a128111d10c)\n2025-05-26 06:00:02,777 INFO Starting job - calculate_qe (ac278a4f-b187-498e-a234-4060e13f5b06)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---35e2fba5:00319] 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-05-26 06:00:53,435 INFO Finished job - calculate_qe (ac278a4f-b187-498e-a234-4060e13f5b06)\n2025-05-26 06:00:53,436 INFO Starting job - generate_structures (40215563-bfe0-47dc-a31b-124b15688007)\n2025-05-26 06:00:53,440 INFO Finished job - generate_structures (40215563-bfe0-47dc-a31b-124b15688007)\n2025-05-26 06:00:53,440 INFO Starting job - get_dict (65b32304-10b3-4711-9f55-2dcc5c405641)\n2025-05-26 06:00:53,442 INFO Finished job - get_dict (65b32304-10b3-4711-9f55-2dcc5c405641)\n2025-05-26 06:00:53,442 INFO Starting job - get_dict (77f8e7d0-2281-42cc-b39e-d7acc34f5458)\n2025-05-26 06:00:53,444 INFO Finished job - get_dict (77f8e7d0-2281-42cc-b39e-d7acc34f5458)\n2025-05-26 06:00:53,445 INFO Starting job - get_dict (65655d5b-ccf4-44bd-8c8d-6e833b329ede)\n2025-05-26 06:00:53,446 INFO Finished job - get_dict (65655d5b-ccf4-44bd-8c8d-6e833b329ede)\n2025-05-26 06:00:53,447 INFO Starting job - get_dict (bc4172ef-be1c-4ad0-86c0-156181da184a)\n2025-05-26 06:00:53,448 INFO Finished job - get_dict (bc4172ef-be1c-4ad0-86c0-156181da184a)\n2025-05-26 06:00:53,449 INFO Starting job - get_dict (46148184-d180-4a07-95f7-31bd43ada4b2)\n2025-05-26 06:00:53,451 INFO Finished job - get_dict (46148184-d180-4a07-95f7-31bd43ada4b2)\n2025-05-26 06:00:53,452 INFO Starting job - calculate_qe (1bae14bc-f3b4-4be4-a504-7c100cf1b54c)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---35e2fba5:00344] 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-05-26 06:01:03,461 INFO Finished job - calculate_qe (1bae14bc-f3b4-4be4-a504-7c100cf1b54c)\n2025-05-26 06:01:03,462 INFO Starting job - calculate_qe (8c6e7e3c-4acc-4434-b140-ce8c97100240)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---35e2fba5:00355] 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-05-26 06:01:16,096 INFO Finished job - calculate_qe (8c6e7e3c-4acc-4434-b140-ce8c97100240)\n2025-05-26 06:01:16,097 INFO Starting job - calculate_qe (45156baf-8ffa-4c3f-8da4-6b9121e77306)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---35e2fba5:00366] 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-05-26 06:01:28,481 INFO Finished job - calculate_qe (45156baf-8ffa-4c3f-8da4-6b9121e77306)\n2025-05-26 06:01:28,482 INFO Starting job - calculate_qe (7662120d-f6da-415a-9da8-5fbcadf166aa)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---35e2fba5:00378] 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-05-26 06:01:41,772 INFO Finished job - calculate_qe (7662120d-f6da-415a-9da8-5fbcadf166aa)\n2025-05-26 06:01:41,773 INFO Starting job - calculate_qe (9d38753b-3c9d-40f9-aa27-eceec701734b)\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---35e2fba5:00389] 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-05-26 06:01:54,979 INFO Finished job - calculate_qe (9d38753b-3c9d-40f9-aa27-eceec701734b)\n2025-05-26 06:01:54,980 INFO Starting job - get_list (cd676100-1e89-4293-a77f-7ca752f228cd)\n2025-05-26 06:01:54,983 INFO Finished job - get_list (cd676100-1e89-4293-a77f-7ca752f228cd)\n2025-05-26 06:01:54,984 INFO Starting job - get_list (44aeb1e8-6af4-4b97-8345-fc78009db91c)\n2025-05-26 06:01:54,987 INFO Finished job - get_list (44aeb1e8-6af4-4b97-8345-fc78009db91c)\n2025-05-26 06:01:54,987 INFO Starting job - plot_energy_volume_curve (09bec337-1bd0-434d-a322-14b6485445bf)\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-05-26 06:01:55,044 INFO Finished job - plot_energy_volume_curve (09bec337-1bd0-434d-a322-14b6485445bf)\n2025-05-26 06:01:55,045 INFO Finished executing jobs locally\n"},{"execution_count":27,"output_type":"execute_result","data":{"text/plain":"{'2521ebff-2219-4e59-9425-4f3ab2851e2a': {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/example_workflows/quantum_espresso'))},\n '16a60b49-6205-418e-a640-7a128111d10c': {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/example_workflows/quantum_espresso'))},\n 'ac278a4f-b187-498e-a234-4060e13f5b06': {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.045637215946772, 0.0, 0.0], [0.0, 4.045637215946772, 0.0], [0.0, 0.0, 4.045637215946772]], \"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.022818607973386, 2.0228186079733863], [2.022818607973386, 0.0, 2.0228186079733863], [2.022818607973386, 2.022818607973386, 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.9365262253611, 'volume': 66.2156744823591}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '40215563-bfe0-47dc-a31b-124b15688007': {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.9060197859620818, 0.0, 0.0], [0.0, 3.9060197859620818, 0.0], [0.0, 0.0, 3.9060197859620818]], \"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.9530098929810409, 1.9530098929810413], [1.9530098929810409, 0.0, 1.9530098929810413], [1.9530098929810409, 1.9530098929810409, 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.977053844317981, 0.0, 0.0], [0.0, 3.977053844317981, 0.0], [0.0, 0.0, 3.977053844317981]], \"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.9885269221589905, 1.988526922158991], [1.9885269221589905, 0.0, 1.988526922158991], [1.9885269221589905, 1.9885269221589905, 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.045637215946772, 0.0, 0.0], [0.0, 4.045637215946772, 0.0], [0.0, 0.0, 4.045637215946772]], \"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.022818607973386, 2.0228186079733863], [2.022818607973386, 0.0, 2.0228186079733863], [2.022818607973386, 2.022818607973386, 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.1119709272828855, 0.0, 0.0], [0.0, 4.1119709272828855, 0.0], [0.0, 0.0, 4.1119709272828855]], \"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.0559854636414427, 2.055985463641443], [2.0559854636414427, 0.0, 2.055985463641443], [2.0559854636414427, 2.0559854636414427, 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.176230852372109, 0.0, 0.0], [0.0, 4.176230852372109, 0.0], [0.0, 0.0, 4.176230852372109]], \"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.088115426186054, 2.0881154261860546], [2.088115426186054, 0.0, 2.0881154261860546], [2.088115426186054, 2.088115426186054, 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/example_workflows/quantum_espresso'))},\n '65b32304-10b3-4711-9f55-2dcc5c405641': {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.9060197859620818, 0.0, 0.0], [0.0, 3.9060197859620818, 0.0], [0.0, 0.0, 3.9060197859620818]], \"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.9530098929810409, 1.9530098929810413], [1.9530098929810409, 0.0, 1.9530098929810413], [1.9530098929810409, 1.9530098929810409, 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/example_workflows/quantum_espresso'))},\n '77f8e7d0-2281-42cc-b39e-d7acc34f5458': {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.977053844317981, 0.0, 0.0], [0.0, 3.977053844317981, 0.0], [0.0, 0.0, 3.977053844317981]], \"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.9885269221589905, 1.988526922158991], [1.9885269221589905, 0.0, 1.988526922158991], [1.9885269221589905, 1.9885269221589905, 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/example_workflows/quantum_espresso'))},\n '65655d5b-ccf4-44bd-8c8d-6e833b329ede': {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.045637215946772, 0.0, 0.0], [0.0, 4.045637215946772, 0.0], [0.0, 0.0, 4.045637215946772]], \"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.022818607973386, 2.0228186079733863], [2.022818607973386, 0.0, 2.0228186079733863], [2.022818607973386, 2.022818607973386, 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/example_workflows/quantum_espresso'))},\n 'bc4172ef-be1c-4ad0-86c0-156181da184a': {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.1119709272828855, 0.0, 0.0], [0.0, 4.1119709272828855, 0.0], [0.0, 0.0, 4.1119709272828855]], \"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.0559854636414427, 2.055985463641443], [2.0559854636414427, 0.0, 2.055985463641443], [2.0559854636414427, 2.0559854636414427, 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/example_workflows/quantum_espresso'))},\n '46148184-d180-4a07-95f7-31bd43ada4b2': {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.176230852372109, 0.0, 0.0], [0.0, 4.176230852372109, 0.0], [0.0, 0.0, 4.176230852372109]], \"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.088115426186054, 2.0881154261860546], [2.088115426186054, 0.0, 2.0881154261860546], [2.088115426186054, 2.088115426186054, 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/example_workflows/quantum_espresso'))},\n '1bae14bc-f3b4-4be4-a504-7c100cf1b54c': {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.906019768889115, 0.0, 0.0], [0.0, 3.906019768889115, 0.0], [0.0, 0.0, 3.906019768889115]], \"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.8457446150628, 'volume': 59.59410625267695}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '8c6e7e3c-4acc-4434-b140-ce8c97100240': {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.97705382693453, 0.0, 0.0], [0.0, 3.97705382693453, 0.0], [0.0, 0.0, 3.97705382693453]], \"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.9161488594593, 'volume': 62.90488993338123}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '45156baf-8ffa-4c3f-8da4-6b9121e77306': {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.045637198263546, 0.0, 0.0], [0.0, 4.045637198263546, 0.0], [0.0, 0.0, 4.045637198263546]], \"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.936524166837, 'volume': 66.21567361408542}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '7662120d-f6da-415a-9da8-5fbcadf166aa': {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.919286002583, 'volume': 69.52645729479006}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '9d38753b-3c9d-40f9-aa27-eceec701734b': {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.17623083411807, 0.0, 0.0], [0.0, 4.17623083411807, 0.0], [0.0, 0.0, 4.17623083411807]], \"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.8737904693417, 'volume': 72.83724097549414}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'cd676100-1e89-4293-a77f-7ca752f228cd': {1: Response(output=[59.59410625267695, 62.90488993338123, 66.21567361408542, 69.52645729479006, 72.83724097549414], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '44aeb1e8-6af4-4b97-8345-fc78009db91c': {1: Response(output=[-1074.8457446150628, -1074.9161488594593, -1074.936524166837, -1074.919286002583, -1074.8737904693417], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '09bec337-1bd0-434d-a322-14b6485445bf': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))}}"},"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+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":27},{"id":"e0c78db2-2ead-45d3-92ed-d087e19952ba","cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"id":"319f466c-def2-45c3-82ba-fffca5d036db","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":28},{"id":"ed2e964d-0251-488c-b623-28b794c46703","cell_type":"code","source":"delayed_object_lst = load_workflow_json(file_name=\"workflow.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_819583e9e3328a02d26efc433a60218b\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4994500>\n\n\n\nvolume_lst_473b24fac60dad6f79608b1dcecb81c3\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4994650>\n\n\n\nvolume_lst_473b24fac60dad6f79608b1dcecb81c3->create_function_job_819583e9e3328a02d26efc433a60218b\n\n\n\n\n\n0_8b5fadbd9d29d908c534248ef5e9315d\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4997950>\n\n\n\n0_8b5fadbd9d29d908c534248ef5e9315d->volume_lst_473b24fac60dad6f79608b1dcecb81c3\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_8b5fadbd9d29d908c534248ef5e9315d\n\n\n\n\n\n0_87110ed6b7c4d5bba96c34aeccc74df8\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e49959a0>\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_87110ed6b7c4d5bba96c34aeccc74df8\n\n\n\n\n\nenergy_lst_eac6ea907afb7d28a1e710cf28b1bc21\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4997920>\n\n\n\n0_87110ed6b7c4d5bba96c34aeccc74df8->energy_lst_eac6ea907afb7d28a1e710cf28b1bc21\n\n\n\n\n\ninput_dict_07bb4c07773ac201d36aae86ae8fe2fb\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4994980>\n\n\n\ninput_dict_07bb4c07773ac201d36aae86ae8fe2fb->0_8b5fadbd9d29d908c534248ef5e9315d\n\n\n\n\n\ninput_dict_07bb4c07773ac201d36aae86ae8fe2fb->0_87110ed6b7c4d5bba96c34aeccc74df8\n\n\n\n\n\nstructure_d288c970f4f39abdf5917ab0cdda5a74\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e49957c0>\n\n\n\nstructure_d288c970f4f39abdf5917ab0cdda5a74->input_dict_07bb4c07773ac201d36aae86ae8fe2fb\n\n\n\n\n\nstructure_24390cb51d2b8733707c1b0720f10ee1\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4660da0>\n\n\n\nstructure_24390cb51d2b8733707c1b0720f10ee1->structure_d288c970f4f39abdf5917ab0cdda5a74\n\n\n\n\n\nstructure_cd6455098e547b09fab57e4b2675af93\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e49955e0>\n\n\n\nstructure_24390cb51d2b8733707c1b0720f10ee1->structure_cd6455098e547b09fab57e4b2675af93\n\n\n\n\n\nstructure_f8eea3d580ba67799a85fc572d29ff35\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4996fc0>\n\n\n\nstructure_24390cb51d2b8733707c1b0720f10ee1->structure_f8eea3d580ba67799a85fc572d29ff35\n\n\n\n\n\nstructure_739f727cd683f52942cc877709ac6a2b\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4994170>\n\n\n\nstructure_24390cb51d2b8733707c1b0720f10ee1->structure_739f727cd683f52942cc877709ac6a2b\n\n\n\n\n\nstructure_f3b0da6e211f75868023edb2cb868ac4\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4995250>\n\n\n\nstructure_24390cb51d2b8733707c1b0720f10ee1->structure_f3b0da6e211f75868023edb2cb868ac4\n\n\n\n\n\ninput_dict_e3cba9a9960659f9dc41632e5327206e\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e49955b0>\n\n\n\nstructure_cd6455098e547b09fab57e4b2675af93->input_dict_e3cba9a9960659f9dc41632e5327206e\n\n\n\n\n\ninput_dict_e93f22327a731a96309da7daa63359ec\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4994710>\n\n\n\nstructure_f8eea3d580ba67799a85fc572d29ff35->input_dict_e93f22327a731a96309da7daa63359ec\n\n\n\n\n\ninput_dict_d66fbd538cf924fb2a8253bd48ef5c13\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e49979b0>\n\n\n\nstructure_739f727cd683f52942cc877709ac6a2b->input_dict_d66fbd538cf924fb2a8253bd48ef5c13\n\n\n\n\n\ninput_dict_7460bcb220d21c38a74f47f27eb9de2a\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4994b00>\n\n\n\nstructure_f3b0da6e211f75868023edb2cb868ac4->input_dict_7460bcb220d21c38a74f47f27eb9de2a\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_24390cb51d2b8733707c1b0720f10ee1\n\n\n\n\n\ninput_dict_100eb1069a97b70f80697e03d6e0582d\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4997d10>\n\n\n\ninput_dict_100eb1069a97b70f80697e03d6e0582d->structure_24390cb51d2b8733707c1b0720f10ee1\n\n\n\n\n\nstructure_719a0b45b126422daa0a45939db22a79\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4996990>\n\n\n\nstructure_719a0b45b126422daa0a45939db22a79->input_dict_100eb1069a97b70f80697e03d6e0582d\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_719a0b45b126422daa0a45939db22a79\n\n\n\n\n\na_aea0574e321c6f75f923c059730e9537\n\na=4.05\n\n\n\na_aea0574e321c6f75f923c059730e9537->structure_719a0b45b126422daa0a45939db22a79\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_719a0b45b126422daa0a45939db22a79\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_07bb4c07773ac201d36aae86ae8fe2fb\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_100eb1069a97b70f80697e03d6e0582d\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_e3cba9a9960659f9dc41632e5327206e\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_e93f22327a731a96309da7daa63359ec\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_d66fbd538cf924fb2a8253bd48ef5c13\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_7460bcb220d21c38a74f47f27eb9de2a\n\n\n\n\n\n1_94302ebcb371a379af51f312ddde4842\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4996090>\n\n\n\ninput_dict_e3cba9a9960659f9dc41632e5327206e->1_94302ebcb371a379af51f312ddde4842\n\n\n\n\n\n1_e7c02b63ee60e6027e07408744058bb7\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4995eb0>\n\n\n\ninput_dict_e3cba9a9960659f9dc41632e5327206e->1_e7c02b63ee60e6027e07408744058bb7\n\n\n\n\n\n2_dda2e9a60d8da7b2145dfb00de5c55c7\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e49950d0>\n\n\n\ninput_dict_e93f22327a731a96309da7daa63359ec->2_dda2e9a60d8da7b2145dfb00de5c55c7\n\n\n\n\n\n2_af768fbc51beefdd7dbf069476fb362c\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7c99dbbc7d70>\n\n\n\ninput_dict_e93f22327a731a96309da7daa63359ec->2_af768fbc51beefdd7dbf069476fb362c\n\n\n\n\n\n3_fa9d99441c09b3d51ecb159095ac606c\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e49969f0>\n\n\n\ninput_dict_d66fbd538cf924fb2a8253bd48ef5c13->3_fa9d99441c09b3d51ecb159095ac606c\n\n\n\n\n\n3_9c4338c233da3f7fbf2bd1577209c8a4\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7c99dbb7a5a0>\n\n\n\ninput_dict_d66fbd538cf924fb2a8253bd48ef5c13->3_9c4338c233da3f7fbf2bd1577209c8a4\n\n\n\n\n\n4_7c7d811c8847195569c2105c938c464a\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e4997230>\n\n\n\ninput_dict_7460bcb220d21c38a74f47f27eb9de2a->4_7c7d811c8847195569c2105c938c464a\n\n\n\n\n\n4_3e48dd53dfddd2346d05b7b64e55ab38\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7c99e446b770>\n\n\n\ninput_dict_7460bcb220d21c38a74f47f27eb9de2a->4_3e48dd53dfddd2346d05b7b64e55ab38\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_07bb4c07773ac201d36aae86ae8fe2fb\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_100eb1069a97b70f80697e03d6e0582d\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_e3cba9a9960659f9dc41632e5327206e\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_e93f22327a731a96309da7daa63359ec\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_d66fbd538cf924fb2a8253bd48ef5c13\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_7460bcb220d21c38a74f47f27eb9de2a\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_100eb1069a97b70f80697e03d6e0582d\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_07bb4c07773ac201d36aae86ae8fe2fb\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_100eb1069a97b70f80697e03d6e0582d\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_e3cba9a9960659f9dc41632e5327206e\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_e93f22327a731a96309da7daa63359ec\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_d66fbd538cf924fb2a8253bd48ef5c13\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_7460bcb220d21c38a74f47f27eb9de2a\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_d288c970f4f39abdf5917ab0cdda5a74\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_cd6455098e547b09fab57e4b2675af93\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_f8eea3d580ba67799a85fc572d29ff35\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_739f727cd683f52942cc877709ac6a2b\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_f3b0da6e211f75868023edb2cb868ac4\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_07bb4c07773ac201d36aae86ae8fe2fb\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_e3cba9a9960659f9dc41632e5327206e\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_e93f22327a731a96309da7daa63359ec\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_d66fbd538cf924fb2a8253bd48ef5c13\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_7460bcb220d21c38a74f47f27eb9de2a\n\n\n\n\n\n1_94302ebcb371a379af51f312ddde4842->volume_lst_473b24fac60dad6f79608b1dcecb81c3\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_94302ebcb371a379af51f312ddde4842\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_e7c02b63ee60e6027e07408744058bb7\n\n\n\n\n\n1_e7c02b63ee60e6027e07408744058bb7->energy_lst_eac6ea907afb7d28a1e710cf28b1bc21\n\n\n\n\n\n2_dda2e9a60d8da7b2145dfb00de5c55c7->volume_lst_473b24fac60dad6f79608b1dcecb81c3\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_dda2e9a60d8da7b2145dfb00de5c55c7\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_af768fbc51beefdd7dbf069476fb362c\n\n\n\n\n\n2_af768fbc51beefdd7dbf069476fb362c->energy_lst_eac6ea907afb7d28a1e710cf28b1bc21\n\n\n\n\n\n3_fa9d99441c09b3d51ecb159095ac606c->volume_lst_473b24fac60dad6f79608b1dcecb81c3\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_fa9d99441c09b3d51ecb159095ac606c\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_9c4338c233da3f7fbf2bd1577209c8a4\n\n\n\n\n\n3_9c4338c233da3f7fbf2bd1577209c8a4->energy_lst_eac6ea907afb7d28a1e710cf28b1bc21\n\n\n\n\n\n4_7c7d811c8847195569c2105c938c464a->volume_lst_473b24fac60dad6f79608b1dcecb81c3\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_7c7d811c8847195569c2105c938c464a\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_3e48dd53dfddd2346d05b7b64e55ab38\n\n\n\n\n\n4_3e48dd53dfddd2346d05b7b64e55ab38->energy_lst_eac6ea907afb7d28a1e710cf28b1bc21\n\n\n\n\n\nenergy_lst_eac6ea907afb7d28a1e710cf28b1bc21->create_function_job_819583e9e3328a02d26efc433a60218b\n\n\n\n\n"},"metadata":{}}],"execution_count":29},{"id":"476f0c22-564a-4e4b-8bd8-d68582a68710","cell_type":"code","source":"delayed_object_lst[0].input['a'] = 4.05","metadata":{"trusted":true},"outputs":[],"execution_count":30},{"id":"8bf584f4-52f5-41eb-9ce3-13847436e0a0","cell_type":"code","source":"delayed_object_lst[-1].pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_bulk_structure_2ca4aeae204ceaa28593c93054b07908 was saved and received the ID: 1\nThe job get_dict_1e47509b88d63a21fd421686554c8f4a was saved and received the ID: 2\nThe job calculate_qe_411e578f2700d09ba2df9a4c682b4582 was saved and received the ID: 3\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---35e2fba5:00404] 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_4d77d481fc8ea55229ec1ece04d63682 was saved and received the ID: 4\nThe job get_dict_83639a473c5a24b39cda4262a11ce660 was saved and received the ID: 5\nThe job calculate_qe_bc7507e47b3777418bec8bd6a10e8db9 was saved and received the ID: 6\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---35e2fba5:00423] 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_8911ea3b715c48fd9e6ebfd933827ad8 was saved and received the ID: 7\nThe job calculate_qe_3bf1743787b6db34eb1482e0cb2b49f2 was saved and received the ID: 8\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---35e2fba5:00435] 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_b30dd89506e55e06e63a020a5033af19 was saved and received the ID: 9\nThe job calculate_qe_7fdc96db9da025b4936748f5616be588 was saved and received the ID: 10\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---35e2fba5:00446] 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_899289e3717fb81edaca9c5c2b5d8f48 was saved and received the ID: 11\nThe job calculate_qe_9bb68591280fb0b90a58521fd3c6bc9d was saved and received the ID: 12\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---35e2fba5:00457] 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_12373ab37ecdba93cf91b2a4c3c016d6 was saved and received the ID: 13\nThe job calculate_qe_c41612cee84a2bc87674f7f0720f27af was saved and received the ID: 14\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-pythonworkflow-fl--x---35e2fba5:00468] 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_4a53d87f56ee9d519ca6c738ae2cef3f was saved and received the ID: 15\nThe job get_list_5a5af7c495c3bd034f3904760535ba3e was saved and received the ID: 16\nThe job plot_energy_volume_curve_aea478ca6598efbe0596a61e39e1154d 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":31},{"id":"92a9efbb-b592-4888-a2a4-310acde774c9","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# pyiron_workflow\n", + "## Define workflow with pyiron_workflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1", + "metadata": {}, + "outputs": [], + "source": [ + "from inspect import isfunction\n", + "import numpy as np\n", + "from pyiron_workflow import Workflow, to_function_node, as_function_node\n", + "from pyiron_workflow.api import inputs_to_dict\n", + "from python_workflow_definition.pyiron_workflow import write_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "from 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", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3", + "metadata": {}, + "outputs": [], + "source": [ + "@as_function_node(\"output_dict\")\n", + "def get_values_from_dict(input_dict):\n", + " return list(input_dict.values())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "workflow_json_filename = \"pyiron_workflow_qe.json\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "calculate_qe = to_function_node(\"calculate_qe\", _calculate_qe, \"calculate_qe\")\n", + "generate_structures = to_function_node(\"generate_structures\", _generate_structures, \"generate_structures\")\n", + "get_bulk_structure = to_function_node(\"get_bulk_structure\", _get_bulk_structure, \"get_bulk_structure\")\n", + "plot_energy_volume_curve = to_function_node(\"plot_energy_volume_curve\", _plot_energy_volume_curve, \"plot_energy_volume_curve\", validate_output_labels=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "wf = Workflow(\"my_workflow\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "wf.pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "wf.element = \"Al\"\n", + "wf.a = 4.04\n", + "wf.cubic = True\n", + "wf.structure = get_bulk_structure(\n", + " element=wf.element,\n", + " a=wf.a,\n", + " cubic=wf.cubic,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "wf.working_directory_0 = \"mini\"\n", + "input_dict = {\n", + " \"structure\": wf.structure, \n", + " \"pseudopotentials\": wf.pseudopotentials, \n", + " \"kpts\": (3, 3, 3), \n", + " \"calculation\": \"vc-relax\", \n", + " \"smearing\": 0.02,\n", + "}\n", + "wf.input_dict_0 = inputs_to_dict(\n", + " input_specification=list(input_dict.keys()),\n", + " **input_dict\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "wf.calc_mini = calculate_qe(\n", + " working_directory=wf.working_directory_0,\n", + " input_dict=wf.input_dict_0,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "number_of_strains = 5\n", + "wf.strain_lst = np.linspace(0.9, 1.1, number_of_strains)\n", + "wf.structure_lst = generate_structures( # the generate_structures() function is not available in the workflow graph\n", + " structure=wf.calc_mini[\"structure\"],\n", + " strain_lst=wf.strain_lst,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "job_strain_lst = []\n", + "for i in range(number_of_strains):\n", + " setattr(wf, \"input_dict_\" + str(i+1), inputs_to_dict(\n", + " input_specification=[\"structure\", \"pseudopotentials\", \"kpts\", \"calculation\", \"smearing\"],\n", + " structure=wf.structure_lst[\"s_\" + str(i)],\n", + " pseudopotentials=wf.pseudopotentials,\n", + " kpts=(3, 3, 3),\n", + " calculation=\"scf\",\n", + " smearing=0.02,\n", + " ))\n", + " setattr(wf, \"calc_strain_\" + str(i), calculate_qe(\n", + " working_directory=\"strain_\" + str(i),\n", + " input_dict=getattr(wf, \"input_dict_\" + str(i+1)),\n", + " ))\n", + " job_strain_lst.append(getattr(wf, \"calc_strain_\" + str(i)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "volume_dict = {\"s_\" + str(i): j[\"volume\"] for i, j in enumerate(job_strain_lst)}\n", + "wf.volume_dict = inputs_to_dict(\n", + " input_specification=list(volume_dict.keys()),\n", + " **volume_dict\n", + ")\n", + "energy_dict = {\"s_\" + str(i): j[\"energy\"] for i, j in enumerate(job_strain_lst)}\n", + "wf.energy_dict = inputs_to_dict(\n", + " input_specification=list(energy_dict.keys()),\n", + " **energy_dict,\n", + ")\n", + "wf.volume_lst = get_values_from_dict(\n", + " input_dict=wf.volume_dict\n", + ")\n", + "wf.energy_lst = get_values_from_dict(\n", + " input_dict=wf.energy_dict\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "wf.plot = plot_energy_volume_curve(volume_lst=wf.volume_lst, energy_lst=wf.energy_lst)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "write_workflow_json(graph_as_dict=wf.graph_as_dict, file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "!cat {workflow_json_filename}" + ] + }, + { + "cell_type": "markdown", + "id": "18", + "metadata": {}, + "source": [ + "## Load Workflow with aiida" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19", + "metadata": {}, + "outputs": [], + "source": [ + "from aiida import orm, load_profile\n", + "\n", + "load_profile()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.aiida import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "wg = load_workflow_json(file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "wg.nodes.get_bulk_structure1.inputs.a.value = orm.Float(4.05)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "wg.run()" + ] + }, + { + "cell_type": "markdown", + "id": "24", + "metadata": {}, + "source": [ + "## Load Workflow with jobflow" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "26", + "metadata": {}, + "outputs": [], + "source": [ + "from jobflow.managers.local import run_locally" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "flow = load_workflow_json(file_name=workflow_json_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28", + "metadata": {}, + "outputs": [], + "source": [ + "flow[0].function_kwargs[\"a\"] = 4.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29", + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] + }, + { + "cell_type": "markdown", + "id": "30", + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_base" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=\"workflow.json\")\n", + "delayed_object_lst[-1].draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[0].input['a'] = 4.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "34", + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "35", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/example_workflows/quantum_espresso/universal_workflow.ipynb b/example_workflows/quantum_espresso/universal_workflow.ipynb index 12568d2..dd437c2 100644 --- a/example_workflows/quantum_espresso/universal_workflow.ipynb +++ b/example_workflows/quantum_espresso/universal_workflow.ipynb @@ -1,505 +1,275 @@ { - "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": {} + "metadata": {}, + "source": [ + "# Load Quantum Espresso Energy Volume Curve Workflow" + ] }, { "cell_type": "markdown", - "source": "## Plot", - "metadata": {} + "metadata": {}, + "source": [ + "## Plot" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.plot import plot", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 1 + "source": [ + "from python_workflow_definition.plot import plot" + ] }, { "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\nworkflow.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\nworkflow.calculate_qe\n\n\n\n13->1\n\n\ninput_dict\n\n\n\n2\n\nworkflow.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\nworkflow.calculate_qe\n\n\n\n20->3\n\n\ninput_dict\n\n\n\n4\n\nworkflow.calculate_qe\n\n\n\n23->4\n\n\ninput_dict\n\n\n\n5\n\nworkflow.calculate_qe\n\n\n\n25->5\n\n\ninput_dict\n\n\n\n6\n\nworkflow.calculate_qe\n\n\n\n27->6\n\n\ninput_dict\n\n\n\n7\n\nworkflow.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\nworkflow.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\n32\n\nresult\n\n\n\n8->32\n\n\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 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot(file_name='workflow.json')" + ] }, { "cell_type": "markdown", - "source": "## Aiida ", - "metadata": {} + "metadata": {}, + "source": [ + "## Aiida " + ] }, { "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 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.aiida import load_workflow_json\n", + "from aiida import load_profile\n", + "load_profile()" + ] }, { "cell_type": "code", - "source": "wg = load_workflow_json(file_name='workflow.json')", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 4 + "source": [ + "wg = load_workflow_json(file_name='workflow.json')" + ] }, { "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": "ee61bd4c7d90449593a86d50e9eb6acc" - } - }, - "metadata": {} - } - ], - "execution_count": 5 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wg" + ] }, { "cell_type": "code", - "source": "wg.run()\n", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": "05/24/2025 06:05:21 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n05/24/2025 06:05:21 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PyFunction, finished.\n05/24/2025 06:05:21 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10\n05/24/2025 06:05:22 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n05/24/2025 06:05:22 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\n[jupyter-pythonworkflow-fl--x---d7231032:10748] 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\n05/24/2025 06:06:12 AM <10674> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n05/24/2025 06:06:12 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: calculate_qe2, type: PyFunction, finished.\n05/24/2025 06:06:12 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n05/24/2025 06:06:13 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: generate_structures3, type: PyFunction, finished.\n05/24/2025 06:06:13 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict11,get_dict12,get_dict13,get_dict14,get_dict15\n05/24/2025 06:06:14 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: get_dict11, type: PyFunction, finished.\n05/24/2025 06:06:14 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,get_dict12,get_dict13,get_dict14,get_dict15\n[jupyter-pythonworkflow-fl--x---d7231032:10760] 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\n05/24/2025 06:06:24 AM <10674> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/24/2025 06:06:24 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: calculate_qe4, type: PyFunction, finished.\n05/24/2025 06:06:24 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict13,get_dict14,get_dict15\n05/24/2025 06:06:25 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n05/24/2025 06:06:25 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe5,get_dict13,get_dict14,get_dict15\n[jupyter-pythonworkflow-fl--x---d7231032:10770] 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\n05/24/2025 06:06:36 AM <10674> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/24/2025 06:06:36 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: calculate_qe5, type: PyFunction, finished.\n05/24/2025 06:06:36 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict13,get_dict14,get_dict15\n05/24/2025 06:06:37 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: get_dict13, type: PyFunction, finished.\n05/24/2025 06:06:37 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6,get_dict14,get_dict15\n[jupyter-pythonworkflow-fl--x---d7231032:10781] 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\n05/24/2025 06:06:49 AM <10674> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/24/2025 06:06:49 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n05/24/2025 06:06:49 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict15\n05/24/2025 06:06:50 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n05/24/2025 06:06:50 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe7,get_dict15\n[jupyter-pythonworkflow-fl--x---d7231032:10792] 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\n05/24/2025 06:07:05 AM <10674> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/24/2025 06:07:06 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: calculate_qe7, type: PyFunction, finished.\n05/24/2025 06:07:06 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict15\n05/24/2025 06:07:06 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: get_dict15, type: PyFunction, finished.\n05/24/2025 06:07:06 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe8\n[jupyter-pythonworkflow-fl--x---d7231032:10804] 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\n05/24/2025 06:07:21 AM <10674> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n05/24/2025 06:07:21 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PyFunction, finished.\n05/24/2025 06:07:21 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list16,get_list17\n05/24/2025 06:07:22 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: get_list16, type: PyFunction, finished.\n05/24/2025 06:07:22 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n05/24/2025 06:07:22 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n05/24/2025 06:07:22 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n05/24/2025 06:07:23 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve9, type: PyFunction, finished.\n05/24/2025 06:07:23 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n05/24/2025 06:07:23 AM <10674> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [342|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 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wg.run()\n" + ] }, { "cell_type": "markdown", - "source": "## executorlib", - "metadata": {} + "metadata": {}, + "source": [ + "## executorlib" + ] }, { "cell_type": "code", - "source": "from executorlib import SingleNodeExecutor", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 7 + "source": [ + "from executorlib import SingleNodeExecutor" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.executorlib import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 8 + "source": [ + "from python_workflow_definition.executorlib import load_workflow_json" + ] }, { "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-pythonworkflow-fl--x---d7231032:10932] 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-pythonworkflow-fl--x---d7231032:11164] 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-pythonworkflow-fl--x---d7231032:11230] 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-pythonworkflow-fl--x---d7231032:11301] 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-pythonworkflow-fl--x---d7231032:11367] 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-pythonworkflow-fl--x---d7231032:11433] 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 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with SingleNodeExecutor(max_workers=1) as exe:\n", + " result = load_workflow_json(file_name=\"workflow.json\", exe=exe).result()" + ] }, { "cell_type": "code", - "source": "result", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 10 + "source": [ + "result" + ] }, { "cell_type": "markdown", - "source": "## jobflow", - "metadata": {} + "metadata": {}, + "source": [ + "## jobflow" + ] }, { "cell_type": "code", - "source": "from jobflow.managers.local import run_locally", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 11 + "source": [ + "from jobflow.managers.local import run_locally" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.jobflow import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 12 + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] }, { "cell_type": "code", - "source": "flow = load_workflow_json(file_name=\"workflow.json\")", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 13 + "source": [ + "flow = load_workflow_json(file_name=\"workflow.json\")" + ] }, { "cell_type": "code", - "source": "result = run_locally(flow)\nresult", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "2025-05-24 06:11:19,085 INFO Started executing jobs locally\n2025-05-24 06:11:19,088 INFO Starting job - get_bulk_structure (13fb19e6-ff0a-4b2e-9cdd-391f43580ede)\n2025-05-24 06:11:19,091 INFO Finished job - get_bulk_structure (13fb19e6-ff0a-4b2e-9cdd-391f43580ede)\n2025-05-24 06:11:19,091 INFO Starting job - get_dict (9d93f23c-2f31-4943-95eb-c30d527e0a7c)\n2025-05-24 06:11:19,093 INFO Finished job - get_dict (9d93f23c-2f31-4943-95eb-c30d527e0a7c)\n2025-05-24 06:11:19,093 INFO Starting job - calculate_qe (031ec4f2-37b7-4837-941d-943eb1a3a36f)\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "[jupyter-pythonworkflow-fl--x---d7231032:12088] 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-05-24 06:12:09,004 INFO Finished job - calculate_qe (031ec4f2-37b7-4837-941d-943eb1a3a36f)\n2025-05-24 06:12:09,005 INFO Starting job - generate_structures (c26bc0f8-4833-4913-ae54-676004a2cee5)\n2025-05-24 06:12:09,009 INFO Finished job - generate_structures (c26bc0f8-4833-4913-ae54-676004a2cee5)\n2025-05-24 06:12:09,009 INFO Starting job - get_dict (d68d9722-53d8-489e-b3dd-831637c677ce)\n2025-05-24 06:12:09,011 INFO Finished job - get_dict (d68d9722-53d8-489e-b3dd-831637c677ce)\n2025-05-24 06:12:09,011 INFO Starting job - get_dict (a2a5e5ca-2862-48d4-a3d2-3090bc48ee44)\n2025-05-24 06:12:09,013 INFO Finished job - get_dict (a2a5e5ca-2862-48d4-a3d2-3090bc48ee44)\n2025-05-24 06:12:09,014 INFO Starting job - get_dict (752bccfa-8200-4fee-bcae-799506e75b3f)\n2025-05-24 06:12:09,015 INFO Finished job - get_dict (752bccfa-8200-4fee-bcae-799506e75b3f)\n2025-05-24 06:12:09,016 INFO Starting job - get_dict (8f26bac2-370b-431a-8e67-16205b118a8e)\n2025-05-24 06:12:09,017 INFO Finished job - get_dict (8f26bac2-370b-431a-8e67-16205b118a8e)\n2025-05-24 06:12:09,018 INFO Starting job - get_dict (86078da3-b1d1-47e5-98b6-666c8d1c925f)\n2025-05-24 06:12:09,019 INFO Finished job - get_dict (86078da3-b1d1-47e5-98b6-666c8d1c925f)\n2025-05-24 06:12:09,020 INFO Starting job - calculate_qe (8bf26748-191f-48c0-b55a-3c00dc23cbd4)\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---d7231032:12101] 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-05-24 06:12:19,833 INFO Finished job - calculate_qe (8bf26748-191f-48c0-b55a-3c00dc23cbd4)\n2025-05-24 06:12:19,834 INFO Starting job - calculate_qe (e248cdb3-3984-4c9e-8ed9-2d8ea4d0053b)\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---d7231032:12111] 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-05-24 06:12:30,295 INFO Finished job - calculate_qe (e248cdb3-3984-4c9e-8ed9-2d8ea4d0053b)\n2025-05-24 06:12:30,296 INFO Starting job - calculate_qe (b99732df-2c29-471a-a9dd-b43cf0765295)\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "[jupyter-pythonworkflow-fl--x---d7231032:12121] 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-05-24 06:12:42,189 INFO Finished job - calculate_qe (b99732df-2c29-471a-a9dd-b43cf0765295)\n2025-05-24 06:12:42,189 INFO Starting job - calculate_qe (5316d29c-cdf2-4a43-934d-02518422acf5)\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---d7231032:12131] 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-05-24 06:12:55,607 INFO Finished job - calculate_qe (5316d29c-cdf2-4a43-934d-02518422acf5)\n2025-05-24 06:12:55,608 INFO Starting job - calculate_qe (dc161c3a-22d0-456d-9a79-bc0126f7296b)\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pythonworkflow-fl--x---d7231032:12141] 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-05-24 06:13:09,051 INFO Finished job - calculate_qe (dc161c3a-22d0-456d-9a79-bc0126f7296b)\n2025-05-24 06:13:09,052 INFO Starting job - get_list (a23aaea4-d7dc-4223-bedc-213cbf38f436)\n2025-05-24 06:13:09,054 INFO Finished job - get_list (a23aaea4-d7dc-4223-bedc-213cbf38f436)\n2025-05-24 06:13:09,055 INFO Starting job - get_list (09e90050-8621-403e-8f78-c50a7180f23c)\n2025-05-24 06:13:09,057 INFO Finished job - get_list (09e90050-8621-403e-8f78-c50a7180f23c)\n2025-05-24 06:13:09,058 INFO Starting job - plot_energy_volume_curve (1e007ae5-e596-4e71-baa0-7ac7a604a5fd)\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-05-24 06:13:09,114 INFO Finished job - plot_energy_volume_curve (1e007ae5-e596-4e71-baa0-7ac7a604a5fd)\n2025-05-24 06:13:09,115 INFO Finished executing jobs locally\n" - }, - { - "execution_count": 14, - "output_type": "execute_result", - "data": { - "text/plain": "{'13fb19e6-ff0a-4b2e-9cdd-391f43580ede': {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/example_workflows/quantum_espresso'))},\n '9d93f23c-2f31-4943-95eb-c30d527e0a7c': {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/example_workflows/quantum_espresso'))},\n '031ec4f2-37b7-4837-941d-943eb1a3a36f': {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.045637215947026, 0.0, 0.0], [0.0, 4.045637215947026, 0.0], [0.0, 0.0, 4.045637215947025]], \"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.0228186079735124, 2.0228186079735124], [2.0228186079735124, 0.0, 2.0228186079735124], [2.0228186079735124, 2.0228186079735124, 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.9365262253532, 'volume': 66.21567448237158}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'c26bc0f8-4833-4913-ae54-676004a2cee5': {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.906019785962327, 0.0, 0.0], [0.0, 3.906019785962327, 0.0], [0.0, 0.0, 3.906019785962326]], \"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.953009892981163, 1.9530098929811628], [1.953009892981163, 0.0, 1.9530098929811628], [1.953009892981163, 1.953009892981163, 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.9770538443182306, 0.0, 0.0], [0.0, 3.9770538443182306, 0.0], [0.0, 0.0, 3.9770538443182297]], \"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.9885269221591149, 1.9885269221591149], [1.9885269221591149, 0.0, 1.9885269221591149], [1.9885269221591149, 1.9885269221591149, 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.045637215947026, 0.0, 0.0], [0.0, 4.045637215947026, 0.0], [0.0, 0.0, 4.045637215947025]], \"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.0228186079735124, 2.0228186079735124], [2.0228186079735124, 0.0, 2.0228186079735124], [2.0228186079735124, 2.0228186079735124, 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.111970927283144, 0.0, 0.0], [0.0, 4.111970927283144, 0.0], [0.0, 0.0, 4.111970927283143]], \"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.0559854636415715, 2.0559854636415715], [2.0559854636415715, 0.0, 2.0559854636415715], [2.0559854636415715, 2.0559854636415715, 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.176230852372372, 0.0, 0.0], [0.0, 4.176230852372372, 0.0], [0.0, 0.0, 4.176230852372371]], \"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.0881154261861856, 2.0881154261861856], [2.0881154261861856, 0.0, 2.0881154261861856], [2.0881154261861856, 2.0881154261861856, 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/example_workflows/quantum_espresso'))},\n 'd68d9722-53d8-489e-b3dd-831637c677ce': {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.906019785962327, 0.0, 0.0], [0.0, 3.906019785962327, 0.0], [0.0, 0.0, 3.906019785962326]], \"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.953009892981163, 1.9530098929811628], [1.953009892981163, 0.0, 1.9530098929811628], [1.953009892981163, 1.953009892981163, 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/example_workflows/quantum_espresso'))},\n 'a2a5e5ca-2862-48d4-a3d2-3090bc48ee44': {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.9770538443182306, 0.0, 0.0], [0.0, 3.9770538443182306, 0.0], [0.0, 0.0, 3.9770538443182297]], \"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.9885269221591149, 1.9885269221591149], [1.9885269221591149, 0.0, 1.9885269221591149], [1.9885269221591149, 1.9885269221591149, 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/example_workflows/quantum_espresso'))},\n '752bccfa-8200-4fee-bcae-799506e75b3f': {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.045637215947026, 0.0, 0.0], [0.0, 4.045637215947026, 0.0], [0.0, 0.0, 4.045637215947025]], \"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.0228186079735124, 2.0228186079735124], [2.0228186079735124, 0.0, 2.0228186079735124], [2.0228186079735124, 2.0228186079735124, 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/example_workflows/quantum_espresso'))},\n '8f26bac2-370b-431a-8e67-16205b118a8e': {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.111970927283144, 0.0, 0.0], [0.0, 4.111970927283144, 0.0], [0.0, 0.0, 4.111970927283143]], \"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.0559854636415715, 2.0559854636415715], [2.0559854636415715, 0.0, 2.0559854636415715], [2.0559854636415715, 2.0559854636415715, 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/example_workflows/quantum_espresso'))},\n '86078da3-b1d1-47e5-98b6-666c8d1c925f': {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.176230852372372, 0.0, 0.0], [0.0, 4.176230852372372, 0.0], [0.0, 0.0, 4.176230852372371]], \"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.0881154261861856, 2.0881154261861856], [2.0881154261861856, 0.0, 2.0881154261861856], [2.0881154261861856, 2.0881154261861856, 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/example_workflows/quantum_espresso'))},\n '8bf26748-191f-48c0-b55a-3c00dc23cbd4': {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.906019768889365, 0.0, 0.0], [0.0, 3.906019768889365, 0.0], [0.0, 0.0, 3.906019768889365]], \"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.8457446150635, 'volume': 59.594106252688384}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'e248cdb3-3984-4c9e-8ed9-2d8ea4d0053b': {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.97705382693478, 0.0, 0.0], [0.0, 3.97705382693478, 0.0], [0.0, 0.0, 3.97705382693478]], \"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.916148859456, 'volume': 62.90488993339307}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'b99732df-2c29-471a-a9dd-b43cf0765295': {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.045637198263806, 0.0, 0.0], [0.0, 4.045637198263806, 0.0], [0.0, 0.0, 4.045637198263797]], \"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.21567361409807}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '5316d29c-cdf2-4a43-934d-02518422acf5': {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.111970909309976, 0.0, 0.0], [0.0, 4.111970909309976, 0.0], [0.0, 0.0, 4.111970909309976]], \"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.9192860025798, 'volume': 69.52645729480278}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'dc161c3a-22d0-456d-9a79-bc0126f7296b': {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.17623083411833, 0.0, 0.0], [0.0, 4.17623083411833, 0.0], [0.0, 0.0, 4.17623083411833]], \"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.8737904693403, 'volume': 72.8372409755078}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n 'a23aaea4-d7dc-4223-bedc-213cbf38f436': {1: Response(output=[59.594106252688384, 62.90488993339307, 66.21567361409807, 69.52645729480278, 72.8372409755078], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '09e90050-8621-403e-8f78-c50a7180f23c': {1: Response(output=[-1074.8457446150635, -1074.916148859456, -1074.9365241668336, -1074.9192860025798, -1074.8737904693403], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))},\n '1e007ae5-e596-4e71-baa0-7ac7a604a5fd': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan/example_workflows/quantum_espresso'))}}" - }, - "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 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = run_locally(flow)\n", + "result" + ] }, { "cell_type": "markdown", - "source": "## pyiron_base", - "metadata": {} + "metadata": {}, + "source": [ + "## pyiron_base" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.pyiron_base import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 15 + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] }, { "cell_type": "code", - "source": "delayed_object_lst = load_workflow_json(file_name=\"workflow.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_9adf79b116ef7d1bd6234b8bd3fb8790\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x768578177f50>\n\n\n\nvolume_lst_9ecc37695722ff26a909e7df66fad761\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x768578177ec0>\n\n\n\nvolume_lst_9ecc37695722ff26a909e7df66fad761->create_function_job_9adf79b116ef7d1bd6234b8bd3fb8790\n\n\n\n\n\n0_9ec2b766eb40591013f27b281c10fdf6\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7685781761e0>\n\n\n\n0_9ec2b766eb40591013f27b281c10fdf6->volume_lst_9ecc37695722ff26a909e7df66fad761\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_9ec2b766eb40591013f27b281c10fdf6\n\n\n\n\n\n0_2ee29abc84e19e2a89c493d954bca047\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x768578177470>\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_2ee29abc84e19e2a89c493d954bca047\n\n\n\n\n\nenergy_lst_d41078de6fda3484043c8f3407845d97\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x768578176240>\n\n\n\n0_2ee29abc84e19e2a89c493d954bca047->energy_lst_d41078de6fda3484043c8f3407845d97\n\n\n\n\n\ninput_dict_87f4e1381ab79d513e7ddd2deecdd386\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7685781773b0>\n\n\n\ninput_dict_87f4e1381ab79d513e7ddd2deecdd386->0_9ec2b766eb40591013f27b281c10fdf6\n\n\n\n\n\ninput_dict_87f4e1381ab79d513e7ddd2deecdd386->0_2ee29abc84e19e2a89c493d954bca047\n\n\n\n\n\nstructure_24283480cde4a82cb11a95ad8315004b\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7685781770b0>\n\n\n\nstructure_24283480cde4a82cb11a95ad8315004b->input_dict_87f4e1381ab79d513e7ddd2deecdd386\n\n\n\n\n\nstructure_199228a058c6c2abd4059cca704f33e6\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7685780d7170>\n\n\n\nstructure_199228a058c6c2abd4059cca704f33e6->structure_24283480cde4a82cb11a95ad8315004b\n\n\n\n\n\nstructure_02eea1a3dae4b8a2111c575ca7b757e4\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x768578176db0>\n\n\n\nstructure_199228a058c6c2abd4059cca704f33e6->structure_02eea1a3dae4b8a2111c575ca7b757e4\n\n\n\n\n\nstructure_f70fbf61dbacde3f86dbc99a31f544d6\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x768578176a80>\n\n\n\nstructure_199228a058c6c2abd4059cca704f33e6->structure_f70fbf61dbacde3f86dbc99a31f544d6\n\n\n\n\n\nstructure_5bb5ba75f27ad166411ec7f96a67d795\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x768578176750>\n\n\n\nstructure_199228a058c6c2abd4059cca704f33e6->structure_5bb5ba75f27ad166411ec7f96a67d795\n\n\n\n\n\nstructure_2a68a68e8c70db7870ac8e42f8b1865d\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x768578176420>\n\n\n\nstructure_199228a058c6c2abd4059cca704f33e6->structure_2a68a68e8c70db7870ac8e42f8b1865d\n\n\n\n\n\ninput_dict_adda488913baad1684ada5811fc1bf07\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x768578177020>\n\n\n\nstructure_02eea1a3dae4b8a2111c575ca7b757e4->input_dict_adda488913baad1684ada5811fc1bf07\n\n\n\n\n\ninput_dict_d5e1009e9a3698a7a581d7920d3308ba\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x768578176d20>\n\n\n\nstructure_f70fbf61dbacde3f86dbc99a31f544d6->input_dict_d5e1009e9a3698a7a581d7920d3308ba\n\n\n\n\n\ninput_dict_e4951879c0adfc1ee95c3f213d3670aa\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7685781769f0>\n\n\n\nstructure_5bb5ba75f27ad166411ec7f96a67d795->input_dict_e4951879c0adfc1ee95c3f213d3670aa\n\n\n\n\n\ninput_dict_a404d97e273a3ac600efe8c07b153592\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7685781766c0>\n\n\n\nstructure_2a68a68e8c70db7870ac8e42f8b1865d->input_dict_a404d97e273a3ac600efe8c07b153592\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_199228a058c6c2abd4059cca704f33e6\n\n\n\n\n\ninput_dict_537467c3235749e6bbce7787ac63fcf2\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x768578175910>\n\n\n\ninput_dict_537467c3235749e6bbce7787ac63fcf2->structure_199228a058c6c2abd4059cca704f33e6\n\n\n\n\n\nstructure_1143d046335e4294dac52196bc2767db\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x768578175b50>\n\n\n\nstructure_1143d046335e4294dac52196bc2767db->input_dict_537467c3235749e6bbce7787ac63fcf2\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_1143d046335e4294dac52196bc2767db\n\n\n\n\n\na_aea0574e321c6f75f923c059730e9537\n\na=4.05\n\n\n\na_aea0574e321c6f75f923c059730e9537->structure_1143d046335e4294dac52196bc2767db\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_1143d046335e4294dac52196bc2767db\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_87f4e1381ab79d513e7ddd2deecdd386\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_537467c3235749e6bbce7787ac63fcf2\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_adda488913baad1684ada5811fc1bf07\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_d5e1009e9a3698a7a581d7920d3308ba\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_e4951879c0adfc1ee95c3f213d3670aa\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_a404d97e273a3ac600efe8c07b153592\n\n\n\n\n\n1_191bdde6d29a8110f9185c2dc2f36d40\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x768578176210>\n\n\n\ninput_dict_adda488913baad1684ada5811fc1bf07->1_191bdde6d29a8110f9185c2dc2f36d40\n\n\n\n\n\n1_4fc4ea22f90e9c5395aebcd832723a0b\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x768578177740>\n\n\n\ninput_dict_adda488913baad1684ada5811fc1bf07->1_4fc4ea22f90e9c5395aebcd832723a0b\n\n\n\n\n\n2_19f8c443d3f233fce65b180b8671f9d3\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x768578176810>\n\n\n\ninput_dict_d5e1009e9a3698a7a581d7920d3308ba->2_19f8c443d3f233fce65b180b8671f9d3\n\n\n\n\n\n2_a91f85ab07dda5e77e64539693175399\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7685781771a0>\n\n\n\ninput_dict_d5e1009e9a3698a7a581d7920d3308ba->2_a91f85ab07dda5e77e64539693175399\n\n\n\n\n\n3_3ede2f537cf839143078e1512ff2ef2f\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7685781759d0>\n\n\n\ninput_dict_e4951879c0adfc1ee95c3f213d3670aa->3_3ede2f537cf839143078e1512ff2ef2f\n\n\n\n\n\n3_5d8eeb1260eb131e15c0788d790e6449\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x768578176ed0>\n\n\n\ninput_dict_e4951879c0adfc1ee95c3f213d3670aa->3_5d8eeb1260eb131e15c0788d790e6449\n\n\n\n\n\n4_25a83d640c1b83e1d1be6ab4ab2fe22d\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x768578177c50>\n\n\n\ninput_dict_a404d97e273a3ac600efe8c07b153592->4_25a83d640c1b83e1d1be6ab4ab2fe22d\n\n\n\n\n\n4_24178a0d53ab74cdcd2d82759a89311b\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x768578177140>\n\n\n\ninput_dict_a404d97e273a3ac600efe8c07b153592->4_24178a0d53ab74cdcd2d82759a89311b\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_87f4e1381ab79d513e7ddd2deecdd386\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_537467c3235749e6bbce7787ac63fcf2\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_adda488913baad1684ada5811fc1bf07\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_d5e1009e9a3698a7a581d7920d3308ba\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_e4951879c0adfc1ee95c3f213d3670aa\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_a404d97e273a3ac600efe8c07b153592\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_537467c3235749e6bbce7787ac63fcf2\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_87f4e1381ab79d513e7ddd2deecdd386\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_537467c3235749e6bbce7787ac63fcf2\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_adda488913baad1684ada5811fc1bf07\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_d5e1009e9a3698a7a581d7920d3308ba\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_e4951879c0adfc1ee95c3f213d3670aa\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_a404d97e273a3ac600efe8c07b153592\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_24283480cde4a82cb11a95ad8315004b\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_02eea1a3dae4b8a2111c575ca7b757e4\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_f70fbf61dbacde3f86dbc99a31f544d6\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_5bb5ba75f27ad166411ec7f96a67d795\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_2a68a68e8c70db7870ac8e42f8b1865d\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_87f4e1381ab79d513e7ddd2deecdd386\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_adda488913baad1684ada5811fc1bf07\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_d5e1009e9a3698a7a581d7920d3308ba\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_e4951879c0adfc1ee95c3f213d3670aa\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_a404d97e273a3ac600efe8c07b153592\n\n\n\n\n\n1_191bdde6d29a8110f9185c2dc2f36d40->volume_lst_9ecc37695722ff26a909e7df66fad761\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_191bdde6d29a8110f9185c2dc2f36d40\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_4fc4ea22f90e9c5395aebcd832723a0b\n\n\n\n\n\n1_4fc4ea22f90e9c5395aebcd832723a0b->energy_lst_d41078de6fda3484043c8f3407845d97\n\n\n\n\n\n2_19f8c443d3f233fce65b180b8671f9d3->volume_lst_9ecc37695722ff26a909e7df66fad761\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_19f8c443d3f233fce65b180b8671f9d3\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_a91f85ab07dda5e77e64539693175399\n\n\n\n\n\n2_a91f85ab07dda5e77e64539693175399->energy_lst_d41078de6fda3484043c8f3407845d97\n\n\n\n\n\n3_3ede2f537cf839143078e1512ff2ef2f->volume_lst_9ecc37695722ff26a909e7df66fad761\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_3ede2f537cf839143078e1512ff2ef2f\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_5d8eeb1260eb131e15c0788d790e6449\n\n\n\n\n\n3_5d8eeb1260eb131e15c0788d790e6449->energy_lst_d41078de6fda3484043c8f3407845d97\n\n\n\n\n\n4_25a83d640c1b83e1d1be6ab4ab2fe22d->volume_lst_9ecc37695722ff26a909e7df66fad761\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_25a83d640c1b83e1d1be6ab4ab2fe22d\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_24178a0d53ab74cdcd2d82759a89311b\n\n\n\n\n\n4_24178a0d53ab74cdcd2d82759a89311b->energy_lst_d41078de6fda3484043c8f3407845d97\n\n\n\n\n\nenergy_lst_d41078de6fda3484043c8f3407845d97->create_function_job_9adf79b116ef7d1bd6234b8bd3fb8790\n\n\n\n\n" - }, - "metadata": {} - } - ], - "execution_count": 16 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst = load_workflow_json(file_name=\"workflow.json\")\n", + "delayed_object_lst[-1].draw()" + ] }, { "cell_type": "code", - "source": "delayed_object_lst[-1].pull()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "The job get_bulk_structure_2ca4aeae204ceaa28593c93054b07908 was saved and received the ID: 1\nThe job get_dict_1e47509b88d63a21fd421686554c8f4a was saved and received the ID: 2\nThe job calculate_qe_411e578f2700d09ba2df9a4c682b4582 was saved and received the ID: 3\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "[jupyter-pythonworkflow-fl--x---d7231032:12175] 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_29f44e1952b8f5678d84a2b016899fce was saved and received the ID: 4\nThe job get_dict_ef87933d61756398c7394b1132327107 was saved and received the ID: 5\nThe job calculate_qe_7a90048d1de9ecbd9a0d65912ce16a05 was saved and received the ID: 6\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "[jupyter-pythonworkflow-fl--x---d7231032:12194] 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_8df97e882e2a6b51191dddf174e87731 was saved and received the ID: 7\nThe job calculate_qe_78019c29f3a9ab2782b972a871cf7b97 was saved and received the ID: 8\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "[jupyter-pythonworkflow-fl--x---d7231032:12205] 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_be1c027670e9498836f67834851d04cc was saved and received the ID: 9\nThe job calculate_qe_aaa66ba36e55a9cc577037576b1e6ccb was saved and received the ID: 10\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "[jupyter-pythonworkflow-fl--x---d7231032:12216] 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_52b5c75d597a1c4b528615e1125a0896 was saved and received the ID: 11\nThe job calculate_qe_62d76f231acf9ea944e9c695277ff831 was saved and received the ID: 12\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "[jupyter-pythonworkflow-fl--x---d7231032:12227] 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_1c3ed4191b35cf54ac773bb8172f6947 was saved and received the ID: 13\nThe job calculate_qe_2589d637ad774f38e26fdd2b4529fcca was saved and received the ID: 14\n" - }, - { - "name": "stderr", - "output_type": "stream", - "text": "[jupyter-pythonworkflow-fl--x---d7231032:12237] 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_274bff6e81bec86553cdd07a055e2b5e was saved and received the ID: 15\nThe job get_list_4457d79d3504f678b6f74963dd8f0e4c was saved and received the ID: 16\nThe job plot_energy_volume_curve_33e1f4fbca145ac4d2a72d20544cad9d 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 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delayed_object_lst[-1].pull()" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "## Load Workflow with pyiron_workflow" + "metadata": {}, + "source": [ + "## Load Workflow with pyiron_workflow" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "from python_workflow_definition.pyiron_workflow import load_workflow_json" + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_workflow import load_workflow_json" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf = load_workflow_json(file_name=\"workflow.json\")" + "metadata": {}, + "outputs": [], + "source": [ + "wf = load_workflow_json(file_name=\"workflow.json\")" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.draw(size=(10,10))" + "metadata": {}, + "outputs": [], + "source": [ + "wf.draw(size=(10,10))" + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "wf.run()" + "metadata": {}, + "outputs": [], + "source": [ + "wf.run()" + ] }, { "cell_type": "markdown", - "source": "## Python", - "metadata": {} + "metadata": {}, + "source": [ + "## Python" + ] }, { "cell_type": "code", - "source": "from python_workflow_definition.purepython import load_workflow_json", - "metadata": { - "trusted": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": 18 + "source": [ + "from python_workflow_definition.purepython import load_workflow_json" + ] }, { "cell_type": "code", - "source": "load_workflow_json(file_name=\"workflow.json\")", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": "[jupyter-pythonworkflow-fl--x---d7231032:12248] 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-pythonworkflow-fl--x---d7231032:12262] 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-pythonworkflow-fl--x---d7231032:12277] 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-pythonworkflow-fl--x---d7231032:12289] 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-pythonworkflow-fl--x---d7231032:12299] 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-pythonworkflow-fl--x---d7231032:12309] 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 + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "load_workflow_json(file_name=\"workflow.json\")" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 }