From 22ae07d6372a92597d50efea15967834266eb246 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 4 Apr 2025 17:17:54 +0200 Subject: [PATCH 1/2] Add jupyter book --- .github/workflows/book.yml | 25 + .github/workflows/deploy.yml | 33 + aiida_nfdi.ipynb | 2 +- aiida_qe.ipynb | 1816 +--------------------------------- aiida_simple.ipynb | 279 +----- book/_toc.yml | 20 + book/conclusion.md | 3 + book/config.yml | 13 + book/environment.yml | 4 + book/evcurve.md | 4 + book/intro.md | 21 + book/nfdi.md | 4 + book/simple.md | 50 + jobflow_nfdi.ipynb | 2 +- jobflow_qe.ipynb | 1282 +----------------------- jobflow_simple.ipynb | 2 +- pyiron_base_nfdi.ipynb | 2 +- pyiron_base_qe.ipynb | 564 +---------- pyiron_base_simple.ipynb | 2 +- 19 files changed, 186 insertions(+), 3942 deletions(-) create mode 100644 .github/workflows/book.yml create mode 100644 .github/workflows/deploy.yml create mode 100644 book/_toc.yml create mode 100644 book/conclusion.md create mode 100644 book/config.yml create mode 100644 book/environment.yml create mode 100644 book/evcurve.md create mode 100644 book/intro.md create mode 100644 book/nfdi.md create mode 100644 book/simple.md diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml new file mode 100644 index 0000000..2d606b2 --- /dev/null +++ b/.github/workflows/book.yml @@ -0,0 +1,25 @@ +name: Jupyterbook + +on: + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + python-version: "3.12" + environment-file: book/environment.yml + auto-activate-base: false + - name: Install Jupyterbook + shell: bash -l {0} + run: | + cp book/_config.yml . + cp book/_toc.yml . + cp book/*.md . + jupyter-book build . --path-output public + - run: mv public/_build/html public_html + - run: touch public_html/.nojekyll \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..f8649e3 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,33 @@ +name: Deploy + +on: + push: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + python-version: "3.12" + environment-file: book/environment.yml + auto-activate-base: false + - name: Install Jupyterbook + shell: bash -l {0} + run: | + cp book/_config.yml . + cp book/_toc.yml . + cp book/*.md . + jupyter-book build . --path-output public + - run: mv public/_build/html public_html + - run: touch public_html/.nojekyll + - name: Deploy 🚀 + 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 diff --git a/aiida_nfdi.ipynb b/aiida_nfdi.ipynb index ea8d880..2929589 100644 --- a/aiida_nfdi.ipynb +++ b/aiida_nfdi.ipynb @@ -1 +1 @@ -{"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":"https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements","metadata":{}},{"id":"6d86e804-245a-4d96-a1a3-1bc3216c3646","cell_type":"code","source":"!conda env list","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"\n# conda environments:\n#\nbase /srv/conda\nnotebook * /srv/conda/envs/notebook\npostprocessing /srv/conda/envs/postprocessing\npreprocessing /srv/conda/envs/preprocessing\nprocessing /srv/conda/envs/processing\n\n"}],"execution_count":1},{"id":"11e09b78-cb72-465f-9c8b-5b77f0aa729c","cell_type":"markdown","source":"# Preprocessing ","metadata":{}},{"id":"a76e6c0a-98f2-4436-af10-8097da183341","cell_type":"code","source":"from nfdi_ing_workflow import (\n generate_mesh,\n convert_to_xdmf as _convert_to_xdmf,\n poisson as _poisson,\n plot_over_line,\n substitute_macros,\n compile_paper,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"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":3,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":3},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"convert_to_xdmf = task(outputs=[\"xdmf_file\", \"h5_file\"])(_convert_to_xdmf)\npoisson = task(outputs=[\"numdofs\", \"pvd_file\", \"vtu_file\"])(_poisson)","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"8d911f98-3b80-457f-a0f4-3cb37ebf1691","cell_type":"code","source":"domain_size = orm.Float(2.0)","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"1e7e14ba-c4a7-485f-9bd8-44625830cca0","cell_type":"code","source":"wg = WorkGraph(\"wg-nfdi\")","metadata":{"trusted":true},"outputs":[],"execution_count":6},{"id":"cf1e22d2-9ce5-488f-8048-308d7d5d4966","cell_type":"markdown","source":"## generate mesh","metadata":{}},{"id":"71d411b6-cbec-489e-99e3-ba71680bcb5b","cell_type":"code","source":"gmsh_output_file = wg.add_task(\n generate_mesh,\n name=\"generate_mesh\",\n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":7},{"id":"019938e7-8b41-47a9-b226-00e05dabc193","cell_type":"markdown","source":"## convert to xdmf","metadata":{}},{"id":"1d0d9804-f250-48b3-a5d0-a546d520f79b","cell_type":"code","source":"meshio_output_dict = wg.add_task(\n convert_to_xdmf,\n name=\"convert_to_xdmf\",\n gmsh_output_file=gmsh_output_file.outputs.result,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":8},{"id":"ceb0b643-caaa-426c-9781-28703440e647","cell_type":"markdown","source":"# Processing","metadata":{}},{"id":"11815a8b-319c-4ff3-8eae-330bf6e58eee","cell_type":"markdown","source":"## poisson","metadata":{}},{"id":"7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590","cell_type":"code","source":"poisson_dict = wg.add_task(\n poisson,\n name=\"poisson\",\n meshio_output_xdmf=meshio_output_dict.outputs.xdmf_file, \n meshio_output_h5=meshio_output_dict.outputs.h5_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":9},{"id":"bc8a8634-029e-4337-96a2-a1f284cb4c38","cell_type":"markdown","source":"# Postprocessing","metadata":{}},{"id":"157c5386-91a3-4e21-ac65-8f947f2d62fa","cell_type":"markdown","source":"## plot over line","metadata":{}},{"id":"3c4a29b0-eb1e-490a-8be0-e03cfff15e0a","cell_type":"code","source":"pvbatch_output_file = wg.add_task(\n plot_over_line,\n name=\"plot_over_line\",\n poisson_output_pvd_file=poisson_dict.outputs.pvd_file, \n poisson_output_vtu_file=poisson_dict.outputs.vtu_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":10},{"id":"54f1d4bd-b944-470f-9cf8-30e64a24eb6d","cell_type":"markdown","source":"## substitute macros","metadata":{}},{"id":"a0a4c233-322d-4723-9627-62ca2487bfa9","cell_type":"code","source":"macros_tex_file = wg.add_task(\n substitute_macros,\n name=\"substitute_macros\",\n pvbatch_output_file=pvbatch_output_file.outputs.result, \n ndofs=poisson_dict.outputs.numdofs, \n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":11},{"id":"2031b693-acf3-48bd-bb00-e33f669381e9","cell_type":"markdown","source":"## compile paper","metadata":{}},{"id":"c281408f-e63d-4380-a7e6-c595d49fbb8f","cell_type":"code","source":"paper_output = wg.add_task(\n compile_paper,\n name=\"compile_paper\",\n macros_tex=macros_tex_file.outputs.result, \n plot_file=pvbatch_output_file.outputs.result,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"id":"a384d70a-8ef5-4fdd-880c-56ac7eaf87b9","cell_type":"code","source":"wg","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': 'wg-nfdi…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"9109dbf365a6472fb6b3fa575a12a986"}},"metadata":{}}],"execution_count":13},{"id":"5c1b0200-bba3-484d-ac49-f582898e974f","cell_type":"markdown","source":"# Convert ","metadata":{}},{"id":"196faf18-c46b-4f42-a652-698d2c580221","cell_type":"code","source":"from python_workflow_definition.aiida import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":14},{"id":"fb23ad9c-76fd-4c0b-b546-e305d6c49796","cell_type":"code","source":"workflow_json_filename = \"aiida_nfdi.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"id":"4139547a-9717-4708-b1a5-8202a0382d77","cell_type":"code","source":"write_workflow_json(wg=wg, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[{"execution_count":16,"output_type":"execute_result","data":{"text/plain":"{'nodes': {'0': 'nfdi_ing_workflow.generate_mesh',\n '1': 'nfdi_ing_workflow.convert_to_xdmf',\n '2': 'nfdi_ing_workflow.poisson',\n '3': 'nfdi_ing_workflow.plot_over_line',\n '4': 'nfdi_ing_workflow.substitute_macros',\n '5': 'nfdi_ing_workflow.compile_paper',\n '6': 2.0},\n 'edges': [{'tn': 1, 'th': 'gmsh_output_file', 'sn': 0, 'sh': None},\n {'tn': 2, 'th': 'meshio_output_xdmf', 'sn': 1, 'sh': 'xdmf_file'},\n {'tn': 2, 'th': 'meshio_output_h5', 'sn': 1, 'sh': 'h5_file'},\n {'tn': 3, 'th': 'poisson_output_pvd_file', 'sn': 2, 'sh': 'pvd_file'},\n {'tn': 3, 'th': 'poisson_output_vtu_file', 'sn': 2, 'sh': 'vtu_file'},\n {'tn': 4, 'th': 'pvbatch_output_file', 'sn': 3, 'sh': None},\n {'tn': 4, 'th': 'ndofs', 'sn': 2, 'sh': 'numdofs'},\n {'tn': 5, 'th': 'macros_tex', 'sn': 4, 'sh': None},\n {'tn': 5, 'th': 'plot_file', 'sn': 3, 'sh': None},\n {'tn': 0, 'th': 'domain_size', 'sn': 6, 'sh': None},\n {'tn': 4, 'th': 'domain_size', 'sn': 6, 'sh': None}]}"},"metadata":{}}],"execution_count":16},{"id":"490df6a3-e402-4620-acf2-dbcfa0c5d537","cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\n \"nodes\": {\n \"0\": \"nfdi_ing_workflow.generate_mesh\",\n \"1\": \"nfdi_ing_workflow.convert_to_xdmf\",\n \"2\": \"nfdi_ing_workflow.poisson\",\n \"3\": \"nfdi_ing_workflow.plot_over_line\",\n \"4\": \"nfdi_ing_workflow.substitute_macros\",\n \"5\": \"nfdi_ing_workflow.compile_paper\",\n \"6\": 2.0\n },\n \"edges\": [\n {\n \"tn\": 1,\n \"th\": \"gmsh_output_file\",\n \"sn\": 0,\n \"sh\": null\n },\n {\n \"tn\": 2,\n \"th\": \"meshio_output_xdmf\",\n \"sn\": 1,\n \"sh\": \"xdmf_file\"\n },\n {\n \"tn\": 2,\n \"th\": \"meshio_output_h5\",\n \"sn\": 1,\n \"sh\": \"h5_file\"\n },\n {\n \"tn\": 3,\n \"th\": \"poisson_output_pvd_file\",\n \"sn\": 2,\n \"sh\": \"pvd_file\"\n },\n {\n \"tn\": 3,\n \"th\": \"poisson_output_vtu_file\",\n \"sn\": 2,\n \"sh\": \"vtu_file\"\n },\n {\n \"tn\": 4,\n \"th\": \"pvbatch_output_file\",\n \"sn\": 3,\n \"sh\": null\n },\n {\n \"tn\": 4,\n \"th\": \"ndofs\",\n \"sn\": 2,\n \"sh\": \"numdofs\"\n },\n {\n \"tn\": 5,\n \"th\": \"macros_tex\",\n \"sn\": 4,\n \"sh\": null\n },\n {\n \"tn\": 5,\n \"th\": \"plot_file\",\n \"sn\": 3,\n \"sh\": null\n },\n {\n \"tn\": 0,\n \"th\": \"domain_size\",\n \"sn\": 6,\n \"sh\": null\n },\n {\n \"tn\": 4,\n \"th\": \"domain_size\",\n \"sn\": 6,\n \"sh\": null\n }\n ]\n}"}],"execution_count":17},{"id":"11a829e2-face-469f-b343-2c95763b1f13","cell_type":"markdown","source":"# Load Workflow with jobflow","metadata":{}},{"id":"4f3acabe-55df-479a-af4d-a23a80c4660d","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":18},{"id":"b6ba9444-a2c8-451b-b74c-19b0f69ba369","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":19},{"id":"c3528d55-6bf7-47ed-a110-65c47446ba92","cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":20},{"id":"5ef48778-4209-425f-8c6b-85a4cd2f92ec","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-02 14:39:41,684 INFO Started executing jobs locally\n2025-04-02 14:39:42,066 INFO Starting job - generate_mesh (9d3cd286-d36b-4c4b-ab41-5ea2aaf94454)\n2025-04-02 14:39:44,129 INFO Finished job - generate_mesh (9d3cd286-d36b-4c4b-ab41-5ea2aaf94454)\n2025-04-02 14:39:44,129 INFO Starting job - convert_to_xdmf (f8a7da94-38c6-4858-a415-511dfe1d1ebd)\n2025-04-02 14:39:46,031 INFO Finished job - convert_to_xdmf (f8a7da94-38c6-4858-a415-511dfe1d1ebd)\n2025-04-02 14:39:46,032 INFO Starting job - poisson (7a7ff51b-7640-4d27-9c61-c7f782071105)\n2025-04-02 14:39:56,507 INFO Finished job - poisson (7a7ff51b-7640-4d27-9c61-c7f782071105)\n2025-04-02 14:39:56,508 INFO Starting job - plot_over_line (db30575b-8415-49e0-9574-5c067584e4b3)\n2025-04-02 14:39:59,332 INFO Finished job - plot_over_line (db30575b-8415-49e0-9574-5c067584e4b3)\n2025-04-02 14:39:59,333 INFO Starting job - substitute_macros (4dda58c4-a9e4-4ebf-ab9e-7be37f384162)\n2025-04-02 14:40:00,659 INFO Finished job - substitute_macros (4dda58c4-a9e4-4ebf-ab9e-7be37f384162)\n2025-04-02 14:40:00,660 INFO Starting job - compile_paper (8bb76f99-2c92-4bd9-9a04-722632354b82)\n2025-04-02 14:41:18,392 INFO Finished job - compile_paper (8bb76f99-2c92-4bd9-9a04-722632354b82)\n2025-04-02 14:41:18,393 INFO Finished executing jobs locally\n"},{"execution_count":21,"output_type":"execute_result","data":{"text/plain":"{'9d3cd286-d36b-4c4b-ab41-5ea2aaf94454': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'f8a7da94-38c6-4858-a415-511dfe1d1ebd': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '7a7ff51b-7640-4d27-9c61-c7f782071105': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'db30575b-8415-49e0-9574-5c067584e4b3': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '4dda58c4-a9e4-4ebf-ab9e-7be37f384162': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '8bb76f99-2c92-4bd9-9a04-722632354b82': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":21},{"id":"397b16a2-e1ec-4eec-8562-1c84f585c347","cell_type":"markdown","source":"# Load Workflow with pyiron_base","metadata":{}},{"id":"fdde6b82-b51d-434a-a9a8-5a8c31bbb429","cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":22},{"id":"be4d5d93-e9f6-4072-a6be-0ee5dc93590f","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":23},{"id":"4db75587-5f4c-416d-a1f6-c949077fa2ca","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":" 0%| | 0/2 [00:00","image/svg+xml":"\n\n\n\n\ncreate_function_job_53eb85d6d82fecfbbf97af61436a1e20\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f7900d70>\n\n\n\nmacros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f7900b00>\n\n\n\nmacros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2->create_function_job_53eb85d6d82fecfbbf97af61436a1e20\n\n\n\n\n\npvbatch_output_file_9d1a9b87944774e4e78d9da968ff99fe\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f7900800>\n\n\n\npvbatch_output_file_9d1a9b87944774e4e78d9da968ff99fe->macros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2\n\n\n\n\n\npoisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f79004d0>\n\n\n\npoisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a->pvbatch_output_file_9d1a9b87944774e4e78d9da968ff99fe\n\n\n\n\n\nplot_file_9d1a9b87944774e4e78d9da968ff99fe\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f7900800>\n\n\n\npoisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a->plot_file_9d1a9b87944774e4e78d9da968ff99fe\n\n\n\n\n\nplot_file_9d1a9b87944774e4e78d9da968ff99fe->create_function_job_53eb85d6d82fecfbbf97af61436a1e20\n\n\n\n\n\nmeshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f7ae3e00>\n\n\n\nmeshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21->poisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a\n\n\n\n\n\npoisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f79004a0>\n\n\n\nmeshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21->poisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a\n\n\n\n\n\nndofs_94e80d99bd65f182606d914bcfc69587\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f7900890>\n\n\n\nmeshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21->ndofs_94e80d99bd65f182606d914bcfc69587\n\n\n\n\n\npoisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a->pvbatch_output_file_9d1a9b87944774e4e78d9da968ff99fe\n\n\n\n\n\npoisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a->plot_file_9d1a9b87944774e4e78d9da968ff99fe\n\n\n\n\n\nndofs_94e80d99bd65f182606d914bcfc69587->macros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2\n\n\n\n\n\ngmsh_output_file_27004aae404cc419dd3dc1389fc88f0b\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f7ae3f80>\n\n\n\ngmsh_output_file_27004aae404cc419dd3dc1389fc88f0b->meshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21\n\n\n\n\n\nmeshio_output_h5_421c94788b005f01f21c9dff066602da\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x7de7f7ae3ef0>\n\n\n\ngmsh_output_file_27004aae404cc419dd3dc1389fc88f0b->meshio_output_h5_421c94788b005f01f21c9dff066602da\n\n\n\n\n\nmeshio_output_h5_421c94788b005f01f21c9dff066602da->poisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a\n\n\n\n\n\nmeshio_output_h5_421c94788b005f01f21c9dff066602da->poisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a\n\n\n\n\n\nmeshio_output_h5_421c94788b005f01f21c9dff066602da->ndofs_94e80d99bd65f182606d914bcfc69587\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_27004aae404cc419dd3dc1389fc88f0b\n\n\n\n\n"},"metadata":{}}],"execution_count":25},{"id":"1c2760b6-96b4-4f44-ac49-a229d4a0cf67","cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n"},{"execution_count":26,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":26},{"id":"b3bba27e-ece9-4c02-834c-53e69844b140","cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[{"execution_count":27,"output_type":"execute_result","data":{"text/plain":" id status chemicalformula \\\n0 1 finished None \n1 2 finished None \n2 3 finished None \n3 4 finished None \n4 5 finished None \n5 6 finished None \n\n job \\\n0 generate_mesh_0b48cf5155cd6802c17d20bb58104132 \n1 convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 \n2 poisson_a0224b23ceb2119d105a5d98ef37f93e \n3 plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b \n4 substitute_macros_874fc185ecec04b4cb9537c58b7efb7b \n5 compile_paper_3cee534ffe692833d37faf1fd2170cb6 \n\n subjob projectpath \\\n0 /generate_mesh_0b48cf5155cd6802c17d20bb58104132 None \n1 /convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 None \n2 /poisson_a0224b23ceb2119d105a5d98ef37f93e None \n3 /plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b None \n4 /substitute_macros_874fc185ecec04b4cb9537c58b7efb7b None \n5 /compile_paper_3cee534ffe692833d37faf1fd2170cb6 None \n\n project timestart timestop totalcputime \\\n0 /home/jovyan/test/ 2025-04-02 14:41:18.840654 None None \n1 /home/jovyan/test/ 2025-04-02 14:41:20.508928 None None \n2 /home/jovyan/test/ 2025-04-02 14:41:22.282919 None None \n3 /home/jovyan/test/ 2025-04-02 14:41:25.138286 None None \n4 /home/jovyan/test/ 2025-04-02 14:41:27.295204 None None \n5 /home/jovyan/test/ 2025-04-02 14:41:28.640361 None None \n\n computer \\\n0 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n1 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n2 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n3 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n4 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n5 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n\n hamilton hamversion parentid masterid \n0 PythonFunctionContainerJob 0.4 None None \n1 PythonFunctionContainerJob 0.4 None None \n2 PythonFunctionContainerJob 0.4 None None \n3 PythonFunctionContainerJob 0.4 None None \n4 PythonFunctionContainerJob 0.4 None None \n5 PythonFunctionContainerJob 0.4 None None ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idstatuschemicalformulajobsubjobprojectpathprojecttimestarttimestoptotalcputimecomputerhamiltonhamversionparentidmasterid
01finishedNonegenerate_mesh_0b48cf5155cd6802c17d20bb58104132/generate_mesh_0b48cf5155cd6802c17d20bb58104132None/home/jovyan/test/2025-04-02 14:41:18.840654NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
12finishedNoneconvert_to_xdmf_29ad6ec6927268429dc9aef8166fde43/convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43None/home/jovyan/test/2025-04-02 14:41:20.508928NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
23finishedNonepoisson_a0224b23ceb2119d105a5d98ef37f93e/poisson_a0224b23ceb2119d105a5d98ef37f93eNone/home/jovyan/test/2025-04-02 14:41:22.282919NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
34finishedNoneplot_over_line_82b37a42e0747f11d9a7f6318f63ac6b/plot_over_line_82b37a42e0747f11d9a7f6318f63ac6bNone/home/jovyan/test/2025-04-02 14:41:25.138286NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
45finishedNonesubstitute_macros_874fc185ecec04b4cb9537c58b7efb7b/substitute_macros_874fc185ecec04b4cb9537c58b7efb7bNone/home/jovyan/test/2025-04-02 14:41:27.295204NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
56finishedNonecompile_paper_3cee534ffe692833d37faf1fd2170cb6/compile_paper_3cee534ffe692833d37faf1fd2170cb6None/home/jovyan/test/2025-04-02 14:41:28.640361NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
\n
"},"metadata":{}}],"execution_count":27}]} \ No newline at end of file +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"106ded66-d202-46ac-82b0-2755ca309bdd","cell_type":"markdown","source":"# Aiida\n\nhttps://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements","metadata":{}},{"id":"11e09b78-cb72-465f-9c8b-5b77f0aa729c","cell_type":"markdown","source":"## Define workflow with aiida","metadata":{}},{"id":"89c02460-b543-442c-a27e-f1757dc2262e","cell_type":"code","source":"from python_workflow_definition.aiida import write_workflow_json\n\nfrom aiida_workgraph import WorkGraph, task\nfrom aiida import orm, load_profile\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":1,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":1},{"id":"a76e6c0a-98f2-4436-af10-8097da183341","cell_type":"code","source":"from nfdi_ing_workflow import (\n generate_mesh,\n convert_to_xdmf as _convert_to_xdmf,\n poisson as _poisson,\n plot_over_line,\n substitute_macros,\n compile_paper,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"convert_to_xdmf = task(outputs=[\"xdmf_file\", \"h5_file\"])(_convert_to_xdmf)\npoisson = task(outputs=[\"numdofs\", \"pvd_file\", \"vtu_file\"])(_poisson)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"8d911f98-3b80-457f-a0f4-3cb37ebf1691","cell_type":"code","source":"domain_size = orm.Float(2.0)","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"1e7e14ba-c4a7-485f-9bd8-44625830cca0","cell_type":"code","source":"wg = WorkGraph(\"wg-nfdi\")","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"71d411b6-cbec-489e-99e3-ba71680bcb5b","cell_type":"code","source":"gmsh_output_file = wg.add_task(\n generate_mesh,\n name=\"generate_mesh\",\n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":6},{"id":"1d0d9804-f250-48b3-a5d0-a546d520f79b","cell_type":"code","source":"meshio_output_dict = wg.add_task(\n convert_to_xdmf,\n name=\"convert_to_xdmf\",\n gmsh_output_file=gmsh_output_file.outputs.result,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":7},{"id":"7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590","cell_type":"code","source":"poisson_dict = wg.add_task(\n poisson,\n name=\"poisson\",\n meshio_output_xdmf=meshio_output_dict.outputs.xdmf_file, \n meshio_output_h5=meshio_output_dict.outputs.h5_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":8},{"id":"3c4a29b0-eb1e-490a-8be0-e03cfff15e0a","cell_type":"code","source":"pvbatch_output_file = wg.add_task(\n plot_over_line,\n name=\"plot_over_line\",\n poisson_output_pvd_file=poisson_dict.outputs.pvd_file, \n poisson_output_vtu_file=poisson_dict.outputs.vtu_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":9},{"id":"a0a4c233-322d-4723-9627-62ca2487bfa9","cell_type":"code","source":"macros_tex_file = wg.add_task(\n substitute_macros,\n name=\"substitute_macros\",\n pvbatch_output_file=pvbatch_output_file.outputs.result, \n ndofs=poisson_dict.outputs.numdofs, \n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":10},{"id":"c281408f-e63d-4380-a7e6-c595d49fbb8f","cell_type":"code","source":"paper_output = wg.add_task(\n compile_paper,\n name=\"compile_paper\",\n macros_tex=macros_tex_file.outputs.result, \n plot_file=pvbatch_output_file.outputs.result,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"a384d70a-8ef5-4fdd-880c-56ac7eaf87b9","cell_type":"code","source":"wg","metadata":{"trusted":true},"outputs":[{"execution_count":12,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'wg-nfdi…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"8b6fceeb0d674532b2a181e2ed0503e8"}},"metadata":{}}],"execution_count":12},{"id":"fb23ad9c-76fd-4c0b-b546-e305d6c49796","cell_type":"code","source":"workflow_json_filename = \"aiida_nfdi.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"id":"4139547a-9717-4708-b1a5-8202a0382d77","cell_type":"code","source":"write_workflow_json(wg=wg, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"{'nodes': {'0': 'nfdi_ing_workflow.generate_mesh',\n '1': 'nfdi_ing_workflow.convert_to_xdmf',\n '2': 'nfdi_ing_workflow.poisson',\n '3': 'nfdi_ing_workflow.plot_over_line',\n '4': 'nfdi_ing_workflow.substitute_macros',\n '5': 'nfdi_ing_workflow.compile_paper',\n '6': 2.0},\n 'edges': [{'tn': 1, 'th': 'gmsh_output_file', 'sn': 0, 'sh': None},\n {'tn': 2, 'th': 'meshio_output_xdmf', 'sn': 1, 'sh': 'xdmf_file'},\n {'tn': 2, 'th': 'meshio_output_h5', 'sn': 1, 'sh': 'h5_file'},\n {'tn': 3, 'th': 'poisson_output_pvd_file', 'sn': 2, 'sh': 'pvd_file'},\n {'tn': 3, 'th': 'poisson_output_vtu_file', 'sn': 2, 'sh': 'vtu_file'},\n {'tn': 4, 'th': 'pvbatch_output_file', 'sn': 3, 'sh': None},\n {'tn': 4, 'th': 'ndofs', 'sn': 2, 'sh': 'numdofs'},\n {'tn': 5, 'th': 'macros_tex', 'sn': 4, 'sh': None},\n {'tn': 5, 'th': 'plot_file', 'sn': 3, 'sh': None},\n {'tn': 0, 'th': 'domain_size', 'sn': 6, 'sh': None},\n {'tn': 4, 'th': 'domain_size', 'sn': 6, 'sh': None}]}"},"metadata":{}}],"execution_count":14},{"id":"490df6a3-e402-4620-acf2-dbcfa0c5d537","cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\n \"nodes\": {\n \"0\": \"nfdi_ing_workflow.generate_mesh\",\n \"1\": \"nfdi_ing_workflow.convert_to_xdmf\",\n \"2\": \"nfdi_ing_workflow.poisson\",\n \"3\": \"nfdi_ing_workflow.plot_over_line\",\n \"4\": \"nfdi_ing_workflow.substitute_macros\",\n \"5\": \"nfdi_ing_workflow.compile_paper\",\n \"6\": 2.0\n },\n \"edges\": [\n {\n \"tn\": 1,\n \"th\": \"gmsh_output_file\",\n \"sn\": 0,\n \"sh\": null\n },\n {\n \"tn\": 2,\n \"th\": \"meshio_output_xdmf\",\n \"sn\": 1,\n \"sh\": \"xdmf_file\"\n },\n {\n \"tn\": 2,\n \"th\": \"meshio_output_h5\",\n \"sn\": 1,\n \"sh\": \"h5_file\"\n },\n {\n \"tn\": 3,\n \"th\": \"poisson_output_pvd_file\",\n \"sn\": 2,\n \"sh\": \"pvd_file\"\n },\n {\n \"tn\": 3,\n \"th\": \"poisson_output_vtu_file\",\n \"sn\": 2,\n \"sh\": \"vtu_file\"\n },\n {\n \"tn\": 4,\n \"th\": \"pvbatch_output_file\",\n \"sn\": 3,\n \"sh\": null\n },\n {\n \"tn\": 4,\n \"th\": \"ndofs\",\n \"sn\": 2,\n \"sh\": \"numdofs\"\n },\n {\n \"tn\": 5,\n \"th\": \"macros_tex\",\n \"sn\": 4,\n \"sh\": null\n },\n {\n \"tn\": 5,\n \"th\": \"plot_file\",\n \"sn\": 3,\n \"sh\": null\n },\n {\n \"tn\": 0,\n \"th\": \"domain_size\",\n \"sn\": 6,\n \"sh\": null\n },\n {\n \"tn\": 4,\n \"th\": \"domain_size\",\n \"sn\": 6,\n \"sh\": null\n }\n ]\n}"}],"execution_count":15},{"id":"11a829e2-face-469f-b343-2c95763b1f13","cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"id":"4f3acabe-55df-479a-af4d-a23a80c4660d","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":16},{"id":"b6ba9444-a2c8-451b-b74c-19b0f69ba369","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":17},{"id":"c3528d55-6bf7-47ed-a110-65c47446ba92","cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"id":"5ef48778-4209-425f-8c6b-85a4cd2f92ec","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-04 14:43:43,907 INFO Started executing jobs locally\n2025-04-04 14:43:44,345 INFO Starting job - generate_mesh (d2959a22-7c6f-491e-8fa3-5e0b7bf851dd)\n2025-04-04 14:43:46,611 INFO Finished job - generate_mesh (d2959a22-7c6f-491e-8fa3-5e0b7bf851dd)\n2025-04-04 14:43:46,612 INFO Starting job - convert_to_xdmf (b6098203-f960-4c0f-a5f9-71fbbbfe226f)\n2025-04-04 14:43:48,420 INFO Finished job - convert_to_xdmf (b6098203-f960-4c0f-a5f9-71fbbbfe226f)\n2025-04-04 14:43:48,421 INFO Starting job - poisson (2daa1735-a65c-4b5b-aaf9-1141887b6fd6)\n2025-04-04 14:44:00,271 INFO Finished job - poisson (2daa1735-a65c-4b5b-aaf9-1141887b6fd6)\n2025-04-04 14:44:00,272 INFO Starting job - plot_over_line (b2126306-07e8-4f14-93ce-f7be95ee8f55)\n2025-04-04 14:44:02,997 INFO Finished job - plot_over_line (b2126306-07e8-4f14-93ce-f7be95ee8f55)\n2025-04-04 14:44:02,998 INFO Starting job - substitute_macros (09633e03-dcc8-4274-aa83-8151cd35878c)\n2025-04-04 14:44:04,212 INFO Finished job - substitute_macros (09633e03-dcc8-4274-aa83-8151cd35878c)\n2025-04-04 14:44:04,213 INFO Starting job - compile_paper (485212e5-2539-4c3e-a2e4-edab7ed585e2)\n2025-04-04 14:45:03,591 INFO Finished job - compile_paper (485212e5-2539-4c3e-a2e4-edab7ed585e2)\n2025-04-04 14:45:03,592 INFO Finished executing jobs locally\n"},{"execution_count":19,"output_type":"execute_result","data":{"text/plain":"{'d2959a22-7c6f-491e-8fa3-5e0b7bf851dd': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'b6098203-f960-4c0f-a5f9-71fbbbfe226f': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2daa1735-a65c-4b5b-aaf9-1141887b6fd6': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'b2126306-07e8-4f14-93ce-f7be95ee8f55': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '09633e03-dcc8-4274-aa83-8151cd35878c': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '485212e5-2539-4c3e-a2e4-edab7ed585e2': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":19},{"id":"397b16a2-e1ec-4eec-8562-1c84f585c347","cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"id":"fdde6b82-b51d-434a-a9a8-5a8c31bbb429","cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":20},{"id":"be4d5d93-e9f6-4072-a6be-0ee5dc93590f","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":21},{"id":"4db75587-5f4c-416d-a1f6-c949077fa2ca","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"0it [00:00, ?it/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"6ffdbe942015451b8082ff068711ba20"}},"metadata":{}}],"execution_count":22},{"id":"4452a648-d4c3-4f5f-8678-ffb54bef17dc","cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=workflow_json_filename)\ndelayed_object.draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_ad78d751885eaefc2605f3dceb2cb1aa\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7a27935de600>\n\n\n\nmacros_tex_76816516c28d282cb376f4d1af23a98d\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x7a291d3866f0>\n\n\n\nmacros_tex_76816516c28d282cb376f4d1af23a98d->create_function_job_ad78d751885eaefc2605f3dceb2cb1aa\n\n\n\n\n\npvbatch_output_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7a291d3863c0>\n\n\n\npvbatch_output_file_0a1a8a5db5a6aedba38e6ab3d334b644->macros_tex_76816516c28d282cb376f4d1af23a98d\n\n\n\n\n\npoisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x7a291d386060>\n\n\n\npoisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2->pvbatch_output_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\n\n\n\n\nplot_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x7a291d3863c0>\n\n\n\npoisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2->plot_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\n\n\n\n\nplot_file_0a1a8a5db5a6aedba38e6ab3d334b644->create_function_job_ad78d751885eaefc2605f3dceb2cb1aa\n\n\n\n\n\nmeshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x7a291d361e20>\n\n\n\nmeshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a->poisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2\n\n\n\n\n\npoisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x7a291d386030>\n\n\n\nmeshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a->poisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93\n\n\n\n\n\nndofs_c8554a1b671d87672c81c508324bd11c\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x7a291d386450>\n\n\n\nmeshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a->ndofs_c8554a1b671d87672c81c508324bd11c\n\n\n\n\n\npoisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93->pvbatch_output_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\n\n\n\n\npoisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93->plot_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\n\n\n\n\nndofs_c8554a1b671d87672c81c508324bd11c->macros_tex_76816516c28d282cb376f4d1af23a98d\n\n\n\n\n\ngmsh_output_file_78213b177bb355e1585daee03d735c19\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x7a291d385a60>\n\n\n\ngmsh_output_file_78213b177bb355e1585daee03d735c19->meshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a\n\n\n\n\n\nmeshio_output_h5_efac48e79bcba581ea1c6da5811cd281\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x7a291d385c40>\n\n\n\ngmsh_output_file_78213b177bb355e1585daee03d735c19->meshio_output_h5_efac48e79bcba581ea1c6da5811cd281\n\n\n\n\n\nmeshio_output_h5_efac48e79bcba581ea1c6da5811cd281->poisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2\n\n\n\n\n\nmeshio_output_h5_efac48e79bcba581ea1c6da5811cd281->poisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93\n\n\n\n\n\nmeshio_output_h5_efac48e79bcba581ea1c6da5811cd281->ndofs_c8554a1b671d87672c81c508324bd11c\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_76816516c28d282cb376f4d1af23a98d\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_78213b177bb355e1585daee03d735c19\n\n\n\n\n"},"metadata":{}}],"execution_count":23},{"id":"1c2760b6-96b4-4f44-ac49-a229d4a0cf67","cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n"},{"execution_count":24,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":24},{"id":"b3bba27e-ece9-4c02-834c-53e69844b140","cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[{"execution_count":25,"output_type":"execute_result","data":{"text/plain":" id status chemicalformula \\\n0 1 finished None \n1 2 finished None \n2 3 finished None \n3 4 finished None \n4 5 finished None \n5 6 finished None \n\n job \\\n0 generate_mesh_0b48cf5155cd6802c17d20bb58104132 \n1 convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 \n2 poisson_a0224b23ceb2119d105a5d98ef37f93e \n3 plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b \n4 substitute_macros_874fc185ecec04b4cb9537c58b7efb7b \n5 compile_paper_3cee534ffe692833d37faf1fd2170cb6 \n\n subjob projectpath \\\n0 /generate_mesh_0b48cf5155cd6802c17d20bb58104132 None \n1 /convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 None \n2 /poisson_a0224b23ceb2119d105a5d98ef37f93e None \n3 /plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b None \n4 /substitute_macros_874fc185ecec04b4cb9537c58b7efb7b None \n5 /compile_paper_3cee534ffe692833d37faf1fd2170cb6 None \n\n project timestart timestop totalcputime \\\n0 /home/jovyan/test/ 2025-04-04 14:45:04.379468 None None \n1 /home/jovyan/test/ 2025-04-04 14:45:06.117232 None None \n2 /home/jovyan/test/ 2025-04-04 14:45:08.009236 None None \n3 /home/jovyan/test/ 2025-04-04 14:45:11.395481 None None \n4 /home/jovyan/test/ 2025-04-04 14:45:13.545508 None None \n5 /home/jovyan/test/ 2025-04-04 14:45:14.745805 None None \n\n computer \\\n0 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n1 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n2 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n3 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n4 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n5 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n\n hamilton hamversion parentid masterid \n0 PythonFunctionContainerJob 0.4 None None \n1 PythonFunctionContainerJob 0.4 None None \n2 PythonFunctionContainerJob 0.4 None None \n3 PythonFunctionContainerJob 0.4 None None \n4 PythonFunctionContainerJob 0.4 None None \n5 PythonFunctionContainerJob 0.4 None None ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idstatuschemicalformulajobsubjobprojectpathprojecttimestarttimestoptotalcputimecomputerhamiltonhamversionparentidmasterid
01finishedNonegenerate_mesh_0b48cf5155cd6802c17d20bb58104132/generate_mesh_0b48cf5155cd6802c17d20bb58104132None/home/jovyan/test/2025-04-04 14:45:04.379468NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
12finishedNoneconvert_to_xdmf_29ad6ec6927268429dc9aef8166fde43/convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43None/home/jovyan/test/2025-04-04 14:45:06.117232NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
23finishedNonepoisson_a0224b23ceb2119d105a5d98ef37f93e/poisson_a0224b23ceb2119d105a5d98ef37f93eNone/home/jovyan/test/2025-04-04 14:45:08.009236NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
34finishedNoneplot_over_line_82b37a42e0747f11d9a7f6318f63ac6b/plot_over_line_82b37a42e0747f11d9a7f6318f63ac6bNone/home/jovyan/test/2025-04-04 14:45:11.395481NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
45finishedNonesubstitute_macros_874fc185ecec04b4cb9537c58b7efb7b/substitute_macros_874fc185ecec04b4cb9537c58b7efb7bNone/home/jovyan/test/2025-04-04 14:45:13.545508NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
56finishedNonecompile_paper_3cee534ffe692833d37faf1fd2170cb6/compile_paper_3cee534ffe692833d37faf1fd2170cb6None/home/jovyan/test/2025-04-04 14:45:14.745805NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
\n
"},"metadata":{}}],"execution_count":25}]} \ No newline at end of file diff --git a/aiida_qe.ipynb b/aiida_qe.ipynb index 25aaf06..60658f9 100644 --- a/aiida_qe.ipynb +++ b/aiida_qe.ipynb @@ -1,1815 +1 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Quantum Espresso Energy Volume Curve Workflow with aiida" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define workflow with aiida" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "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": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from aiida_workgraph import task, WorkGraph" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from quantum_espresso_workflow import generate_structures\n", - "from quantum_espresso_workflow import get_bulk_structure\n", - "from quantum_espresso_workflow import calculate_qe as _calculate_qe\n", - "from quantum_espresso_workflow import plot_energy_volume_curve" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "calculate_qe = task(outputs=[\"energy\", \"volume\", \"structure\"])(_calculate_qe)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "wg = WorkGraph(\"wg-qe\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prepare the inputs" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "element = orm.Str(\"Al\")\n", - "a = orm.Float(4.05)\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": 7, - "metadata": {}, - "outputs": [], - "source": [ - "get_bulk_structure_task = wg.add_task(\n", - " get_bulk_structure,\n", - " name=\"get_bulk_structure\",\n", - " element=element,\n", - " a=a,\n", - " cubic=cubic,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "relax_prepare_input_dict_task = wg.add_task(\n", - " get_dict,\n", - " name=\"relax_get_dict\",\n", - " structure=get_bulk_structure_task.outputs.result,\n", - " calculation=calc_type_relax,\n", - " kpts=kpts,\n", - " pseudopotentials=pseudopotentials,\n", - " smearing=smearing,\n", - ")\n", - "\n", - "relax_task = wg.add_task(\n", - " calculate_qe,\n", - " name=\"mini\",\n", - " input_dict=relax_prepare_input_dict_task.outputs.result,\n", - " working_directory=relax_workdir,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "generate_structures_task = wg.add_task(\n", - " generate_structures,\n", - " name=\"generate_structures\",\n", - " structure=relax_task.outputs.structure,\n", - " strain_lst=strain_lst,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "get_volumes_task = wg.add_task(get_list, name=\"get_volumes\")" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "get_energies_task = wg.add_task(get_list, name=\"get_energies\")" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "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", - " name=f\"get_dict_{i}\",\n", - " structure=generate_structures_task.outputs[structure_key],\n", - " calculation=calc_type_scf,\n", - " kpts=kpts,\n", - " pseudopotentials=pseudopotentials,\n", - " smearing=smearing,\n", - " )\n", - "\n", - " scf_qe_task = wg.add_task(\n", - " calculate_qe,\n", - " name=f\"qe_{i}\",\n", - " input_dict=scf_prepare_input_dict_task.outputs.result,\n", - " working_directory=strain_dir,\n", - " )\n", - "\n", - " # collect energy and volume\n", - " get_energies_task.set({f\"{i}\": scf_qe_task.outputs.energy})\n", - " get_volumes_task.set({f\"{i}\": scf_qe_task.outputs.volume})" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "plot_energy_volume_curve_task = wg.add_task(\n", - " plot_energy_volume_curve,\n", - " name=\"plot_energy_volume_curve\",\n", - " volume_lst=get_volumes_task.outputs.result,\n", - " energy_lst=get_energies_task.outputs.result,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "dcec02cd916542798a729a20a32242dd", - "version_major": 2, - "version_minor": 1 - }, - "text/plain": [ - "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'wg-qe',…" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wg" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "_ = write_workflow_json(wg=wg, file_name=workflow_json_filename)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"nodes\": {\n", - " \"0\": \"quantum_espresso_workflow.get_bulk_structure\",\n", - " \"1\": \"python_workflow_definition.shared.get_dict\",\n", - " \"2\": \"quantum_espresso_workflow.calculate_qe\",\n", - " \"3\": \"quantum_espresso_workflow.generate_structures\",\n", - " \"4\": \"python_workflow_definition.shared.get_list\",\n", - " \"5\": \"python_workflow_definition.shared.get_list\",\n", - " \"6\": \"python_workflow_definition.shared.get_dict\",\n", - " \"7\": \"quantum_espresso_workflow.calculate_qe\",\n", - " \"8\": \"python_workflow_definition.shared.get_dict\",\n", - " \"9\": \"quantum_espresso_workflow.calculate_qe\",\n", - " \"10\": \"python_workflow_definition.shared.get_dict\",\n", - " \"11\": \"quantum_espresso_workflow.calculate_qe\",\n", - " \"12\": \"python_workflow_definition.shared.get_dict\",\n", - " \"13\": \"quantum_espresso_workflow.calculate_qe\",\n", - " \"14\": \"python_workflow_definition.shared.get_dict\",\n", - " \"15\": \"quantum_espresso_workflow.calculate_qe\",\n", - " \"16\": \"quantum_espresso_workflow.plot_energy_volume_curve\",\n", - " \"17\": \"Al\",\n", - " \"18\": 4.05,\n", - " \"19\": true,\n", - " \"20\": \"vc-relax\",\n", - " \"21\": [\n", - " 3,\n", - " 3,\n", - " 3\n", - " ],\n", - " \"22\": {\n", - " \"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"\n", - " },\n", - " \"23\": 0.02,\n", - " \"24\": \"mini\",\n", - " \"25\": [\n", - " 0.9,\n", - " 0.95,\n", - " 1.0,\n", - " 1.05,\n", - " 1.1\n", - " ],\n", - " \"26\": \"scf\",\n", - " \"27\": \"strain_0\",\n", - " \"28\": \"strain_1\",\n", - " \"29\": \"strain_2\",\n", - " \"30\": \"strain_3\",\n", - " \"31\": \"strain_4\"\n", - " },\n", - " \"edges\": [\n", - " {\n", - " \"tn\": 1,\n", - " \"th\": \"structure\",\n", - " \"sn\": 0,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 2,\n", - " \"th\": \"input_dict\",\n", - " \"sn\": 1,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 3,\n", - " \"th\": \"structure\",\n", - " \"sn\": 2,\n", - " \"sh\": \"structure\"\n", - " },\n", - " {\n", - " \"tn\": 6,\n", - " \"th\": \"structure\",\n", - " \"sn\": 3,\n", - " \"sh\": \"s_0\"\n", - " },\n", - " {\n", - " \"tn\": 7,\n", - " \"th\": \"input_dict\",\n", - " \"sn\": 6,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 5,\n", - " \"th\": \"0\",\n", - " \"sn\": 7,\n", - " \"sh\": \"energy\"\n", - " },\n", - " {\n", - " \"tn\": 4,\n", - " \"th\": \"0\",\n", - " \"sn\": 7,\n", - " \"sh\": \"volume\"\n", - " },\n", - " {\n", - " \"tn\": 8,\n", - " \"th\": \"structure\",\n", - " \"sn\": 3,\n", - " \"sh\": \"s_1\"\n", - " },\n", - " {\n", - " \"tn\": 9,\n", - " \"th\": \"input_dict\",\n", - " \"sn\": 8,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 5,\n", - " \"th\": \"1\",\n", - " \"sn\": 9,\n", - " \"sh\": \"energy\"\n", - " },\n", - " {\n", - " \"tn\": 4,\n", - " \"th\": \"1\",\n", - " \"sn\": 9,\n", - " \"sh\": \"volume\"\n", - " },\n", - " {\n", - " \"tn\": 10,\n", - " \"th\": \"structure\",\n", - " \"sn\": 3,\n", - " \"sh\": \"s_2\"\n", - " },\n", - " {\n", - " \"tn\": 11,\n", - " \"th\": \"input_dict\",\n", - " \"sn\": 10,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 5,\n", - " \"th\": \"2\",\n", - " \"sn\": 11,\n", - " \"sh\": \"energy\"\n", - " },\n", - " {\n", - " \"tn\": 4,\n", - " \"th\": \"2\",\n", - " \"sn\": 11,\n", - " \"sh\": \"volume\"\n", - " },\n", - " {\n", - " \"tn\": 12,\n", - " \"th\": \"structure\",\n", - " \"sn\": 3,\n", - " \"sh\": \"s_3\"\n", - " },\n", - " {\n", - " \"tn\": 13,\n", - " \"th\": \"input_dict\",\n", - " \"sn\": 12,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 5,\n", - " \"th\": \"3\",\n", - " \"sn\": 13,\n", - " \"sh\": \"energy\"\n", - " },\n", - " {\n", - " \"tn\": 4,\n", - " \"th\": \"3\",\n", - " \"sn\": 13,\n", - " \"sh\": \"volume\"\n", - " },\n", - " {\n", - " \"tn\": 14,\n", - " \"th\": \"structure\",\n", - " \"sn\": 3,\n", - " \"sh\": \"s_4\"\n", - " },\n", - " {\n", - " \"tn\": 15,\n", - " \"th\": \"input_dict\",\n", - " \"sn\": 14,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 5,\n", - " \"th\": \"4\",\n", - " \"sn\": 15,\n", - " \"sh\": \"energy\"\n", - " },\n", - " {\n", - " \"tn\": 4,\n", - " \"th\": \"4\",\n", - " \"sn\": 15,\n", - " \"sh\": \"volume\"\n", - " },\n", - " {\n", - " \"tn\": 16,\n", - " \"th\": \"volume_lst\",\n", - " \"sn\": 4,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 16,\n", - " \"th\": \"energy_lst\",\n", - " \"sn\": 5,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 0,\n", - " \"th\": \"element\",\n", - " \"sn\": 17,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 0,\n", - " \"th\": \"a\",\n", - " \"sn\": 18,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 0,\n", - " \"th\": \"cubic\",\n", - " \"sn\": 19,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 1,\n", - " \"th\": \"calculation\",\n", - " \"sn\": 20,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 1,\n", - " \"th\": \"kpts\",\n", - " \"sn\": 21,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 1,\n", - " \"th\": \"pseudopotentials\",\n", - " \"sn\": 22,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 1,\n", - " \"th\": \"smearing\",\n", - " \"sn\": 23,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 2,\n", - " \"th\": \"working_directory\",\n", - " \"sn\": 24,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 3,\n", - " \"th\": \"strain_lst\",\n", - " \"sn\": 25,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 6,\n", - " \"th\": \"calculation\",\n", - " \"sn\": 26,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 6,\n", - " \"th\": \"kpts\",\n", - " \"sn\": 21,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 6,\n", - " \"th\": \"pseudopotentials\",\n", - " \"sn\": 22,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 6,\n", - " \"th\": \"smearing\",\n", - " \"sn\": 23,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 7,\n", - " \"th\": \"working_directory\",\n", - " \"sn\": 27,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 8,\n", - " \"th\": \"calculation\",\n", - " \"sn\": 26,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 8,\n", - " \"th\": \"kpts\",\n", - " \"sn\": 21,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 8,\n", - " \"th\": \"pseudopotentials\",\n", - " \"sn\": 22,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 8,\n", - " \"th\": \"smearing\",\n", - " \"sn\": 23,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 9,\n", - " \"th\": \"working_directory\",\n", - " \"sn\": 28,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 10,\n", - " \"th\": \"calculation\",\n", - " \"sn\": 26,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 10,\n", - " \"th\": \"kpts\",\n", - " \"sn\": 21,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 10,\n", - " \"th\": \"pseudopotentials\",\n", - " \"sn\": 22,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 10,\n", - " \"th\": \"smearing\",\n", - " \"sn\": 23,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 11,\n", - " \"th\": \"working_directory\",\n", - " \"sn\": 29,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 12,\n", - " \"th\": \"calculation\",\n", - " \"sn\": 26,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 12,\n", - " \"th\": \"kpts\",\n", - " \"sn\": 21,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 12,\n", - " \"th\": \"pseudopotentials\",\n", - " \"sn\": 22,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 12,\n", - " \"th\": \"smearing\",\n", - " \"sn\": 23,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 13,\n", - " \"th\": \"working_directory\",\n", - " \"sn\": 30,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 14,\n", - " \"th\": \"calculation\",\n", - " \"sn\": 26,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 14,\n", - " \"th\": \"kpts\",\n", - " \"sn\": 21,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 14,\n", - " \"th\": \"pseudopotentials\",\n", - " \"sn\": 22,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 14,\n", - " \"th\": \"smearing\",\n", - " \"sn\": 23,\n", - " \"sh\": null\n", - " },\n", - " {\n", - " \"tn\": 15,\n", - " \"th\": \"working_directory\",\n", - " \"sn\": 31,\n", - " \"sh\": null\n", - " }\n", - " ]\n", - "}" - ] - } - ], - "source": [ - "!cat {workflow_json_filename}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load Workflow with jobflow" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.jobflow import load_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "from jobflow.managers.local import run_locally" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "flow = load_workflow_json(file_name=workflow_json_filename)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:50:22,650 INFO Started executing jobs locally\n", - "2025-04-01 10:50:22,916 INFO Starting job - get_bulk_structure (cbd7d9e1-e367-4d7c-94f0-310b1a4f9c8f)\n", - "2025-04-01 10:50:22,919 INFO Finished job - get_bulk_structure (cbd7d9e1-e367-4d7c-94f0-310b1a4f9c8f)\n", - "2025-04-01 10:50:22,920 INFO Starting job - get_dict (5c7d171f-7910-4ce6-9eef-9a4d9a7529a8)\n", - "2025-04-01 10:50:22,924 INFO Finished job - get_dict (5c7d171f-7910-4ce6-9eef-9a4d9a7529a8)\n", - "2025-04-01 10:50:22,925 INFO Starting job - calculate_qe (8267d4c7-23ef-4ed3-9440-841790f572b7)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:50:41,470 INFO Finished job - calculate_qe (8267d4c7-23ef-4ed3-9440-841790f572b7)\n", - "2025-04-01 10:50:41,471 INFO Starting job - generate_structures (381bd971-0704-48e7-9305-d01622a6847a)\n", - "2025-04-01 10:50:41,476 INFO Finished job - generate_structures (381bd971-0704-48e7-9305-d01622a6847a)\n", - "2025-04-01 10:50:41,477 INFO Starting job - get_dict (665d2bfd-ff33-4850-a685-935415c3a437)\n", - "2025-04-01 10:50:41,479 INFO Finished job - get_dict (665d2bfd-ff33-4850-a685-935415c3a437)\n", - "2025-04-01 10:50:41,479 INFO Starting job - get_dict (93373609-fa51-4b84-87ec-bf2bda04050e)\n", - "2025-04-01 10:50:41,481 INFO Finished job - get_dict (93373609-fa51-4b84-87ec-bf2bda04050e)\n", - "2025-04-01 10:50:41,481 INFO Starting job - get_dict (cd7bcaf9-8078-4f88-b006-e97607f75198)\n", - "2025-04-01 10:50:41,483 INFO Finished job - get_dict (cd7bcaf9-8078-4f88-b006-e97607f75198)\n", - "2025-04-01 10:50:41,483 INFO Starting job - get_dict (f9f7264c-9233-4f81-8d28-35309b2a030e)\n", - "2025-04-01 10:50:41,485 INFO Finished job - get_dict (f9f7264c-9233-4f81-8d28-35309b2a030e)\n", - "2025-04-01 10:50:41,485 INFO Starting job - get_dict (c4742465-a606-4c3e-8f9c-c5211c57c095)\n", - "2025-04-01 10:50:41,487 INFO Finished job - get_dict (c4742465-a606-4c3e-8f9c-c5211c57c095)\n", - "2025-04-01 10:50:41,488 INFO Starting job - calculate_qe (da2eec2b-cf50-42a3-9b3f-530ab34f6031)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:50:45,129 INFO Finished job - calculate_qe (da2eec2b-cf50-42a3-9b3f-530ab34f6031)\n", - "2025-04-01 10:50:45,130 INFO Starting job - calculate_qe (b1f556b4-d4f1-4c0a-9247-4ec834948138)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:50:49,010 INFO Finished job - calculate_qe (b1f556b4-d4f1-4c0a-9247-4ec834948138)\n", - "2025-04-01 10:50:49,011 INFO Starting job - calculate_qe (427e6966-a3c3-4fb9-8233-2635a5208a3b)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:50:52,957 INFO Finished job - calculate_qe (427e6966-a3c3-4fb9-8233-2635a5208a3b)\n", - "2025-04-01 10:50:52,958 INFO Starting job - calculate_qe (63c1de35-c238-4dcc-8722-3a033abf8cbf)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:50:57,520 INFO Finished job - calculate_qe (63c1de35-c238-4dcc-8722-3a033abf8cbf)\n", - "2025-04-01 10:50:57,521 INFO Starting job - calculate_qe (dee8151b-84fd-473a-8542-d49069bc5981)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:51:02,340 INFO Finished job - calculate_qe (dee8151b-84fd-473a-8542-d49069bc5981)\n", - "2025-04-01 10:51:02,341 INFO Starting job - get_list (19c28499-2069-42a8-8e50-545118a4ecbf)\n", - "2025-04-01 10:51:02,345 INFO Finished job - get_list (19c28499-2069-42a8-8e50-545118a4ecbf)\n", - "2025-04-01 10:51:02,346 INFO Starting job - get_list (ecbe69ad-c617-41b3-87c8-a25b8b475e10)\n", - "2025-04-01 10:51:02,349 INFO Finished job - get_list (ecbe69ad-c617-41b3-87c8-a25b8b475e10)\n", - "2025-04-01 10:51:02,349 INFO Starting job - plot_energy_volume_curve (5d6df916-37bb-4dad-aab2-fc9d3733924d)\n", - "2025-04-01 10:51:02,420 INFO Finished job - plot_energy_volume_curve (5d6df916-37bb-4dad-aab2-fc9d3733924d)\n", - "2025-04-01 10:51:02,421 INFO Finished executing jobs locally\n" - ] - }, - { - "data": { - "text/plain": [ - "{'cbd7d9e1-e367-4d7c-94f0-310b1a4f9c8f': {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]], \"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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '5c7d171f-7910-4ce6-9eef-9a4d9a7529a8': {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]], \"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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '8267d4c7-23ef-4ed3-9440-841790f572b7': {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.045637407648501, 0.0, 0.0], [0.0, 4.045637407648501, 0.0], [0.0, 0.0, 4.045637407648501]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.02281870382425, 2.02281870382425], [2.02281870382425, 0.0, 2.02281870382425], [2.02281870382425, 2.02281870382425, 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.9365698416843, 'volume': 66.21568389520992}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '381bd971-0704-48e7-9305-d01622a6847a': {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.906019971048066, 0.0, 0.0], [0.0, 3.906019971048066, 0.0], [0.0, 0.0, 3.906019971048066]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530099855240326, 1.9530099855240326], [1.9530099855240326, 0.0, 1.9530099855240326], [1.9530099855240326, 1.9530099855240326, 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.9770540327699004, 0.0, 0.0], [0.0, 3.9770540327699004, 0.0], [0.0, 0.0, 3.9770540327699004]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270163849498, 1.9885270163849498], [1.9885270163849498, 0.0, 1.9885270163849498], [1.9885270163849498, 1.9885270163849498, 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.045637407648501, 0.0, 0.0], [0.0, 4.045637407648501, 0.0], [0.0, 0.0, 4.045637407648501]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.02281870382425, 2.02281870382425], [2.02281870382425, 0.0, 2.02281870382425], [2.02281870382425, 2.02281870382425, 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.111971122127825, 0.0, 0.0], [0.0, 4.111971122127825, 0.0], [0.0, 0.0, 4.111971122127825]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985561063912, 2.055985561063912], [2.055985561063912, 0.0, 2.055985561063912], [2.055985561063912, 2.055985561063912, 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.176231050261992, 0.0, 0.0], [0.0, 4.176231050261992, 0.0], [0.0, 0.0, 4.176231050261992]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881155251309957, 2.0881155251309957], [2.0881155251309957, 0.0, 2.0881155251309957], [2.0881155251309957, 2.0881155251309957, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '665d2bfd-ff33-4850-a685-935415c3a437': {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.906019971048066, 0.0, 0.0], [0.0, 3.906019971048066, 0.0], [0.0, 0.0, 3.906019971048066]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530099855240326, 1.9530099855240326], [1.9530099855240326, 0.0, 1.9530099855240326], [1.9530099855240326, 1.9530099855240326, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '93373609-fa51-4b84-87ec-bf2bda04050e': {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.9770540327699004, 0.0, 0.0], [0.0, 3.9770540327699004, 0.0], [0.0, 0.0, 3.9770540327699004]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270163849498, 1.9885270163849498], [1.9885270163849498, 0.0, 1.9885270163849498], [1.9885270163849498, 1.9885270163849498, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'cd7bcaf9-8078-4f88-b006-e97607f75198': {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.045637407648501, 0.0, 0.0], [0.0, 4.045637407648501, 0.0], [0.0, 0.0, 4.045637407648501]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.02281870382425, 2.02281870382425], [2.02281870382425, 0.0, 2.02281870382425], [2.02281870382425, 2.02281870382425, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'f9f7264c-9233-4f81-8d28-35309b2a030e': {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.111971122127825, 0.0, 0.0], [0.0, 4.111971122127825, 0.0], [0.0, 0.0, 4.111971122127825]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985561063912, 2.055985561063912], [2.055985561063912, 0.0, 2.055985561063912], [2.055985561063912, 2.055985561063912, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'c4742465-a606-4c3e-8f9c-c5211c57c095': {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.176231050261992, 0.0, 0.0], [0.0, 4.176231050261992, 0.0], [0.0, 0.0, 4.176231050261992]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881155251309957, 2.0881155251309957], [2.0881155251309957, 0.0, 2.0881155251309957], [2.0881155251309957, 2.0881155251309957, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'da2eec2b-cf50-42a3-9b3f-530ab34f6031': {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.9060199539751044, 0.0, 0.0], [0.0, 3.9060199539751044, 0.0], [0.0, 0.0, 3.9060199539751044]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530099769635174, 1.9530099769635174], [1.9530099769635174, 0.0, 1.9530099769635174], [1.9530099769635174, 1.9530099769635174, 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.845781112245, 'volume': 59.59411472424278}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'b1f556b4-d4f1-4c0a-9247-4ec834948138': {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.977054015386449, 0.0, 0.0], [0.0, 3.977054015386449, 0.0], [0.0, 0.0, 3.977054015386449]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270077082742, 1.9885270077082742], [1.9885270077082742, 0.0, 1.9885270077082742], [1.9885270077082742, 1.9885270077082742, 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.9161853618145, 'volume': 62.90489887558943}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '427e6966-a3c3-4fb9-8233-2635a5208a3b': {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.045637389965275, 0.0, 0.0], [0.0, 4.045637389965275, 0.0], [0.0, 0.0, 4.045637389965275]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186949583877, 2.0228186949583877], [2.0228186949583877, 0.0, 2.0228186949583877], [2.0228186949583877, 2.0228186949583877, 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.936567876358, 'volume': 66.21568302693622}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '63c1de35-c238-4dcc-8722-3a033abf8cbf': {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.111971104154655, 0.0, 0.0], [0.0, 4.111971104154655, 0.0], [0.0, 0.0, 4.111971104154655]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985552113417, 2.055985552113417], [2.055985552113417, 0.0, 2.055985552113417], [2.055985552113417, 2.055985552113417, 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.9193225358792, 'volume': 69.52646717828286}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'dee8151b-84fd-473a-8542-d49069bc5981': {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.176231032007949, 0.0, 0.0], [0.0, 4.176231032007949, 0.0], [0.0, 0.0, 4.176231032007949]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115515972979, 2.088115515972979], [2.088115515972979, 0.0, 2.088115515972979], [2.088115515972979, 2.088115515972979, 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.8738270284018, 'volume': 72.83725132962977}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '19c28499-2069-42a8-8e50-545118a4ecbf': {1: Response(output=[59.59411472424278, 62.90489887558943, 66.21568302693622, 69.52646717828286, 72.83725132962977], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'ecbe69ad-c617-41b3-87c8-a25b8b475e10': {1: Response(output=[-1074.845781112245, -1074.9161853618145, -1074.936567876358, -1074.9193225358792, -1074.8738270284018], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '5d6df916-37bb-4dad-aab2-fc9d3733924d': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))}}" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "result = run_locally(flow)\n", - "result" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load Workflow with pyiron_base" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "from pyiron_base import Project" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.pyiron_base import load_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c33d6e1c56214809be64df7e49bd7b87", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/17 [00:00\n", - "\n", - "\n", - "\n", - "\n", - "create_function_job_8ceb3031e9d0fd46bd383df696f06138\n", - "\n", - "create_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a88810>\n", - "\n", - "\n", - "\n", - "volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n", - "\n", - "volume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6f690>\n", - "\n", - "\n", - "\n", - "volume_lst_105e463ce9fc4dadfb68786635ea6c9f->create_function_job_8ceb3031e9d0fd46bd383df696f06138\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "0_c67ca853ba2351e69f89f037ea41b0b9\n", - "\n", - "0=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6e950>\n", - "\n", - "\n", - "\n", - "0_c67ca853ba2351e69f89f037ea41b0b9->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_b79b9897515efc8480fbae676047ff18\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f843f990>\n", - "\n", - "\n", - "\n", - "input_dict_b79b9897515efc8480fbae676047ff18->0_c67ca853ba2351e69f89f037ea41b0b9\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "0_38914fa97ea86fd0f2a736e0906d8d46\n", - "\n", - "0=<pyiron_base.project.delayed.DelayedObject object at 0x7f55fb6b3490>\n", - "\n", - "\n", - "\n", - "input_dict_b79b9897515efc8480fbae676047ff18->0_38914fa97ea86fd0f2a736e0906d8d46\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n", - "\n", - "energy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6f390>\n", - "\n", - "\n", - "\n", - "0_38914fa97ea86fd0f2a736e0906d8d46->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_d7ca004e3708134e7a300a68f4025259\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a7a610>\n", - "\n", - "\n", - "\n", - "structure_d7ca004e3708134e7a300a68f4025259->input_dict_b79b9897515efc8480fbae676047ff18\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_04c4f17a3d0cb1d2763d446a6995cdc1\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a842d0>\n", - "\n", - "\n", - "\n", - "structure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_d7ca004e3708134e7a300a68f4025259\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_512e4d45120ddba0cc1f8ad006094ae3\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a7b090>\n", - "\n", - "\n", - "\n", - "structure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_512e4d45120ddba0cc1f8ad006094ae3\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_e32b45d06adef4e6c12b7b39f96b32c5\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a7b350>\n", - "\n", - "\n", - "\n", - "structure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_e32b45d06adef4e6c12b7b39f96b32c5\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_5a33de3b4baeba31cb9059f2ebde7093\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a7bc90>\n", - "\n", - "\n", - "\n", - "structure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_5a33de3b4baeba31cb9059f2ebde7093\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_e166ec187b983faaf9f6c4a8f4f9d6c1\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a848d0>\n", - "\n", - "\n", - "\n", - "structure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_e166ec187b983faaf9f6c4a8f4f9d6c1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a78110>\n", - "\n", - "\n", - "\n", - "structure_512e4d45120ddba0cc1f8ad006094ae3->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_028b50f8a655d5559b3b9530a319816d\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a79690>\n", - "\n", - "\n", - "\n", - "structure_e32b45d06adef4e6c12b7b39f96b32c5->input_dict_028b50f8a655d5559b3b9530a319816d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a793d0>\n", - "\n", - "\n", - "\n", - "structure_5a33de3b4baeba31cb9059f2ebde7093->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_ca5e34b9c72317406762f3747541a3e4\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a79cd0>\n", - "\n", - "\n", - "\n", - "structure_e166ec187b983faaf9f6c4a8f4f9d6c1->input_dict_ca5e34b9c72317406762f3747541a3e4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a84dd0>\n", - "\n", - "\n", - "\n", - "input_dict_1aae906a29f4a48f3eddf8e6b8ad45da->structure_04c4f17a3d0cb1d2763d446a6995cdc1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_f4511b90f1d10b2338ab6a9d2263a4f7\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55fb438790>\n", - "\n", - "\n", - "\n", - "structure_f4511b90f1d10b2338ab6a9d2263a4f7->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "element_467734216d9bd2497ffd28d5cd6daba0\n", - "\n", - "element=Al\n", - "\n", - "\n", - "\n", - "element_467734216d9bd2497ffd28d5cd6daba0->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "a_aea0574e321c6f75f923c059730e9537\n", - "\n", - "a=4.05\n", - "\n", - "\n", - "\n", - "a_aea0574e321c6f75f923c059730e9537->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cubic_bad787c53fa02a5559fe570238fdb23a\n", - "\n", - "cubic=True\n", - "\n", - "\n", - "\n", - "cubic_bad787c53fa02a5559fe570238fdb23a->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_77b75a01e65d83962d14fa8a882d6c34\n", - "\n", - "calculation=vc-relax\n", - "\n", - "\n", - "\n", - "calculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa\n", - "\n", - "kpts=[3, 3, 3]\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b79b9897515efc8480fbae676047ff18\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_028b50f8a655d5559b3b9530a319816d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_ca5e34b9c72317406762f3747541a3e4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1_5f04a7c65b988a18c77d5ae8cc16ae29\n", - "\n", - "1=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6c850>\n", - "\n", - "\n", - "\n", - "input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4->1_5f04a7c65b988a18c77d5ae8cc16ae29\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1_849b669eabd7fbb18fabf046a1615dc9\n", - "\n", - "1=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f8510250>\n", - "\n", - "\n", - "\n", - "input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4->1_849b669eabd7fbb18fabf046a1615dc9\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2_71845adb6150d68b3fbf57e3ca4908cf\n", - "\n", - "2=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6f710>\n", - "\n", - "\n", - "\n", - "input_dict_028b50f8a655d5559b3b9530a319816d->2_71845adb6150d68b3fbf57e3ca4908cf\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2_421cb9cfc0e7fe91df40b043a069b4cb\n", - "\n", - "2=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6f910>\n", - "\n", - "\n", - "\n", - "input_dict_028b50f8a655d5559b3b9530a319816d->2_421cb9cfc0e7fe91df40b043a069b4cb\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3_6adfa852c86d5f38b6bd784c1fef94b3\n", - "\n", - "3=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6d6d0>\n", - "\n", - "\n", - "\n", - "input_dict_6b0354c0ae3f2aec5766bb7b6511e13d->3_6adfa852c86d5f38b6bd784c1fef94b3\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3_e4b6baaf825e550ca7b8eec4b80d1c20\n", - "\n", - "3=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6e7d0>\n", - "\n", - "\n", - "\n", - "input_dict_6b0354c0ae3f2aec5766bb7b6511e13d->3_e4b6baaf825e550ca7b8eec4b80d1c20\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4_87d9553d8556fcd3992214b39494e075\n", - "\n", - "4=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6ca90>\n", - "\n", - "\n", - "\n", - "input_dict_ca5e34b9c72317406762f3747541a3e4->4_87d9553d8556fcd3992214b39494e075\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4_6febd2215a686d37f0246e36e9a33336\n", - "\n", - "4=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6cdd0>\n", - "\n", - "\n", - "\n", - "input_dict_ca5e34b9c72317406762f3747541a3e4->4_6febd2215a686d37f0246e36e9a33336\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10\n", - "\n", - "pseudopotentials={'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_b79b9897515efc8480fbae676047ff18\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_028b50f8a655d5559b3b9530a319816d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_ca5e34b9c72317406762f3747541a3e4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9\n", - "\n", - "smearing=0.02\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b79b9897515efc8480fbae676047ff18\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_028b50f8a655d5559b3b9530a319816d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_ca5e34b9c72317406762f3747541a3e4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_a17ade9a563d8dcadb655fb2e1c743a7\n", - "\n", - "working_directory=mini\n", - "\n", - "\n", - "\n", - "working_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_04c4f17a3d0cb1d2763d446a6995cdc1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781\n", - "\n", - "strain_lst=[0.9, 0.95, 1.0, 1.05, 1.1]\n", - "\n", - "\n", - "\n", - "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_d7ca004e3708134e7a300a68f4025259\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_512e4d45120ddba0cc1f8ad006094ae3\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_e32b45d06adef4e6c12b7b39f96b32c5\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_5a33de3b4baeba31cb9059f2ebde7093\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_e166ec187b983faaf9f6c4a8f4f9d6c1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83\n", - "\n", - "calculation=scf\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b79b9897515efc8480fbae676047ff18\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_028b50f8a655d5559b3b9530a319816d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_ca5e34b9c72317406762f3747541a3e4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_2e9abb255f1a31f7d29b4451ad422add\n", - "\n", - "working_directory=strain_0\n", - "\n", - "\n", - "\n", - "working_directory_2e9abb255f1a31f7d29b4451ad422add->0_c67ca853ba2351e69f89f037ea41b0b9\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_2e9abb255f1a31f7d29b4451ad422add->0_38914fa97ea86fd0f2a736e0906d8d46\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1_5f04a7c65b988a18c77d5ae8cc16ae29->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1_849b669eabd7fbb18fabf046a1615dc9->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_5423d2cc67129a6d0383af6f347df5bd\n", - "\n", - "working_directory=strain_1\n", - "\n", - "\n", - "\n", - "working_directory_5423d2cc67129a6d0383af6f347df5bd->1_5f04a7c65b988a18c77d5ae8cc16ae29\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_5423d2cc67129a6d0383af6f347df5bd->1_849b669eabd7fbb18fabf046a1615dc9\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2_71845adb6150d68b3fbf57e3ca4908cf->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2_421cb9cfc0e7fe91df40b043a069b4cb->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_cc646e064ddfc4b2811aba3d86d27992\n", - "\n", - "working_directory=strain_2\n", - "\n", - "\n", - "\n", - "working_directory_cc646e064ddfc4b2811aba3d86d27992->2_71845adb6150d68b3fbf57e3ca4908cf\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_cc646e064ddfc4b2811aba3d86d27992->2_421cb9cfc0e7fe91df40b043a069b4cb\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3_6adfa852c86d5f38b6bd784c1fef94b3->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3_e4b6baaf825e550ca7b8eec4b80d1c20->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_e27768d53df6cd8dc245c52054ecf31f\n", - "\n", - "working_directory=strain_3\n", - "\n", - "\n", - "\n", - "working_directory_e27768d53df6cd8dc245c52054ecf31f->3_6adfa852c86d5f38b6bd784c1fef94b3\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_e27768d53df6cd8dc245c52054ecf31f->3_e4b6baaf825e550ca7b8eec4b80d1c20\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4_87d9553d8556fcd3992214b39494e075->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4_6febd2215a686d37f0246e36e9a33336->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_72bba39b22d2b7ce154d37c7e8c658b7\n", - "\n", - "working_directory=strain_4\n", - "\n", - "\n", - "\n", - "working_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_87d9553d8556fcd3992214b39494e075\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_6febd2215a686d37f0246e36e9a33336\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "energy_lst_1e7a3d9fd1e11762af4b962d83b084c4->create_function_job_8ceb3031e9d0fd46bd383df696f06138\n", - "\n", - "\n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "delayed_object = load_workflow_json(project=pr, file_name=workflow_json_filename)\n", - "delayed_object.draw()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 4\n", - "The job get_dict_8c1e72002054a7529280a3e11ba005b5 was saved and received the ID: 5\n", - "The job calculate_qe_5e2d55d40f947e1c6791f89f7d93cd7c was saved and received the ID: 6\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": [ - "The job generate_structures_3d675d4377e56d5ea0701d9bc6ca2537 was saved and received the ID: 7\n", - "The job get_dict_7395f450ba5bbeb8b3b5f7f04cd1aec9 was saved and received the ID: 8\n", - "The job calculate_qe_9b97908b38e6b32fec79d75a790d84c8 was saved and received the ID: 9\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": [ - "The job get_dict_7dad0bf1f915918f5b44eec63656d045 was saved and received the ID: 10\n", - "The job calculate_qe_654811b39aaefd7f278e1e4d074d8e8a was saved and received the ID: 11\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": [ - "The job get_dict_dc6498824bbcffe1870502beda1e99ce was saved and received the ID: 12\n", - "The job calculate_qe_0bc9039e5d46cf41c8a5f8bddf5445dc was saved and received the ID: 13\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": [ - "The job get_dict_c9b3348d986cce1499e3c6382b6af93e was saved and received the ID: 14\n", - "The job calculate_qe_259189d1dff5a59e2e8184e71d9597d7 was saved and received the ID: 15\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": [ - "The job get_dict_3c8d628835f56af4881e577db8c861ab was saved and received the ID: 16\n", - "The job calculate_qe_f998ab33e0425ea3403460a5d2b17552 was saved and received the ID: 17\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": [ - "The job get_list_2e2c8977ec516980a06d35fe27dacb7e was saved and received the ID: 18\n", - "The job get_list_a67fcac31c6773ce51be0e8903d33c68 was saved and received the ID: 19\n", - "The job plot_energy_volume_curve_c282015f1c661a67154d2e1f50e9c167 was saved and received the ID: 20\n" - ] - }, - { - "data": { - "image/png": "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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "delayed_object.pull()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "aiida", - "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.11.0" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} +{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3 (ipykernel)","language":"python"},"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":"# 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":false},"outputs":[],"execution_count":1},{"cell_type":"code","source":"from aiida_workgraph import task, WorkGraph","metadata":{"trusted":false},"outputs":[],"execution_count":2},{"cell_type":"code","source":"from quantum_espresso_workflow import generate_structures\nfrom quantum_espresso_workflow import get_bulk_structure\nfrom quantum_espresso_workflow import calculate_qe as _calculate_qe\nfrom quantum_espresso_workflow import plot_energy_volume_curve","metadata":{"trusted":false},"outputs":[],"execution_count":3},{"cell_type":"code","source":"calculate_qe = task(outputs=[\"energy\", \"volume\", \"structure\"])(_calculate_qe)","metadata":{"trusted":false},"outputs":[],"execution_count":4},{"cell_type":"code","source":"wg = WorkGraph(\"wg-qe\")","metadata":{"trusted":false},"outputs":[],"execution_count":5},{"cell_type":"markdown","source":"### Prepare the inputs","metadata":{}},{"cell_type":"code","source":"element = orm.Str(\"Al\")\na = orm.Float(4.05)\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":false},"outputs":[],"execution_count":6},{"cell_type":"markdown","source":"### Actual tasks to construct the EOS workflow","metadata":{}},{"cell_type":"code","source":"get_bulk_structure_task = wg.add_task(\n get_bulk_structure,\n name=\"get_bulk_structure\",\n element=element,\n a=a,\n cubic=cubic,\n)","metadata":{"trusted":false},"outputs":[],"execution_count":7},{"cell_type":"code","source":"relax_prepare_input_dict_task = wg.add_task(\n get_dict,\n name=\"relax_get_dict\",\n structure=get_bulk_structure_task.outputs.result,\n calculation=calc_type_relax,\n kpts=kpts,\n pseudopotentials=pseudopotentials,\n smearing=smearing,\n)\n\nrelax_task = wg.add_task(\n calculate_qe,\n name=\"mini\",\n input_dict=relax_prepare_input_dict_task.outputs.result,\n working_directory=relax_workdir,\n)","metadata":{"trusted":false},"outputs":[],"execution_count":8},{"cell_type":"code","source":"generate_structures_task = wg.add_task(\n generate_structures,\n name=\"generate_structures\",\n structure=relax_task.outputs.structure,\n strain_lst=strain_lst,\n)","metadata":{"trusted":false},"outputs":[],"execution_count":9},{"cell_type":"code","source":"get_volumes_task = wg.add_task(get_list, name=\"get_volumes\")","metadata":{"trusted":false},"outputs":[],"execution_count":10},{"cell_type":"code","source":"get_energies_task = wg.add_task(get_list, name=\"get_energies\")","metadata":{"trusted":false},"outputs":[],"execution_count":11},{"cell_type":"code","source":"strain_dir_tasks, scf_qe_tasks, scf_get_dict_tasks = [], [], []\n\nfor i, strain in enumerate(strain_lst):\n\n structure_key = f\"s_{i}\"\n strain_dir = orm.Str(f\"strain_{i}\")\n generate_structures_task.add_output(\"workgraph.any\", structure_key)\n\n scf_prepare_input_dict_task = wg.add_task(\n get_dict,\n name=f\"get_dict_{i}\",\n structure=generate_structures_task.outputs[structure_key],\n calculation=calc_type_scf,\n kpts=kpts,\n pseudopotentials=pseudopotentials,\n smearing=smearing,\n )\n\n scf_qe_task = wg.add_task(\n calculate_qe,\n name=f\"qe_{i}\",\n input_dict=scf_prepare_input_dict_task.outputs.result,\n working_directory=strain_dir,\n )\n\n # collect energy and volume\n get_energies_task.set({f\"{i}\": scf_qe_task.outputs.energy})\n get_volumes_task.set({f\"{i}\": scf_qe_task.outputs.volume})","metadata":{"trusted":false},"outputs":[],"execution_count":12},{"cell_type":"code","source":"plot_energy_volume_curve_task = wg.add_task(\n plot_energy_volume_curve,\n name=\"plot_energy_volume_curve\",\n volume_lst=get_volumes_task.outputs.result,\n energy_lst=get_energies_task.outputs.result,\n)","metadata":{"trusted":false},"outputs":[],"execution_count":13},{"cell_type":"code","source":"wg","metadata":{"trusted":false},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"dcec02cd916542798a729a20a32242dd","version_major":2,"version_minor":1},"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'wg-qe',…"},"execution_count":14,"metadata":{},"output_type":"execute_result"}],"execution_count":14},{"cell_type":"code","source":"_ = write_workflow_json(wg=wg, file_name=workflow_json_filename)\n","metadata":{"trusted":false},"outputs":[],"execution_count":15},{"cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"{\n \"nodes\": {\n \"0\": \"quantum_espresso_workflow.get_bulk_structure\",\n \"1\": \"python_workflow_definition.shared.get_dict\",\n \"2\": \"quantum_espresso_workflow.calculate_qe\",\n \"3\": \"quantum_espresso_workflow.generate_structures\",\n \"4\": \"python_workflow_definition.shared.get_list\",\n \"5\": \"python_workflow_definition.shared.get_list\",\n \"6\": \"python_workflow_definition.shared.get_dict\",\n \"7\": \"quantum_espresso_workflow.calculate_qe\",\n \"8\": \"python_workflow_definition.shared.get_dict\",\n \"9\": \"quantum_espresso_workflow.calculate_qe\",\n \"10\": \"python_workflow_definition.shared.get_dict\",\n \"11\": \"quantum_espresso_workflow.calculate_qe\",\n \"12\": \"python_workflow_definition.shared.get_dict\",\n \"13\": \"quantum_espresso_workflow.calculate_qe\",\n \"14\": \"python_workflow_definition.shared.get_dict\",\n \"15\": \"quantum_espresso_workflow.calculate_qe\",\n \"16\": \"quantum_espresso_workflow.plot_energy_volume_curve\",\n \"17\": \"Al\",\n \"18\": 4.05,\n \"19\": true,\n \"20\": \"vc-relax\",\n \"21\": [\n 3,\n 3,\n 3\n ],\n \"22\": {\n \"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"\n },\n \"23\": 0.02,\n \"24\": \"mini\",\n \"25\": [\n 0.9,\n 0.95,\n 1.0,\n 1.05,\n 1.1\n ],\n \"26\": \"scf\",\n \"27\": \"strain_0\",\n \"28\": \"strain_1\",\n \"29\": \"strain_2\",\n \"30\": \"strain_3\",\n \"31\": \"strain_4\"\n },\n \"edges\": [\n {\n \"tn\": 1,\n \"th\": \"structure\",\n \"sn\": 0,\n \"sh\": null\n },\n {\n \"tn\": 2,\n \"th\": \"input_dict\",\n \"sn\": 1,\n \"sh\": null\n },\n {\n \"tn\": 3,\n \"th\": \"structure\",\n \"sn\": 2,\n \"sh\": \"structure\"\n },\n {\n \"tn\": 6,\n \"th\": \"structure\",\n \"sn\": 3,\n \"sh\": \"s_0\"\n },\n {\n \"tn\": 7,\n \"th\": \"input_dict\",\n \"sn\": 6,\n \"sh\": null\n },\n {\n \"tn\": 5,\n \"th\": \"0\",\n \"sn\": 7,\n \"sh\": \"energy\"\n },\n {\n \"tn\": 4,\n \"th\": \"0\",\n \"sn\": 7,\n \"sh\": \"volume\"\n },\n {\n \"tn\": 8,\n \"th\": \"structure\",\n \"sn\": 3,\n \"sh\": \"s_1\"\n },\n {\n \"tn\": 9,\n \"th\": \"input_dict\",\n \"sn\": 8,\n \"sh\": null\n },\n {\n \"tn\": 5,\n \"th\": \"1\",\n \"sn\": 9,\n \"sh\": \"energy\"\n },\n {\n \"tn\": 4,\n \"th\": \"1\",\n \"sn\": 9,\n \"sh\": \"volume\"\n },\n {\n \"tn\": 10,\n \"th\": \"structure\",\n \"sn\": 3,\n \"sh\": \"s_2\"\n },\n {\n \"tn\": 11,\n \"th\": \"input_dict\",\n \"sn\": 10,\n \"sh\": null\n },\n {\n \"tn\": 5,\n \"th\": \"2\",\n \"sn\": 11,\n \"sh\": \"energy\"\n },\n {\n \"tn\": 4,\n \"th\": \"2\",\n \"sn\": 11,\n \"sh\": \"volume\"\n },\n {\n \"tn\": 12,\n \"th\": \"structure\",\n \"sn\": 3,\n \"sh\": \"s_3\"\n },\n {\n \"tn\": 13,\n \"th\": \"input_dict\",\n \"sn\": 12,\n \"sh\": null\n },\n {\n \"tn\": 5,\n \"th\": \"3\",\n \"sn\": 13,\n \"sh\": \"energy\"\n },\n {\n \"tn\": 4,\n \"th\": \"3\",\n \"sn\": 13,\n \"sh\": \"volume\"\n },\n {\n \"tn\": 14,\n \"th\": \"structure\",\n \"sn\": 3,\n \"sh\": \"s_4\"\n },\n {\n \"tn\": 15,\n \"th\": \"input_dict\",\n \"sn\": 14,\n \"sh\": null\n },\n {\n \"tn\": 5,\n \"th\": \"4\",\n \"sn\": 15,\n \"sh\": \"energy\"\n },\n {\n \"tn\": 4,\n \"th\": \"4\",\n \"sn\": 15,\n \"sh\": \"volume\"\n },\n {\n \"tn\": 16,\n \"th\": \"volume_lst\",\n \"sn\": 4,\n \"sh\": null\n },\n {\n \"tn\": 16,\n \"th\": \"energy_lst\",\n \"sn\": 5,\n \"sh\": null\n },\n {\n \"tn\": 0,\n \"th\": \"element\",\n \"sn\": 17,\n \"sh\": null\n },\n {\n \"tn\": 0,\n \"th\": \"a\",\n \"sn\": 18,\n \"sh\": null\n },\n {\n \"tn\": 0,\n \"th\": \"cubic\",\n \"sn\": 19,\n \"sh\": null\n },\n {\n \"tn\": 1,\n \"th\": \"calculation\",\n \"sn\": 20,\n \"sh\": null\n },\n {\n \"tn\": 1,\n \"th\": \"kpts\",\n \"sn\": 21,\n \"sh\": null\n },\n {\n \"tn\": 1,\n \"th\": \"pseudopotentials\",\n \"sn\": 22,\n \"sh\": null\n },\n {\n \"tn\": 1,\n \"th\": \"smearing\",\n \"sn\": 23,\n \"sh\": null\n },\n {\n \"tn\": 2,\n \"th\": \"working_directory\",\n \"sn\": 24,\n \"sh\": null\n },\n {\n \"tn\": 3,\n \"th\": \"strain_lst\",\n \"sn\": 25,\n \"sh\": null\n },\n {\n \"tn\": 6,\n \"th\": \"calculation\",\n \"sn\": 26,\n \"sh\": null\n },\n {\n \"tn\": 6,\n \"th\": \"kpts\",\n \"sn\": 21,\n \"sh\": null\n },\n {\n \"tn\": 6,\n \"th\": \"pseudopotentials\",\n \"sn\": 22,\n \"sh\": null\n },\n {\n \"tn\": 6,\n \"th\": \"smearing\",\n \"sn\": 23,\n \"sh\": null\n },\n {\n \"tn\": 7,\n \"th\": \"working_directory\",\n \"sn\": 27,\n \"sh\": null\n },\n {\n \"tn\": 8,\n \"th\": \"calculation\",\n \"sn\": 26,\n \"sh\": null\n },\n {\n \"tn\": 8,\n \"th\": \"kpts\",\n \"sn\": 21,\n \"sh\": null\n },\n {\n \"tn\": 8,\n \"th\": \"pseudopotentials\",\n \"sn\": 22,\n \"sh\": null\n },\n {\n \"tn\": 8,\n \"th\": \"smearing\",\n \"sn\": 23,\n \"sh\": null\n },\n {\n \"tn\": 9,\n \"th\": \"working_directory\",\n \"sn\": 28,\n \"sh\": null\n },\n {\n \"tn\": 10,\n \"th\": \"calculation\",\n \"sn\": 26,\n \"sh\": null\n },\n {\n \"tn\": 10,\n \"th\": \"kpts\",\n \"sn\": 21,\n \"sh\": null\n },\n {\n \"tn\": 10,\n \"th\": \"pseudopotentials\",\n \"sn\": 22,\n \"sh\": null\n },\n {\n \"tn\": 10,\n \"th\": \"smearing\",\n \"sn\": 23,\n \"sh\": null\n },\n {\n \"tn\": 11,\n \"th\": \"working_directory\",\n \"sn\": 29,\n \"sh\": null\n },\n {\n \"tn\": 12,\n \"th\": \"calculation\",\n \"sn\": 26,\n \"sh\": null\n },\n {\n \"tn\": 12,\n \"th\": \"kpts\",\n \"sn\": 21,\n \"sh\": null\n },\n {\n \"tn\": 12,\n \"th\": \"pseudopotentials\",\n \"sn\": 22,\n \"sh\": null\n },\n {\n \"tn\": 12,\n \"th\": \"smearing\",\n \"sn\": 23,\n \"sh\": null\n },\n {\n \"tn\": 13,\n \"th\": \"working_directory\",\n \"sn\": 30,\n \"sh\": null\n },\n {\n \"tn\": 14,\n \"th\": \"calculation\",\n \"sn\": 26,\n \"sh\": null\n },\n {\n \"tn\": 14,\n \"th\": \"kpts\",\n \"sn\": 21,\n \"sh\": null\n },\n {\n \"tn\": 14,\n \"th\": \"pseudopotentials\",\n \"sn\": 22,\n \"sh\": null\n },\n {\n \"tn\": 14,\n \"th\": \"smearing\",\n \"sn\": 23,\n \"sh\": null\n },\n {\n \"tn\": 15,\n \"th\": \"working_directory\",\n \"sn\": 31,\n \"sh\": 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":false},"outputs":[],"execution_count":17},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":false},"outputs":[],"execution_count":18},{"cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":false},"outputs":[],"execution_count":19},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-01 10:50:22,650 INFO Started executing jobs locally\n2025-04-01 10:50:22,916 INFO Starting job - get_bulk_structure (cbd7d9e1-e367-4d7c-94f0-310b1a4f9c8f)\n2025-04-01 10:50:22,919 INFO Finished job - get_bulk_structure (cbd7d9e1-e367-4d7c-94f0-310b1a4f9c8f)\n2025-04-01 10:50:22,920 INFO Starting job - get_dict (5c7d171f-7910-4ce6-9eef-9a4d9a7529a8)\n2025-04-01 10:50:22,924 INFO Finished job - get_dict (5c7d171f-7910-4ce6-9eef-9a4d9a7529a8)\n2025-04-01 10:50:22,925 INFO Starting job - calculate_qe (8267d4c7-23ef-4ed3-9440-841790f572b7)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:50:41,470 INFO Finished job - calculate_qe (8267d4c7-23ef-4ed3-9440-841790f572b7)\n2025-04-01 10:50:41,471 INFO Starting job - generate_structures (381bd971-0704-48e7-9305-d01622a6847a)\n2025-04-01 10:50:41,476 INFO Finished job - generate_structures (381bd971-0704-48e7-9305-d01622a6847a)\n2025-04-01 10:50:41,477 INFO Starting job - get_dict (665d2bfd-ff33-4850-a685-935415c3a437)\n2025-04-01 10:50:41,479 INFO Finished job - get_dict (665d2bfd-ff33-4850-a685-935415c3a437)\n2025-04-01 10:50:41,479 INFO Starting job - get_dict (93373609-fa51-4b84-87ec-bf2bda04050e)\n2025-04-01 10:50:41,481 INFO Finished job - get_dict (93373609-fa51-4b84-87ec-bf2bda04050e)\n2025-04-01 10:50:41,481 INFO Starting job - get_dict (cd7bcaf9-8078-4f88-b006-e97607f75198)\n2025-04-01 10:50:41,483 INFO Finished job - get_dict (cd7bcaf9-8078-4f88-b006-e97607f75198)\n2025-04-01 10:50:41,483 INFO Starting job - get_dict (f9f7264c-9233-4f81-8d28-35309b2a030e)\n2025-04-01 10:50:41,485 INFO Finished job - get_dict (f9f7264c-9233-4f81-8d28-35309b2a030e)\n2025-04-01 10:50:41,485 INFO Starting job - get_dict (c4742465-a606-4c3e-8f9c-c5211c57c095)\n2025-04-01 10:50:41,487 INFO Finished job - get_dict (c4742465-a606-4c3e-8f9c-c5211c57c095)\n2025-04-01 10:50:41,488 INFO Starting job - calculate_qe (da2eec2b-cf50-42a3-9b3f-530ab34f6031)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:50:45,129 INFO Finished job - calculate_qe (da2eec2b-cf50-42a3-9b3f-530ab34f6031)\n2025-04-01 10:50:45,130 INFO Starting job - calculate_qe (b1f556b4-d4f1-4c0a-9247-4ec834948138)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:50:49,010 INFO Finished job - calculate_qe (b1f556b4-d4f1-4c0a-9247-4ec834948138)\n2025-04-01 10:50:49,011 INFO Starting job - calculate_qe (427e6966-a3c3-4fb9-8233-2635a5208a3b)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:50:52,957 INFO Finished job - calculate_qe (427e6966-a3c3-4fb9-8233-2635a5208a3b)\n2025-04-01 10:50:52,958 INFO Starting job - calculate_qe (63c1de35-c238-4dcc-8722-3a033abf8cbf)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:50:57,520 INFO Finished job - calculate_qe (63c1de35-c238-4dcc-8722-3a033abf8cbf)\n2025-04-01 10:50:57,521 INFO Starting job - calculate_qe (dee8151b-84fd-473a-8542-d49069bc5981)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:51:02,340 INFO Finished job - calculate_qe (dee8151b-84fd-473a-8542-d49069bc5981)\n2025-04-01 10:51:02,341 INFO Starting job - get_list (19c28499-2069-42a8-8e50-545118a4ecbf)\n2025-04-01 10:51:02,345 INFO Finished job - get_list (19c28499-2069-42a8-8e50-545118a4ecbf)\n2025-04-01 10:51:02,346 INFO Starting job - get_list (ecbe69ad-c617-41b3-87c8-a25b8b475e10)\n2025-04-01 10:51:02,349 INFO Finished job - get_list (ecbe69ad-c617-41b3-87c8-a25b8b475e10)\n2025-04-01 10:51:02,349 INFO Starting job - plot_energy_volume_curve (5d6df916-37bb-4dad-aab2-fc9d3733924d)\n2025-04-01 10:51:02,420 INFO Finished job - plot_energy_volume_curve (5d6df916-37bb-4dad-aab2-fc9d3733924d)\n2025-04-01 10:51:02,421 INFO Finished executing jobs locally\n"},{"data":{"text/plain":"{'cbd7d9e1-e367-4d7c-94f0-310b1a4f9c8f': {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]], \"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/wang_x3/repos/superstar54/python-workflow-definition'))},\n '5c7d171f-7910-4ce6-9eef-9a4d9a7529a8': {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]], \"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/wang_x3/repos/superstar54/python-workflow-definition'))},\n '8267d4c7-23ef-4ed3-9440-841790f572b7': {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.045637407648501, 0.0, 0.0], [0.0, 4.045637407648501, 0.0], [0.0, 0.0, 4.045637407648501]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.02281870382425, 2.02281870382425], [2.02281870382425, 0.0, 2.02281870382425], [2.02281870382425, 2.02281870382425, 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.9365698416843, 'volume': 66.21568389520992}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n '381bd971-0704-48e7-9305-d01622a6847a': {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.906019971048066, 0.0, 0.0], [0.0, 3.906019971048066, 0.0], [0.0, 0.0, 3.906019971048066]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530099855240326, 1.9530099855240326], [1.9530099855240326, 0.0, 1.9530099855240326], [1.9530099855240326, 1.9530099855240326, 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.9770540327699004, 0.0, 0.0], [0.0, 3.9770540327699004, 0.0], [0.0, 0.0, 3.9770540327699004]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270163849498, 1.9885270163849498], [1.9885270163849498, 0.0, 1.9885270163849498], [1.9885270163849498, 1.9885270163849498, 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.045637407648501, 0.0, 0.0], [0.0, 4.045637407648501, 0.0], [0.0, 0.0, 4.045637407648501]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.02281870382425, 2.02281870382425], [2.02281870382425, 0.0, 2.02281870382425], [2.02281870382425, 2.02281870382425, 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.111971122127825, 0.0, 0.0], [0.0, 4.111971122127825, 0.0], [0.0, 0.0, 4.111971122127825]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985561063912, 2.055985561063912], [2.055985561063912, 0.0, 2.055985561063912], [2.055985561063912, 2.055985561063912, 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.176231050261992, 0.0, 0.0], [0.0, 4.176231050261992, 0.0], [0.0, 0.0, 4.176231050261992]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881155251309957, 2.0881155251309957], [2.0881155251309957, 0.0, 2.0881155251309957], [2.0881155251309957, 2.0881155251309957, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n '665d2bfd-ff33-4850-a685-935415c3a437': {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.906019971048066, 0.0, 0.0], [0.0, 3.906019971048066, 0.0], [0.0, 0.0, 3.906019971048066]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530099855240326, 1.9530099855240326], [1.9530099855240326, 0.0, 1.9530099855240326], [1.9530099855240326, 1.9530099855240326, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n '93373609-fa51-4b84-87ec-bf2bda04050e': {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.9770540327699004, 0.0, 0.0], [0.0, 3.9770540327699004, 0.0], [0.0, 0.0, 3.9770540327699004]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270163849498, 1.9885270163849498], [1.9885270163849498, 0.0, 1.9885270163849498], [1.9885270163849498, 1.9885270163849498, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'cd7bcaf9-8078-4f88-b006-e97607f75198': {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.045637407648501, 0.0, 0.0], [0.0, 4.045637407648501, 0.0], [0.0, 0.0, 4.045637407648501]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.02281870382425, 2.02281870382425], [2.02281870382425, 0.0, 2.02281870382425], [2.02281870382425, 2.02281870382425, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'f9f7264c-9233-4f81-8d28-35309b2a030e': {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.111971122127825, 0.0, 0.0], [0.0, 4.111971122127825, 0.0], [0.0, 0.0, 4.111971122127825]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985561063912, 2.055985561063912], [2.055985561063912, 0.0, 2.055985561063912], [2.055985561063912, 2.055985561063912, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'c4742465-a606-4c3e-8f9c-c5211c57c095': {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.176231050261992, 0.0, 0.0], [0.0, 4.176231050261992, 0.0], [0.0, 0.0, 4.176231050261992]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881155251309957, 2.0881155251309957], [2.0881155251309957, 0.0, 2.0881155251309957], [2.0881155251309957, 2.0881155251309957, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'da2eec2b-cf50-42a3-9b3f-530ab34f6031': {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.9060199539751044, 0.0, 0.0], [0.0, 3.9060199539751044, 0.0], [0.0, 0.0, 3.9060199539751044]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530099769635174, 1.9530099769635174], [1.9530099769635174, 0.0, 1.9530099769635174], [1.9530099769635174, 1.9530099769635174, 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.845781112245, 'volume': 59.59411472424278}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'b1f556b4-d4f1-4c0a-9247-4ec834948138': {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.977054015386449, 0.0, 0.0], [0.0, 3.977054015386449, 0.0], [0.0, 0.0, 3.977054015386449]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270077082742, 1.9885270077082742], [1.9885270077082742, 0.0, 1.9885270077082742], [1.9885270077082742, 1.9885270077082742, 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.9161853618145, 'volume': 62.90489887558943}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n '427e6966-a3c3-4fb9-8233-2635a5208a3b': {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.045637389965275, 0.0, 0.0], [0.0, 4.045637389965275, 0.0], [0.0, 0.0, 4.045637389965275]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186949583877, 2.0228186949583877], [2.0228186949583877, 0.0, 2.0228186949583877], [2.0228186949583877, 2.0228186949583877, 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.936567876358, 'volume': 66.21568302693622}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n '63c1de35-c238-4dcc-8722-3a033abf8cbf': {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.111971104154655, 0.0, 0.0], [0.0, 4.111971104154655, 0.0], [0.0, 0.0, 4.111971104154655]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985552113417, 2.055985552113417], [2.055985552113417, 0.0, 2.055985552113417], [2.055985552113417, 2.055985552113417, 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.9193225358792, 'volume': 69.52646717828286}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'dee8151b-84fd-473a-8542-d49069bc5981': {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.176231032007949, 0.0, 0.0], [0.0, 4.176231032007949, 0.0], [0.0, 0.0, 4.176231032007949]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115515972979, 2.088115515972979], [2.088115515972979, 0.0, 2.088115515972979], [2.088115515972979, 2.088115515972979, 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.8738270284018, 'volume': 72.83725132962977}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n '19c28499-2069-42a8-8e50-545118a4ecbf': {1: Response(output=[59.59411472424278, 62.90489887558943, 66.21568302693622, 69.52646717828286, 72.83725132962977], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'ecbe69ad-c617-41b3-87c8-a25b8b475e10': {1: Response(output=[-1074.845781112245, -1074.9161853618145, -1074.936567876358, -1074.9193225358792, -1074.8738270284018], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n '5d6df916-37bb-4dad-aab2-fc9d3733924d': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))}}"},"execution_count":20,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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","text/plain":"
"},"metadata":{},"output_type":"display_data"}],"execution_count":20},{"cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":false},"outputs":[],"execution_count":21},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":22},{"cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":false},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"c33d6e1c56214809be64df7e49bd7b87","version_major":2,"version_minor":0},"text/plain":" 0%| | 0/17 [00:00\n\n\n\n\ncreate_function_job_8ceb3031e9d0fd46bd383df696f06138\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a88810>\n\n\n\nvolume_lst_105e463ce9fc4dadfb68786635ea6c9f\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6f690>\n\n\n\nvolume_lst_105e463ce9fc4dadfb68786635ea6c9f->create_function_job_8ceb3031e9d0fd46bd383df696f06138\n\n\n\n\n\n0_c67ca853ba2351e69f89f037ea41b0b9\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6e950>\n\n\n\n0_c67ca853ba2351e69f89f037ea41b0b9->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n\n\n\n\n\ninput_dict_b79b9897515efc8480fbae676047ff18\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f843f990>\n\n\n\ninput_dict_b79b9897515efc8480fbae676047ff18->0_c67ca853ba2351e69f89f037ea41b0b9\n\n\n\n\n\n0_38914fa97ea86fd0f2a736e0906d8d46\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7f55fb6b3490>\n\n\n\ninput_dict_b79b9897515efc8480fbae676047ff18->0_38914fa97ea86fd0f2a736e0906d8d46\n\n\n\n\n\nenergy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6f390>\n\n\n\n0_38914fa97ea86fd0f2a736e0906d8d46->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n\n\n\n\n\nstructure_d7ca004e3708134e7a300a68f4025259\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a7a610>\n\n\n\nstructure_d7ca004e3708134e7a300a68f4025259->input_dict_b79b9897515efc8480fbae676047ff18\n\n\n\n\n\nstructure_04c4f17a3d0cb1d2763d446a6995cdc1\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a842d0>\n\n\n\nstructure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_d7ca004e3708134e7a300a68f4025259\n\n\n\n\n\nstructure_512e4d45120ddba0cc1f8ad006094ae3\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a7b090>\n\n\n\nstructure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_512e4d45120ddba0cc1f8ad006094ae3\n\n\n\n\n\nstructure_e32b45d06adef4e6c12b7b39f96b32c5\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a7b350>\n\n\n\nstructure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_e32b45d06adef4e6c12b7b39f96b32c5\n\n\n\n\n\nstructure_5a33de3b4baeba31cb9059f2ebde7093\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a7bc90>\n\n\n\nstructure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_5a33de3b4baeba31cb9059f2ebde7093\n\n\n\n\n\nstructure_e166ec187b983faaf9f6c4a8f4f9d6c1\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a848d0>\n\n\n\nstructure_04c4f17a3d0cb1d2763d446a6995cdc1->structure_e166ec187b983faaf9f6c4a8f4f9d6c1\n\n\n\n\n\ninput_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a78110>\n\n\n\nstructure_512e4d45120ddba0cc1f8ad006094ae3->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n\n\n\n\n\ninput_dict_028b50f8a655d5559b3b9530a319816d\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a79690>\n\n\n\nstructure_e32b45d06adef4e6c12b7b39f96b32c5->input_dict_028b50f8a655d5559b3b9530a319816d\n\n\n\n\n\ninput_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a793d0>\n\n\n\nstructure_5a33de3b4baeba31cb9059f2ebde7093->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n\n\n\n\n\ninput_dict_ca5e34b9c72317406762f3747541a3e4\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a79cd0>\n\n\n\nstructure_e166ec187b983faaf9f6c4a8f4f9d6c1->input_dict_ca5e34b9c72317406762f3747541a3e4\n\n\n\n\n\ninput_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a84dd0>\n\n\n\ninput_dict_1aae906a29f4a48f3eddf8e6b8ad45da->structure_04c4f17a3d0cb1d2763d446a6995cdc1\n\n\n\n\n\nstructure_f4511b90f1d10b2338ab6a9d2263a4f7\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f55fb438790>\n\n\n\nstructure_f4511b90f1d10b2338ab6a9d2263a4f7->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n\n\n\n\n\na_aea0574e321c6f75f923c059730e9537\n\na=4.05\n\n\n\na_aea0574e321c6f75f923c059730e9537->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b79b9897515efc8480fbae676047ff18\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_028b50f8a655d5559b3b9530a319816d\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_ca5e34b9c72317406762f3747541a3e4\n\n\n\n\n\n1_5f04a7c65b988a18c77d5ae8cc16ae29\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6c850>\n\n\n\ninput_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4->1_5f04a7c65b988a18c77d5ae8cc16ae29\n\n\n\n\n\n1_849b669eabd7fbb18fabf046a1615dc9\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f8510250>\n\n\n\ninput_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4->1_849b669eabd7fbb18fabf046a1615dc9\n\n\n\n\n\n2_71845adb6150d68b3fbf57e3ca4908cf\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6f710>\n\n\n\ninput_dict_028b50f8a655d5559b3b9530a319816d->2_71845adb6150d68b3fbf57e3ca4908cf\n\n\n\n\n\n2_421cb9cfc0e7fe91df40b043a069b4cb\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6f910>\n\n\n\ninput_dict_028b50f8a655d5559b3b9530a319816d->2_421cb9cfc0e7fe91df40b043a069b4cb\n\n\n\n\n\n3_6adfa852c86d5f38b6bd784c1fef94b3\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6d6d0>\n\n\n\ninput_dict_6b0354c0ae3f2aec5766bb7b6511e13d->3_6adfa852c86d5f38b6bd784c1fef94b3\n\n\n\n\n\n3_e4b6baaf825e550ca7b8eec4b80d1c20\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6e7d0>\n\n\n\ninput_dict_6b0354c0ae3f2aec5766bb7b6511e13d->3_e4b6baaf825e550ca7b8eec4b80d1c20\n\n\n\n\n\n4_87d9553d8556fcd3992214b39494e075\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6ca90>\n\n\n\ninput_dict_ca5e34b9c72317406762f3747541a3e4->4_87d9553d8556fcd3992214b39494e075\n\n\n\n\n\n4_6febd2215a686d37f0246e36e9a33336\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7f55f7a6cdd0>\n\n\n\ninput_dict_ca5e34b9c72317406762f3747541a3e4->4_6febd2215a686d37f0246e36e9a33336\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_b79b9897515efc8480fbae676047ff18\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_028b50f8a655d5559b3b9530a319816d\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_ca5e34b9c72317406762f3747541a3e4\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b79b9897515efc8480fbae676047ff18\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_1aae906a29f4a48f3eddf8e6b8ad45da\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_028b50f8a655d5559b3b9530a319816d\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_ca5e34b9c72317406762f3747541a3e4\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_04c4f17a3d0cb1d2763d446a6995cdc1\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_d7ca004e3708134e7a300a68f4025259\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_512e4d45120ddba0cc1f8ad006094ae3\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_e32b45d06adef4e6c12b7b39f96b32c5\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_5a33de3b4baeba31cb9059f2ebde7093\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_e166ec187b983faaf9f6c4a8f4f9d6c1\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b79b9897515efc8480fbae676047ff18\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_56a57a93dc2c1f00ccd1b44d38dfe7d4\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_028b50f8a655d5559b3b9530a319816d\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_6b0354c0ae3f2aec5766bb7b6511e13d\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_ca5e34b9c72317406762f3747541a3e4\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_c67ca853ba2351e69f89f037ea41b0b9\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_38914fa97ea86fd0f2a736e0906d8d46\n\n\n\n\n\n1_5f04a7c65b988a18c77d5ae8cc16ae29->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n\n\n\n\n\n1_849b669eabd7fbb18fabf046a1615dc9->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_5f04a7c65b988a18c77d5ae8cc16ae29\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_849b669eabd7fbb18fabf046a1615dc9\n\n\n\n\n\n2_71845adb6150d68b3fbf57e3ca4908cf->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n\n\n\n\n\n2_421cb9cfc0e7fe91df40b043a069b4cb->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_71845adb6150d68b3fbf57e3ca4908cf\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_421cb9cfc0e7fe91df40b043a069b4cb\n\n\n\n\n\n3_6adfa852c86d5f38b6bd784c1fef94b3->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n\n\n\n\n\n3_e4b6baaf825e550ca7b8eec4b80d1c20->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_6adfa852c86d5f38b6bd784c1fef94b3\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_e4b6baaf825e550ca7b8eec4b80d1c20\n\n\n\n\n\n4_87d9553d8556fcd3992214b39494e075->volume_lst_105e463ce9fc4dadfb68786635ea6c9f\n\n\n\n\n\n4_6febd2215a686d37f0246e36e9a33336->energy_lst_1e7a3d9fd1e11762af4b962d83b084c4\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_87d9553d8556fcd3992214b39494e075\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_6febd2215a686d37f0246e36e9a33336\n\n\n\n\n\nenergy_lst_1e7a3d9fd1e11762af4b962d83b084c4->create_function_job_8ceb3031e9d0fd46bd383df696f06138\n\n\n\n\n","text/plain":""},"metadata":{},"output_type":"display_data"}],"execution_count":24},{"cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 4\nThe job get_dict_8c1e72002054a7529280a3e11ba005b5 was saved and received the ID: 5\nThe job calculate_qe_5e2d55d40f947e1c6791f89f7d93cd7c was saved and received the ID: 6\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":"The job generate_structures_3d675d4377e56d5ea0701d9bc6ca2537 was saved and received the ID: 7\nThe job get_dict_7395f450ba5bbeb8b3b5f7f04cd1aec9 was saved and received the ID: 8\nThe job calculate_qe_9b97908b38e6b32fec79d75a790d84c8 was saved and received the ID: 9\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":"The job get_dict_7dad0bf1f915918f5b44eec63656d045 was saved and received the ID: 10\nThe job calculate_qe_654811b39aaefd7f278e1e4d074d8e8a was saved and received the ID: 11\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":"The job get_dict_dc6498824bbcffe1870502beda1e99ce was saved and received the ID: 12\nThe job calculate_qe_0bc9039e5d46cf41c8a5f8bddf5445dc was saved and received the ID: 13\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":"The job get_dict_c9b3348d986cce1499e3c6382b6af93e was saved and received the ID: 14\nThe job calculate_qe_259189d1dff5a59e2e8184e71d9597d7 was saved and received the ID: 15\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":"The job get_dict_3c8d628835f56af4881e577db8c861ab was saved and received the ID: 16\nThe job calculate_qe_f998ab33e0425ea3403460a5d2b17552 was saved and received the ID: 17\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":"The job get_list_2e2c8977ec516980a06d35fe27dacb7e was saved and received the ID: 18\nThe job get_list_a67fcac31c6773ce51be0e8903d33c68 was saved and received the ID: 19\nThe job plot_energy_volume_curve_c282015f1c661a67154d2e1f50e9c167 was saved and received the ID: 20\n"},{"data":{"image/png":"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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoSQHBwMM8880xVZJQ6zGKxMOHMMgIfRcdTXGIzN5CISB2xZEcSK/em4uJkYc6YTrg41b3pt7MqNbKUnJyMp6dnha/x8PDg+eefr1Qokd8b1imYWT/EkJSZz4o9qdzcsbHZkUREarW0rHye+3YPAI/e2IrIxr4mJzJXpWpicXExWVlZ5zyys7MpLNR5JVK13F2cGNsjFIB5UTrRW0SkOhmGwdNf7yLzdBHtm/jq9AcqWZb8/f0JCAg45+Hv74+HhwfNmjXj+eefx2bTlIlUjbE9m+FstbDlyCl2Hcs0O46ISK319bZEVu9Lw8WpdPHJujz9dlaljsD8+fMJDg7m6aef5ptvvuGbb77h6aefpkmTJvznP//hwQcf5O2332bWrFlVnVfqqEa+7mXTb/O0jICISLVIzcrnhSWl02+P9W9NRFDdnn47q1LnLC1YsIA5c+YwZsyYsm3Dhg2jQ4cOvPvuu/z444+Ehoby6quv8vTTT1dZWKnbJvQJ59vtSSzdkcz0wZEE+riZHUlEpNYwDIOnv9pFVn4xHZv68dC1zc2OVGNUamRpw4YNdO7c+ZztnTt3Jjo6GoC+ffuSkJBwZelEfueqEH86h/pTWGJj4cYjZscREalVFv+WyI8xabg6WZk9uhPOmn4rU6kjERISwvvvv3/O9vfff5+QkNL7eZ08eZKAgIArSyfyB+N7hwHw8a8JFBbrnDgRkaqQkpnPi9+dmX67qRWtG/mYnKhmqdQ03OzZsxk9ejQ//PADV199NQBbtmwhJiaGL7/8EoDNmzdz++23V11SEWBIh8a89v0+UrMKWLYriZGdm5odSUTEoRmGwfSvdpKdX0ynEH8evEbTb39UqZGl4cOHExsby5AhQ0hPTyc9PZ3BgwcTExPD0KFDAfjTn/7E3/72tyoNK+LiZGVcz2YAzIuKxzAMkxOJiDi2RVuPsTb2eOn0220dNf12Hpc9slRUVMSgQYOYO3cuM2fOrI5MIhW6s3sob685yM5jmfyWcIquzeqZHUlExCElZ57m5e/2AvDEgNa00vTbeV12fXRxcWHnzp3VkUXkktT3duOWTsFA6eiSiIhcPsMwmLp4F9kFxVwV4s8Dmn67oEqNtd19993nPcFbxF4m9AkH4IfdKSRnnjY5jYiI4/liy1F+2X8cV+fSq9+crBazI9VYlTrBu7i4mA8++IDVq1fTtWtXvLy8yj2vc5WkurUN9qVHeD02Hk7no+gjPDUowuxIIiIOIzHjNK8s3QfAkwNa07Kht8mJarZKlaXdu3fTpUsXAPbv31/uOYtFzVTsY0KfcDYeTufTTQn8pV8r3F2czI4kIlLjGYbBtMU7yS4opkuoPxP7avrtYipVltauXVvVOUQu201tG9HE34PEjNN8uz2R268ONTuSiEiN99nmo6w7cAI3ZytvavrtklzR9YEHDx5kxYoVnD5des6ILuMWe3KyWri3t5YREBG5VMdO5fHK0tKr36YMbEOLQE2/XYpKlaWTJ0/Sr18/WrduzZAhQ0hOTgZg4sSJTJ48uUoDilTk9m6heLg4EZOSTfShk2bHERGpsUqn33aRW1hCt2YBZRfKyMVVqiw9/vjjuLi4kJCQgKenZ9n222+/neXLl1dZOJGL8fN0YVTXJoCWERARqcgnmxJYf/AE7i6afrtclSpLK1eu5PXXX6dp0/K3mmjVqhVHjugGp2JfZ+8Xt3pfKkfT88wNIyJSAx1Nz+O1ZaVXv00ZGEF4A6+L7CG/V6mylJubW25E6az09HTc3NyuOJTI5WjZ0IdrWjXAMGDBhniz44iI1Cg2m8HUxTvJLSyhe1g9Jpz5B6ZcukqVpWuuuYYPP/yw7GuLxYLNZuONN97ghhtuqLJwIpfqvjNz759vOUpuQbHJaUREao6FmxLYEHcSdxcrb9zWEaum3y5bpZYOeOONN+jXrx9btmyhsLCQp556ij179pCenk5UVFRVZxS5qOtaBxLewIvDJ3JZ/Nsx7ukVZnYkERHTHU3PY+b3pdNvUwdFEKbpt0qp1MhS+/bt2b9/P3379uWWW24hNzeXW2+9lW3bttGiRYuqzihyUVarhXt7lS4jMH9DPDablhEQkbrNZjOY8uUO8gpL6B5ej3v1j8hKq9TIEoCfnx/PPPNMVWYRuSK3dQthzsr9HDqeyy8HjnN9m4ZmRxIRMc1Hvx7h10PpeLg4Mfu2Tpp+uwKVLksZGRls2rSJtLQ0bDZbuefuueeeKw4mcrm83ZwZ3S2ED6IOMy8qXmVJROqsIydzmfVDDADTh0QQWv/ci7Lk0lWqLH333XeMHTuWnJwcfH19y90PzmKxqCyJae7t3Yx5Gw7z8/7jHEzL0c0hRaTOKZ1+28npohJ6Nq/H3T2amR3J4VXqnKXJkydz3333kZOTQ0ZGBqdOnSp7pKenV3VGkUvWrL4X/SJKR5Q+jI43N4yIiAkWRMez6XA6nq5OvKnptypRqbKUmJjIX/7yl/OutSRitrNL+H+59RiZp4tMTiMiYj/xJ3J5ffnZ6bdIQurp73RVqFRZGjhwIFu2bKnqLCJVoneL+rRp5ENeYQmLthw1O46IiF2cvfotv8hG7xb1Gds91OxItUalzlm6+eabmTJlCnv37qVDhw64uLiUe3748OFVEk6kMiwWC+P7hDH9q13M3xDPhD7hugeSiNR68zbEszn+FF6uTrw+SotPViWLYRiXvSCN1XrhASmLxUJJSckVhXI0WVlZ+Pn5kZmZia+vr9lxBDhdWEKvWT+SkVfEe+O6MqBdkNmRRESqzaHjOQx5ex35RTZeHdmesTqp+5Jc6t/vSk3D2Wy2Cz7qWlGSmsnD1Yk7ri4dgp4XFW9uGBGRalRy5uq3/CIbfVs24C5Nv1W5yypLQ4YMITMzs+zrWbNmkZGRUfb1yZMnadu2bZWFE7kS9/RqhpPVQvShk+xLzjI7johItZgXdZitR07h7ebMrFEdyi3nI1XjssrSihUrKCgoKPv6tddeK7dUQHFxMbGxsVWXTuQKBPt7MOjM9Nt8jS6JSC0UdzyHN1eU/t195uZImgbo6rfqcFll6Y+nN1XidCcRuxrfJwyAb7Ynkp5baG4YEZEqVGIzmLJoBwXFNq5p1YA7rg4xO1KtValzlkQcRbdmAbRv4ktBsY1PNyWYHUdEpMq8v/4QvyVk4OPmzOujOmr6rRpdVlmyWCzn/J+h/3OkJrNYLEzoXbpI5UfRRygqsV1kDxGRmu9gWjazV+4H4NmhkQT7e5icqHa7rHWWDMNg/PjxuLm5AZCfn8/DDz+Ml5cXQLnzmURqiqGdGjPzh32kZOWzfHcKwzoFmx1JRKTSSmwGTy7aSWGxjetaBzKmm6bfqttllaV777233Nd33333Oa/RTXSlpnFzduKuHs14+8cDzN8Qr7IkIg7tv+sOsf1oBj7uuvrNXi6rLM2bN6+6cohUq7t7hvKfnw6y9cgpdh7LoGNTf7MjiYhctgOp2fztzPTbjKFtaeyn6Td70AneUic09HFnaMfSESUtUikijqi4xMaTi3ZQWGLjhjaBjO7a1OxIdYbKktQZ43uHAbB0ZxJpWfnmhhERuUzv/nKIHccy8XF3ZuatuvrNnhymLKWnpzN27Fh8fX3x9/dn4sSJ5OTkVLhPXFwcI0eOJDAwEF9fX8aMGUNqauoVv684pk4h/nQJ9aeoxGDhRi0jICKOIzYlm3+sPgDAC8PaEeTnbnKiusVhytLYsWPZs2cPq1atYunSpfzyyy88+OCDF3x9bm4uAwYMwGKxsGbNGqKioigsLGTYsGHYbLZKv684tgl9SpcRWLjxCAXFuo+hiNR8Rb+bfusX0ZBbuzQxO1KdYzEcYBnuffv20bZtWzZv3ky3bt0AWL58OUOGDOHYsWMEB597ddPKlSsZPHgwp06dKruTcGZmJgEBAaxcuZL+/ftX6n3P51LvWizmKyqxcc3ra0nJymfO6E6M0py/iNRw/1xzgNkr9+Pr7syqJ66jka9GlarKpf79doiRpejoaPz9/csKDUD//v2xWq1s3LjxvPsUFBRgsVjK1oQCcHd3x2q1sn79+kq/rzg2Fycr43o1A2DehsO6ZY+I1GgxKVn848fS6bcXb2mnomQShyhLKSkpNGzYsNw2Z2dn6tWrR0pKynn36dmzJ15eXkydOpW8vDxyc3N58sknKSkpITk5udLvC6VFLCsrq9xDHMed3UNxc7ayOzGLrUdOmR1HROS8ikpsTP5iB0UlBv0jGzHiKk2/mcXUsjRt2rSyW6hc6BETE1Op9w4MDGTRokV89913eHt74+fnR0ZGBl26dMFqvbKPPXPmTPz8/MoeISFaPdWR1PNyLfulo2UERKSm+s9PcexJysLf04XXbm2vq99MdFmLUla1yZMnM378+Apf07x5c4KCgkhLSyu3vbi4mPT0dIKCgi6474ABA4iLi+PEiRM4Ozvj7+9PUFAQzZs3B6j0+06fPp0nnnii7OusrCwVJgczoW8Yn285yvI9KSRlnNZ9lUSkRtmblMU7a85Mvw1vR0MfTb+ZydSyFBgYSGBg4EVf16tXLzIyMti6dStdu3YFYM2aNdhsNnr06HHR/Rs0aFC2T1paGsOHD7+i93Vzcyt3LpQ4noggX3o1r0/0oZN8GH2EaYMjzI4kIgL8/9VvRSUGA9o2Yrhu0WQ6hzhnKTIykkGDBvHAAw+wadMmoqKimDRpEnfccUfZFWuJiYlERESwadOmsv3mzZvHr7/+SlxcHB9//DGjR4/m8ccfp02bNpf8vlJ7TegTBsBnmxM4XahlBESkZvjX2oPsTc4iwNOFV0fq3m81gUOUJYCFCxcSERFBv379GDJkCH379uW9994re76oqIjY2Fjy8vLKtsXGxjJixAgiIyN56aWXeOaZZ5g9e/Zlva/UXv0iGxFSz4OMvCK+2Z5odhwREfYkZfLPNQcBePGW9gT6aBajJnCIdZZqOq2z5Lj+t+4QryzbR+tG3qx47Fr9C05ETFNYbGP4P9cTk5LNoHZB/OfuLvqdVM1q1TpLItVldLcQPF2d2J+aw4a4k2bHEZE67J9rDxKTkk09L1deGamr32oSlSWp0/w8XLjtzCreWkZARMyyOzGTf60tnX576ZZ2NPDW9FtNorIkdd69vcMA+DEmlSMnc80NIyJ1TmFx6dVvJTaDmzs0ZmhHXWBU06gsSZ3XItCb61oHYhiwYMMRs+OISB3zzpoDxKRkU9/LlZduaWd2HDkPlSUR/n8ZgUVbjpJTUGxuGBGpM3Yey+DfP8UB8PKI9tTX9FuNpLIkAlzbKpDmgV5kFxSzeOsxs+OISB1QUFxSNv02tGNjhnRobHYkuQCVJRHAarUw/sy5S/M3xGOzaUUNEale/1h9gP2pOTTwduWlW9qbHUcqoLIkcsaoLk3xcXfm8Ilcft5/3Ow4IlKL7TiawdyfS6ffXhnRgXperiYnkoqoLImc4eXmzO3dSm+I/EHUYZPTiEhtlV9UOv1mM2B4p2AGtb/wjdulZlBZEvmde3uHYbHAugMnOJiWbXYcEamF3lp9gANpOTTwduPF4br6zRGoLIn8Tkg9T/pHNgJKz10SEalK2xJO8d4vpdNvr41sT4Cm3xyCypLIH5xdRmDx1kQy84rMDSMitcbvp99GXBXMgHaafnMUKksif9CreX0ignw4XVTC51sSzI4jIrXE31ftJ+54LoE+bryg6TeHorIk8gcWi6VsdGnBhiOUaBkBEblCW4+c4r/rDgEwc2QH/D01/eZIVJZEzuOWq5oQ4OlCYsZpVu1NNTuOiDiw/KISppyZfru1cxP6t21kdiS5TCpLIufh7uLEnd1DAZinZQRE5ArMWRnLoRO5NPRx4/lhmn5zRCpLIhcwrlcznKwWNh5OZ09SptlxRMQBbT2Szv/Wl/6Da9aoDvh5upicSCpDZUnkAhr7eTD4zGJxC7SMgIhcptOFJTy5aCeGUXqHgBsjNP3mqFSWRCpw9kTvb7YncTKnwNwwIuJQZq+M5fCJXBr5uvHcsLZmx5EroLIkUoEuoQF0bOpHYbGNTzdpGQERuTSbDqeX3TZp1qiO+Hlo+s2RqSyJVOD3ywh89OsRikps5gYSkRrvdGEJT325A8OAMd2ackObhmZHkiuksiRyETd3CCbQx43UrAJ+2J1idhwRqeHeWBFD/Mk8Gvu58+xQTb/VBipLIhfh6mxlbA8tIyAiF7fx0EnmRcUDpdNvvu6afqsNVJZELsHYHs1wdbKyLSGD7UczzI4jIjVQXmExU77cCcAdV4dwXetAkxNJVVFZErkEgT5uDO3UGID5Gl0SkfN4Y3ksCel5BPu588zNkWbHkSqksiRyiSb0Dgdg2a5k0rLyTU4jIjVJdNxJ5p9Zj+312zrio+m3WkVlSeQSdWjqR7dmARSVGHz86xGz44hIDZFbUMxTi3cAcGf3UK5ppem32kZlSeQyTOhTOrq0cGMC+UUlJqcRkZpg1g8xHE0/TRN/D54eEmF2HKkGKksil2Fgu0YE+7lzMreQpTuTzY4jIibbcPAEH50ZaX59lKbfaiuVJZHL4OxkZVyvMKB0GQHDMMwNJCKmySko5qnFpVe/je0RSt9WDUxOJNVFZUnkMt1xdQjuLlb2JGWxOf6U2XFExCQzv9/HsVOnaRrgwfQhuvqtNlNZErlMAV6ujOzcBNAilSJ11foDJ1i4sfR+kW/c1hFvN2eTE0l1UlkSqYTxZ5YRWLEnhcSM0yanERF7ys4vYuqZ6bdxPZvRu4Wm32o7lSWRSmgT5EOflvWxGfBhdLzZcUTEjl77PobEjNOE1PNg2mBd/VYXqCyJVNLZ0aXPNh0lr7DY5DQiYg+/7D/Op5vOTL+N6oSXpt/qBJUlkUq6MaIhofU8yTxdxNfbEs2OIyLVLCu/iGlnpt/u7dWMXi3qm5xI7EVlSaSSnKwW7u0dBsD8qHgtIyBSy722bB9JmfmE1vNkqqbf6hSVJZErMLpbU7xcnTiQlkPUwZNmxxGRavJTbBqfbT4KwJu3dcTTVdNvdYnKksgV8HV34bauTQEtIyBSW2XlFzH9q10ATOgTRo/mmn6ra1SWRK7Q2am4NbFpxJ/INTeMiFS5V5buJTkzn7D6njw1UNNvdZHKksgVah7ozQ1tAjEMWKBlBERqlbUxaXyx5RgWC7w5uhMerk5mRxITqCyJVIEJfUqXEVi05RjZ+UUmpxGRqpB5uohpX5Ve/XZfn3CuDqtnciIxi8qSSBW4plUDWgR6kVNQzJdbj5kdR0SqwMtL95KaVUB4Ay+eHNDG7DhiIpUlkSpgsVgYf2Z0acGGeGw2LSMg4sjWxKTy5dbS6bfZoztq+q2OU1kSqSKjujTB192Z+JN5/LQ/zew4IlJJmXlFTFtcevXb/X3D6dpM0291ncqSSBXxdHXmju6hAMyLijc3jIhU2ovf7SEtu4DmgV5M1vSboLIkUqXG9WyG1QLrDpzgQGq22XFE5DKt3pvKV9sSsVpg9uhOuLto+k1UlkSqVEg9T25q2wiAeRvizQ0jIpclI6+Q6V+XTr89cE1zuoQGmJxIagqVJZEqdnYZga9+O0ZmnpYREHEULyzZw/HsAloEevH4Ta3NjiM1iMqSSBXrEV6PyMa+5BfZ+GxzgtlxROQSrNiTwjfbkzT9JuelsiRSxSwWCxPO3ALlw+gjFJfYzA0kIhU6lVvIM1/vBuDBa1vQWdNv8gcqSyLVYPhVwdTzciUx4zSr9qaaHUdEKvD8kj2cyCmgVUNvHuvfyuw4UgOpLIlUA3cXJ+46s4zA/9Yf1uiSSA21fHcyS3Yk4WS1aPpNLkhlSaSajOvVDGerha1HTjFqbjQH07SUgEhNkp5byLPflE6/PXRtczqF+JsbSGoslSWRatLI151/3NEZH3dndhzNYMjb63n35zhKdCsUkRrhuW93cyKnkNaNvPmrpt+kAipLItXo5o6NWfX4ddzQJpDCYhszf4jhtrkbiDueY3Y0kTrt+13JLN2ZjJPVwpzRV+HmrOk3uTCVJZFqFuTnzgfjr+aN2zri4+bMtoQMhvxjHf/95ZBGmURMcDKngBlnpt8eub4FHZr6mZxIajqVJRE7sFgsjOkWwsonruW61oEUFNt49ft9jHk3mkMaZRKxq+e+3cPJ3EIignx49EZNv8nFqSyJ2FFjPw/mT7ia10d1wMfNma1HTjH4H+v43zqNMonYw9KdSSzblVx29Zurs/4MysXpp0TEziwWC7dfHcqKx6/lmlYNKCi28cqyfdz+bjSHT+SaHU+k1jqRU8Bz3+4B4M83tKR9E02/yaVRWRIxSbC/Bx/e152Zt3bA282ZLUdOMfgfv/DB+sPYNMokUqUMw2DGN7tJzy0ksrEvk25oaXYkcSAqSyImslgs3Nm9dJSpb8sG5BfZeGnpXu5471fiNcokUmW+25nMD7tTcLZamD26o6bf5LLop0WkBmji78FHE7vz6sj2eLk6sSk+nUH/+IX5URplErlSadn5PPdt6dVvk25sSbtgTb/J5XGYspSens7YsWPx9fXF39+fiRMnkpNT8VVEcXFxjBw5ksDAQHx9fRkzZgypqf9/n674+HgmTpxIeHg4Hh4etGjRgueff57CwsLq/jgi57BYLIzt0Yzlj11L7xb1yS+y8cJ3e7nzv7+ScDLP7HgiDskwDJ79ejcZeUW0bezLnzX9JpXgMGVp7Nix7Nmzh1WrVrF06VJ++eUXHnzwwQu+Pjc3lwEDBmCxWFizZg1RUVEUFhYybNgwbLbS+3TFxMRgs9l499132bNnD3//+9+ZO3cuTz/9tL0+lsg5Qup58vHEHrw8oj2erk5sPJzOwLd+YcGGeI0yiVyG7PwiXlm2j5V7U3FxKr36zcXJYf7sSQ1iMQyjxv/23bdvH23btmXz5s1069YNgOXLlzNkyBCOHTtGcHDwOfusXLmSwYMHc+rUKXx9fQHIzMwkICCAlStX0r9///N+rzfffJP//Oc/HDp06JLzZWVl4efnR2ZmZtn3EqkKR9PzeOrLnUQfOglAz+b1ePO2ToTU8zQ5mUjNVVxi4/MtR/nbyv2czC2dKXhqUBseuV6jSlLepf79doiKHR0djb+/f1lRAujfvz9Wq5WNGzeed5+CggIsFgtubm5l29zd3bFaraxfv/6C3yszM5N69epVXXiRKxBSz5OF9/fg5Vva4eHixK+HSkeZPorWKJPI+aw7cJyb317PM1/v5mRuIc0DvXj/3m786boWZkcTB+YQZSklJYWGDRuW2+bs7Ey9evVISUk57z49e/bEy8uLqVOnkpeXR25uLk8++SQlJSUkJyefd5+DBw/yzjvv8NBDD1WYp6CggKysrHIPkepitVoY1yuMFY9dS4/weuQVljDj2z3c/f5GjqbrXCYRgINpOUyYt4lx728iNjUbPw8Xnh/WlhWPXUu/yEZYLBazI4oDM7UsTZs2DYvFUuEjJiamUu8dGBjIokWL+O677/D29sbPz4+MjAy6dOmC1Xrux05MTGTQoEGMHj2aBx54oML3njlzJn5+fmWPkJCQSmUUuRyh9T359IGevDi8dJRpQ9xJBr31Cx//egQHmE0XqRancgt5/tvdDHzrF9bGHsfZamFCnzB+nnI9E/qE6xwlqRKmnrN0/PhxTp48WeFrmjdvzscff8zkyZM5depU2fbi4mLc3d1ZtGgRI0eOrPA9Tpw4gbOzM/7+/gQFBTF58mSmTJlS9nxSUhLXX389PXv2ZP78+ectU79XUFBAQUFB2ddZWVmEhITonCWxmyMnc5myaCeb4tMB6NuyAbNGdaBpgM5lkrqhsNjGh9HxvP3jAbLyiwHoH9mQ6UMiaRHobXI6cRSXes6SQ53gvWXLFrp27QqUnsA9aNCgC57gfT5r1qyhf//+7Nu3jzZt2gClI0o33HADXbt25eOPP8bJyemy8+kEbzGDzWawIDqe15fHkF9kw9vNmaeHRHJn9xBNOUitZRgGq/amMvOHmLLbA0UE+TBjaFv6tGxgcjpxNLWqLAEMHjyY1NRU5s6dS1FRERMmTKBbt2588sknQGnp6devHx9++CHdu3cHYN68eURGRhIYGEh0dDR//etfGT9+PHPmzCnb5/rrr6dZs2YsWLCgXFEKCgq65GwqS2KmwydyeerLHWyOLx15vaZVA2aN6kgTfw+Tk4lUrb1JWbyybC8b4kpnJBp4u/HkgNaM7haCk1X/QJDLd6l/v53tmOmKLFy4kEmTJtGvXz+sViujRo3i7bffLnu+qKiI2NhY8vL+/4TX2NhYpk+fTnp6OmFhYTzzzDM8/vjjZc+vWrWKgwcPcvDgQZo2bVru+zlIhxQhvIEXnz3Yi/kb4nljeQzrDpxg4N9/4dmbI7n9ao0yieNLy85nzor9fLH1KIYBrs5W7u8bziM3tMTbzWH+jIkDc5iRpZpMI0tSUxw6nsOUL3ey9UjpKNO1rQOZdWsHgjXKJA4ov6iE99cf5t9rD5JbWALA0I6NmTooQmuNSZWoddNwNZnKktQkJTaDeVGHeXNFLAXFNnzcnJkxtC2juzXVKJM4BMMw+G5nMq//EENixmkAOoX489zQSLo20zp4UnVUluxIZUlqorjjOTy5aAfbEjIAuL5NIDNv7UBjP40ySc21LeEULy/dy29nfm4b+7kzdVAEwzsFY9V5SVLFVJbsSGVJaqoSm8H76w8xe+V+Cott+Lg789zQttzWVaNMUrMkZpzmjeUxfLs9CQAPFyf+dH0LHrimOR6ul3+VssilUFmyI5UlqekOpmXz5KKdbD+aAcCNEQ15bWQHgvzczQ0mdV5uQTFzf47jvV8OUVBsw2KBUV2aMmVgGxr56udTqpfKkh2pLIkjKC6x8b/1h/nbqtJRJl93Z54b1o5RXZpolEnszmYz+PK3Y8xeEUtadukiv93D6/Hc0La0b+JncjqpK1SW7EhlSRzJgdRsnly0gx3HMgHoF9GQ127toH/Fi91Ex53klWV72ZNUel/N0HqePD0kgoHtglTcxa5UluxIZUkcTXGJjffWHeKtVQcoLCkdZXpheDtGdtYok1Sf+BO5vPb9PlbuTQXAx82ZR/u15N7eYbg567wksT+VJTtSWRJHtT81m8lf7GBXYukoU//IRrx2a3sa+miUSapO5uki3vnxAAui4ykqMbBa4K4eoTzevzX1vd3Mjid1mMqSHaksiSMrLrHx7i+HeGv1fopKDPw8XHhxeDtuuSpYo0xyRYpLbHyyKYG/r9rPqbwiAK5rHcgzN0fSupGPyelEVJbsSmVJaoOYlCyeXLSD3Yml55EMaNuIV0d2INBH//KXy7c2No1Xl+3jYFoOAK0aevPMzZFc36ahyclE/p/Kkh2pLEltUVRiY+5Pcby95gBFJQb+nqWjTMM7aZRJLs3+1GxeWbaPX/YfByDA04UnbmrNnd1DcXaympxOpDyVJTtSWZLaZl9yFpO/2MHe5NJRpkHtgnh5RHuNMskFncwp4O+r9/PppqOU2AxcnCyM7x3GpBtb4efhYnY8kfNSWbIjlSWpjYpKbPx7bRzvrDlAsc0gwNOFl0e0Z2jHYLOjSQ1SUFzCgg3xvLPmINn5xQAMbNeI6YMjCWvgZXI6kYqpLNmRypLUZnuSMnly0U72nRllGtIhiJduaU8DXcVUpxmGwfLdKcz8IYaE9DwA2gX78uzNbenVor7J6UQujcqSHaksSW1XWGzjX2sP8q+1Bym2GdTzcuXlW9pzc8fGZkcTE+w6lsnLy/ay6XA6AA193JgysA23dmmKk252Kw5EZcmOVJakrtidmMmTi3YQk5INwM0dG/PS8HZaK6eOSM3K543lsXy17RiGAW7OVh66tjkPXdcCLzdns+OJXDaVJTtSWZK6pLDYxj/XHOBfP8VRYjOo7+XKKyPaM7iDRplqq9OFJbz3yyHm/hzH6aISAEZcFcxTgyII9vcwOZ1I5aks2ZHKktRFu46VjjLFppaOMg3rFMyLw9tRz8vV5GRSVWw2g293JPLG8liSM/MB6BLqz4yhbekcGmByOpErp7JkRypLUlcVFJfwzo8H+c/PpaNMDbxdeWVEBwa1DzI7mlyhrUfSeWnpPnYczQCgib8H0wZHMLRjY625JbWGypIdqSxJXbfzWAZPLtrB/tTS1ZqHnxllCtAok8M5mp7HrOUxLNuZDICXqxOP3NCSiX3DcXfRzW6ldlFZsiOVJZHSUaZ/rD7A3J/jsBnQwNuN10a2Z0A7jTI5guz8Iv79Uxzvrz9MYbENiwVu7xbCEwNa68bKUmupLNmRypLI/9t+tHSU6ew9wUZcFcwLw9vh76lRppqoxGbwxZajzFkZy4mcQgB6t6jPsze3pW2wfp9J7aayZEcqSyLl5ReV8NbqA7z3S+koU6CPGzNHdqB/20ZmR5PfiTp4gpeX7i1bCiK8gRdPD4mkf2RDnZckdYLKkh2pLImc37aEUzy5aAdxx3MBuLVzE54f1g4/T90rzEyHjufw2vf7WL0vDQBfd2f+2r8143o2w9VZN7uVukNlyY5UlkQuLL+ohL+v2s9/1x3CZkAjXzdm3tqBGyM0ymRvGXmF/OPHA3wUfYRim4GT1cK4ns34a79WOhlf6iSVJTtSWRK5uK1HTjFl0Q4OnSgdZRrVpSnPDWurO9LbQVGJjY9/PcJbqw+QeboIgBsjGvL0kEhaNvQ2OZ2IeVSW7EhlSeTS5BeVMGdlLP9bfxjjzCjTrFs7ckNEQ7Oj1UqGYfDjvjRe+35fWUlt08iHZ4dGck2rQJPTiZhPZcmOVJZELs+W+HSmfLmTw2f+gI/u2pRnh2qUqSrtS87ilWV7iTp4EoAG3q48cVMbxnRrirOTzksSAZUlu1JZErl8pwtLmL0ylg+iSkeZgnzdmTWqA9e30SjTlTieXcDfVsXy+eaj2AxwdbJyX99w/nxDC3zcVUZFfk9lyY5UlkQqb3N8OlMW7SD+ZB5QuhDiM0Mj8dUf9suSX1TCB1GH+ffaOHIKigG4uUNjpg2OIKSep8npRGomlSU7UlkSuTKnC0t4Y0UM8zfEYxjQ2M+d10d15NrWOq/mYgzDYNmuZGb9EMOxU6cB6NjUjxlD23J1WD2T04nUbCpLdqSyJFI1Nh1OZ8qXOzhyZpTpzu4hPD0kUtNHF7DjaAYvL93LliOngNKpzKcGtWHEVU2wWrWopMjFqCzZkcqSSNXJKyzmjeWxzN8QD5Te7X7WqA66eut3kjNP88byWL7elgiAh4sTD13XnAevbY6nq7PJ6UQch8qSHaksiVS9Xw+d5Kkvd5KQXjrKdFePUJ4eEom3W90tA3mFxcz9+RDv/RJHfpENKF2vasrANgT56Wa3IpdLZcmOVJZEqkduQTGvL4/hw+gjQOko0xu3daRPywYmJ7Mvm81g8W/HeHNFLGnZBQB0D6vHjKFt6dDUz+R0Io5LZcmOVJZEqteGuBM89eXOshOY7+4ZyvTBkXjVgVGmjYdO8vKyvexOzAIgpJ4HTw+OZFD7IN3sVuQKqSzZkcqSSPXLLShm5g/7+PjXBACaBpSOMvVuUTtHmY6czGXm9zEs35MCgI+bM5NubMn4PmG4OTuZnE6kdlBZsiOVJRH72XDwBFO+3EliRuko0z29mjF1UEStGWXKyi/in2sOMj8qnsISG1YL3Nk9lMdvak0Dbzez44nUKipLdqSyJGJfOQXFvPb9Pj7ZWDrKFFLPgzdv60TP5vVNTlZ5xSU2Pt18lL+v2k96biEA17RqwLM3t6VNkI/J6URqJ5UlO1JZEjHH+gMnmLr4/0eZ7u3VjKmDIxzu8vmf9x/n1WV72Z+aA0CLQC+evbkt17cJ1HlJItVIZcmOVJZEzJOdX8Rr38fw6abSUabQep68eVtHejjAKNPBtGxeWbaPn2KPA+Dv6cLj/VtzV49QXHSzW5Fqp7JkRypLIub7Zf9xpi3eSVJmPhYL3NsrjKcGtamRo0zpuYW8tXo/CzcmUGIzcHGycE+vMP5yYyv8PLVauYi9qCzZkcqSSM2QlV/Ea8v28dnmowCE1ffkzdGdasw90gqLbXwYHc8/fjxAdn7pzW5vatuIp4dEEt7Ay+R0InWPypIdqSyJ1Cw/xaYx/atdJJ8ZZZrQO5wpA9vg4WrOJfeGYbBybyozv99H/Jn73kU29mXG0Mhau/SBiCNQWbIjlSWRmicrv4hXlu7liy3HAAhv4MXs0R3p2sy+o0x7kjJ5eelefj2UDkADbzemDGzNbV1DcNLNbkVMpbJkRypLIjXX2pg0pn21k9SsAiwWmNgnnCcHtsHdpXpHmdKy8pm9MpZFW49hGODmbOWBa5rz8PUt6vT97URqEpUlO1JZEqnZMk8X8fLSvXy5tXSUqXkDL94c3YmuzQKq/HvlF5Xwv3WH+PdPceQVlgAwvFMwUwdH0MTfo8q/n4hUnsqSHaksiTiGNTGpTFu8i7TsAqwWuP+a5jxxU+sqGWUyDIMlO5J4/YcYkjLzAegc6s+MoW3pElr1pUxErpzKkh2pLIk4jsy8Il5cuoevfksESheAfHN0pysqNFuPnOLlpXvZfjQDgGA/d6YOjmB4p2AtKilSg6ks2ZHKkojjWb03lelf7+L4mVGmB65tzuP9L2+U6dipPF5fHst3O5IA8HR14pHrW3D/Nc2r/ZwoEblyKkt2pLIk4pgy8gp58bu9fL2tdJSpZUNvZo/uxFUh/hXul1NQzH9+Osj/1h2moNiGxQKjuzblyQFtaOjrbofkIlIVVJbsSGVJxLGt3JPC01/v5kRO6SjTQ9e14LH+rXBzLj86VGIz+HLrUWav3M/x7AIAejavx7M3t6V9Ez8zoovIFVBZsiOVJRHHdyq3kBe+28O320un1FqdGWXqdGaUaUPcCV5Zuo+9yVlA6ergTw+J5Ka2jXRekoiDUlmyI5Ulkdpj+e4Unv1mFydyCnGyWri/bziHTuSyam8qAL7uzvylXyvu6RWGq7NudiviyFSW7EhlSaR2Sc8t5Pkle8pO3AZwslq4u0cof+3fmnperiamE5Gqcql/v7WMrIjIH9TzcuWdOztzc4cgXvs+htaNvJk2OIKWDX3MjiYiJlBZEhG5gEHtGzOofWOzY4iIyTThLiIiIlIBlSURERGRCqgsiYiIiFRAZUlERESkAipLIiIiIhVQWRIRERGpgMOUpfT0dMaOHYuvry/+/v5MnDiRnJycCveJi4tj5MiRBAYG4uvry5gxY0hNTT3vawsKCrjqqquwWCxs3769Gj6BiIiIOCKHKUtjx45lz549rFq1iqVLl/LLL7/w4IMPXvD1ubm5DBgwAIvFwpo1a4iKiqKwsJBhw4Zhs9nOef1TTz1FcHBwdX4EERERcUAOsSjlvn37WL58OZs3b6Zbt24AvPPOOwwZMoTZs2eft+RERUURHx/Ptm3bypYwX7BgAQEBAaxZs4b+/fuXvfaHH35g5cqVLF68mB9++ME+H0pEREQcgkOMLEVHR+Pv719WlAD69++P1Wpl48aN592noKAAi8WCm5tb2TZ3d3esVivr168v25aamsoDDzzARx99hKenZ/V9CBEREXFIDlGWUlJSaNiwYbltzs7O1KtXj5SUlPPu07NnT7y8vJg6dSp5eXnk5uby5JNPUlJSQnJyMgCGYTB+/HgefvjhckXsYgoKCsjKyir3EBERkdrJ1LI0bdo0LBZLhY+YmJhKvXdgYCCLFi3iu+++w9vbGz8/PzIyMujSpQtWa+nHfuedd8jOzmb69OmX9d4zZ87Ez8+v7BESElKpjCIiIlLzmXrO0uTJkxk/fnyFr2nevDlBQUGkpaWV215cXEx6ejpBQUEX3HfAgAHExcVx4sQJnJ2d8ff3JygoiObNmwOwZs0aoqOjy03VAXTr1o2xY8eyYMGC877v9OnTeeKJJ8q+zsrKUmESERGppUwtS4GBgQQGBl70db169SIjI4OtW7fStWtXoLTo2Gw2evTocdH9GzRoULZPWloaw4cPB+Dtt9/mlVdeKXtdUlISAwcO5PPPP6/wfd3c3M4pWCIiIlI7OcTVcJGRkQwaNIgHHniAuXPnUlRUxKRJk7jjjjvKroRLTEykX79+fPjhh3Tv3h2AefPmERkZSWBgINHR0fz1r3/l8ccfp02bNgCEhoaW+z7e3t4AtGjRgqZNm15yPsMwAHTukoiIiAM5+3f77N/xC3GIsgSwcOFCJk2aRL9+/bBarYwaNYq333677PmioiJiY2PJy8sr2xYbG8v06dNJT08nLCyMZ555hscff7zKs2VnZwNoKk5ERMQBZWdn4+fnd8HnLcbF6pRclM1mIykpCR8fHywWi9lxys6hOnr0aNkaU3WZjkd5Oh7l6XicS8ekPB2P8mrT8TAMg+zsbIKDg8su/jofhxlZqsmsVutlTdvZi6+vr8P/IFclHY/ydDzK0/E4l45JeToe5dWW41HRiNJZDrHOkoiIiIhZVJZEREREKqCyVAu5ubnx/PPPa3mDM3Q8ytPxKE/H41w6JuXpeJRXF4+HTvAWERERqYBGlkREREQqoLIkIiIiUgGVJREREZEKqCw5sMTERO6++27q16+Ph4cHHTp0YMuWLWXPG4bBc889R+PGjfHw8KB///4cOHDAxMTVq6LjUVRUxNSpU+nQoQNeXl4EBwdzzz33kJSUZHLq6nWxn5Hfe/jhh7FYLLz11lv2DWlHl3I89u3bx/Dhw/Hz88PLy4urr76ahIQEkxJXr4sdj5ycHCZNmkTTpk3x8PCgbdu2zJ0718TE1ScsLAyLxXLO489//jMA+fn5/PnPf6Z+/fp4e3szatQoUlNTTU5dfSo6Hunp6Tz66KO0adMGDw8PQkND+ctf/kJmZqbZsauNFqV0UKdOnaJPnz7ccMMN/PDDDwQGBnLgwAECAgLKXvPGG2/w9ttvs2DBAsLDw5kxYwYDBw5k7969uLu7m5i+6l3seOTl5fHbb78xY8YMOnXqxKlTp/jrX//K8OHDL1geHN2l/Iyc9fXXX/Prr7+W3WuxNrqU4xEXF0ffvn2ZOHEiL774Ir6+vuzZs6fW/fcCl3Y8nnjiCdasWcPHH39MWFgYK1eu5JFHHiE4OLjshuS1xebNmykpKSn7evfu3dx0002MHj0agMcff5xly5axaNEi/Pz8mDRpErfeeitRUVFmRa5WFR2PpKQkkpKSmD17Nm3btuXIkSM8/PDDJCUl8eWXX5qYuhoZ4pCmTp1q9O3b94LP22w2IygoyHjzzTfLtmVkZBhubm7Gp59+ao+IdnWx43E+mzZtMgDjyJEj1ZTKXJd6TI4dO2Y0adLE2L17t9GsWTPj73//e/WHM8GlHI/bb7/duPvuu+2UyFyXcjzatWtnvPTSS+W2denSxXjmmWeqM1qN8Ne//tVo0aKFYbPZjIyMDMPFxcVYtGhR2fP79u0zACM6OtrElPbz++NxPl988YXh6upqFBUV2TmZfWgazkEtWbKEbt26MXr0aBo2bEjnzp3573//W/b84cOHSUlJoX///mXb/Pz86NGjB9HR0WZErlYXOx7nk5mZicViwd/f3z4h7exSjonNZmPcuHFMmTKFdu3amZTUPi52PGw2G8uWLaN169YMHDiQhg0b0qNHD7755hvzQlejS/n56N27N0uWLCExMRHDMFi7di379+9nwIABJqW2j8LCQj7++GPuu+8+LBYLW7dupaioqNzv04iICEJDQ2vl79M/+uPxOJ/MzEx8fX1xdq6lE1ZmtzWpHDc3N8PNzc2YPn268dtvvxnvvvuu4e7ubsyfP98wDMOIiooyACMpKancfqNHjzbGjBljRuRqdbHj8UenT582unTpYtx11112Tmo/l3JMXnvtNeOmm24q+9dibR5ZutjxSE5ONgDD09PT+Nvf/mZs27bNmDlzpmGxWIyffvrJ5PRV71J+PvLz84177rnHAAxnZ2fD1dXVWLBggYmp7ePzzz83nJycjMTERMMwDGPhwoWGq6vrOa+7+uqrjaeeesre8ezuj8fjj44fP26EhoYaTz/9tJ2T2Y/KkoNycXExevXqVW7bo48+avTs2dMwjLpXli52PH6vsLDQGDZsmNG5c2cjMzPTXhHt7mLHZMuWLUajRo3K/QKszWXpYscjMTHRAIw777yz3GuGDRtm3HHHHXbLaS+X8t/Mm2++abRu3dpYsmSJsWPHDuOdd94xvL29jVWrVtk7rl0NGDDAGDp0aNnXdb0s/fF4/F5mZqbRvXt3Y9CgQUZhYaGdk9mPpuEcVOPGjWnbtm25bZGRkWVX7QQFBQGcc7VGampq2XO1ycWOx1lFRUWMGTOGI0eOsGrVqlpxx+wLudgxWbduHWlpaYSGhuLs7IyzszNHjhxh8uTJhIWFmZC4el3seDRo0ABnZ+dL+jmqDS52PE6fPs3TTz/N3/72N4YNG0bHjh2ZNGkSt99+O7NnzzYjsl0cOXKE1atXc//995dtCwoKorCwkIyMjHKvra2/T3/vfMfjrOzsbAYNGoSPjw9ff/01Li4uJiS0D5UlB9WnTx9iY2PLbdu/fz/NmjUDIDw8nKCgIH788cey57Oysti4cSO9evWya1Z7uNjxgP8vSgcOHGD16tXUr1/f3jHt6mLHZNy4cezcuZPt27eXPYKDg5kyZQorVqwwI3K1utjxcHV15eqrr77oz1FtcbHjUVRURFFREVZr+T8TTk5O2Gw2u+W0t3nz5tGwYUNuvvnmsm1du3bFxcWl3O/T2NhYEhISauXv09873/GA0r8nAwYMwNXVlSVLltTKK0bLMXtoSypn06ZNhrOzs/Hqq68aBw4cMBYuXGh4enoaH3/8cdlrZs2aZfj7+xvffvutsXPnTuOWW24xwsPDjdOnT5uYvHpc7HgUFhYaw4cPN5o2bWps377dSE5OLnsUFBSYnL56XMrPyB/V5mm4SzkeX331leHi4mK89957xoEDB4x33nnHcHJyMtatW2di8upxKcfjuuuuM9q1a2esXbvWOHTokDFv3jzD3d3d+Pe//21i8upTUlJihIaGGlOnTj3nuYcfftgIDQ011qxZY2zZssXo1avXOdOYtc2FjkdmZqbRo0cPo0OHDsbBgwfL/T4tLi42KW31UllyYN99953Rvn17w83NzYiIiDDee++9cs/bbDZjxowZRqNGjQw3NzejX79+RmxsrElpq19Fx+Pw4cMGcN7H2rVrzQtdzS72M/JHtbksGcalHY/333/faNmypeHu7m506tTJ+Oabb0xIah8XOx7JycnG+PHjjeDgYMPd3d1o06aNMWfOnAtePu7oVqxYYQDn/T15+vRp45FHHjECAgIMT09PY+TIkUZycrIJKe3nQsdj7dq1F/x9evjwYXPCVjOLYRiGGSNaIiIiIo5A5yyJiIiIVEBlSURERKQCKksiIiIiFVBZEhEREamAypKIiIhIBVSWRERERCqgsiQiIiJSAZUlERERkQqoLIlInRYWFsZbb71ldgwRqcFUlkTEYQ0bNoxBgwad97l169ZhsVjYuXOnnVOJSG2jsiQiDmvixImsWrWKY8eOnfPcvHnz6NatGx07djQhmYjUJipLIuKwhg4dSmBgIPPnzy+3PScnh0WLFjFx4kQWL15Mu3btcHNzIywsjDlz5lzw/eLj47FYLGzfvr1sW0ZGBhaLhZ9++gmAn376CYvFwooVK+jcuTMeHh7ceOONpKWl8cMPPxAZGYmvry933XUXeXl5Ze9js9mYOXMm4eHheHh40KlTJ7788suqPBwiUk1UlkTEYTk7O3PPPfcwf/58fn9P8EWLFlFSUkJkZCRjxozhjjvuYNeuXbzwwgvMmDHjnHJVGS+88AL//Oc/2bBhA0ePHmXMmDG89dZbfPLJJyxbtoyVK1fyzjvvlL1+5syZfPjhh8ydO5c9e/bw+OOPc/fdd/Pzzz9fcRYRqV4W4/e/YUREHExMTAyRkZGsXbuW66+/HoBrr72WZs2aYbPZOH78OCtXrix7/VNPPcWyZcvYs2cPUHqC92OPPcZjjz1GfHw84eHhbNu2jauuugooHVkKCAgoe/+ffvqJG264gdWrV9OvXz8AZs2axfTp04mLi6N58+YAPPzww8THx7N8+XIKCgqoV68eq1evplevXmVZ7r//fvLy8vjkk0/scKREpLI0siQiDi0iIoLevXvzwQcfAHDw4EHWrVvHxIkT2bdvH3369Cn3+j59+nDgwAFKSkqu6Pv+/lyoRo0a4enpWVaUzm5LS0sry5SXl8dNN92Et7d32ePDDz8kLi7uinKISPVzNjuAiMiVmjhxIo8++ij/+te/mDdvHi1atOC666677PexWkv//fj7AfeioqLzvtbFxaXsf1sslnJfn91ms9mA0nOoAJYtW0aTJk3Kvc7Nze2yc4qIfWlkSUQc3pgxY7BarXzyySd8+OGH3HfffVgsFiIjI4mKiir32qioKFq3bo2Tk9M57xMYGAhAcnJy2bbfn+xdWW3btsXNzY2EhARatmxZ7hESEnLF7y8i1UsjSyLi8Ly9vbn99tuZPn06WVlZjB8/HoDJkydz9dVX8/LLL3P77bcTHR3NP//5T/7973+f9308PDzo2bMns2bNIjw8nLS0NJ599tkrzufj48OTTz7J448/js1mo2/fvmRmZhIVFYWvry/33nvvFX8PEak+GlkSkVph4sSJnDp1ioEDBxIcHAxAly5d+OKLL/jss89o3749zz33HC+99FJZmTqfDz74gOLiYrp27cpjjz3GK6+8UiX5Xn75ZWbMmMHMmTOJjIxk0KBBLFu2jPDw8Cp5fxGpProaTkRERKQCGlkSERERqYDKkoiIiEgFVJZEREREKqCyJCIiIlIBlSURERGRCqgsiYiIiFRAZUlERESkAipLIiIiIhVQWRIRERGpgMqSiIiISAVUlkREREQqoLIkIiIiUoH/A4hDTvDyMQd6AAAAAElFTkSuQmCC","text/plain":"
"},"metadata":{},"output_type":"display_data"}],"execution_count":25},{"cell_type":"code","source":"","metadata":{"trusted":false},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/aiida_simple.ipynb b/aiida_simple.ipynb index 0cffc16..9503b1b 100644 --- a/aiida_simple.ipynb +++ b/aiida_simple.ipynb @@ -1,278 +1 @@ -{ - "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": "# Simple Workflow with aiida", - "metadata": {} - }, - { - "cell_type": "markdown", - "source": "## Define workflow with aiida", - "metadata": {} - }, - { - "cell_type": "code", - "source": "from python_workflow_definition.aiida import write_workflow_json\n\nfrom aiida_workgraph import WorkGraph, task\nfrom aiida import orm, load_profile\nload_profile()\n\nworkflow_json_filename = \"aiida_simple.json\"", - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 1 - }, - { - "cell_type": "code", - "source": [ - "from simple_workflow import add_x_and_y as _add_x_and_y\n", - "from simple_workflow import add_x_and_y_and_z as _add_x_and_y_and_z" - ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 2 - }, - { - "cell_type": "code", - "source": "wg = WorkGraph(\"wg-simple\")", - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 4 - }, - { - "cell_type": "code", - "source": [ - "add_x_and_y_task = wg.add_task(\n", - " task(outputs=['x', 'y', 'z'])(_add_x_and_y),\n", - " name=\"add_x_and_y\",\n", - " x=orm.Int(1),\n", - " y=orm.Int(2),\n", - ")" - ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 5 - }, - { - "cell_type": "code", - "source": [ - "add_x_and_y_and_z_task = wg.add_task(\n", - " _add_x_and_y_and_z,\n", - " name=\"add_x_and_y_and_z\",\n", - " x=add_x_and_y_task.outputs.x,\n", - " y=add_x_and_y_task.outputs.y,\n", - " z=add_x_and_y_task.outputs.z,\n", - ")" - ], - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 6 - }, - { - "cell_type": "code", - "source": "write_workflow_json(wg=wg, file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "data": { - "text/plain": "{'nodes': {'0': 'simple_workflow.add_x_and_y',\n '1': 'simple_workflow.add_x_and_y_and_z',\n '2': 1,\n '3': 2},\n 'edges': [{'tn': 1, 'th': 'x', 'sn': 0, 'sh': 'x'},\n {'tn': 1, 'th': 'y', 'sn': 0, 'sh': 'y'},\n {'tn': 1, 'th': 'z', 'sn': 0, 'sh': 'z'},\n {'tn': 0, 'th': 'x', 'sn': 2, 'sh': None},\n {'tn': 0, 'th': 'y', 'sn': 3, 'sh': None}]}" - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 7 - }, - { - "cell_type": "code", - "source": "!cat {workflow_json_filename}", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "{\n \"nodes\": {\n \"0\": \"simple_workflow.add_x_and_y\",\n \"1\": \"simple_workflow.add_x_and_y_and_z\",\n \"2\": 1,\n \"3\": 2\n },\n \"edges\": [\n {\n \"tn\": 1,\n \"th\": \"x\",\n \"sn\": 0,\n \"sh\": \"x\"\n },\n {\n \"tn\": 1,\n \"th\": \"y\",\n \"sn\": 0,\n \"sh\": \"y\"\n },\n {\n \"tn\": 1,\n \"th\": \"z\",\n \"sn\": 0,\n \"sh\": \"z\"\n },\n {\n \"tn\": 0,\n \"th\": \"x\",\n \"sn\": 2,\n \"sh\": null\n },\n {\n \"tn\": 0,\n \"th\": \"y\",\n \"sn\": 3,\n \"sh\": null\n }\n ]\n}" - } - ], - "execution_count": 8 - }, - { - "cell_type": "markdown", - "source": "## Load Workflow with jobflow", - "metadata": {} - }, - { - "cell_type": "code", - "source": "from python_workflow_definition.jobflow import load_workflow_json", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": "/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n" - } - ], - "execution_count": 9 - }, - { - "cell_type": "code", - "source": "from jobflow.managers.local import run_locally", - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 10 - }, - { - "cell_type": "code", - "source": "flow = load_workflow_json(file_name=workflow_json_filename)", - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 11 - }, - { - "cell_type": "code", - "source": "result = run_locally(flow)\nresult", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "2025-04-02 14:36:37,425 INFO Started executing jobs locally\n2025-04-02 14:36:37,751 INFO Starting job - add_x_and_y (4bcb90c8-2c19-4981-a88e-56d5d24b5df9)\n2025-04-02 14:36:37,754 INFO Finished job - add_x_and_y (4bcb90c8-2c19-4981-a88e-56d5d24b5df9)\n2025-04-02 14:36:37,755 INFO Starting job - add_x_and_y_and_z (88bc90e5-09a0-443d-b24e-673cc6bc0819)\n2025-04-02 14:36:37,756 INFO Finished job - add_x_and_y_and_z (88bc90e5-09a0-443d-b24e-673cc6bc0819)\n2025-04-02 14:36:37,756 INFO Finished executing jobs locally\n" - }, - { - "data": { - "text/plain": "{'4bcb90c8-2c19-4981-a88e-56d5d24b5df9': {1: Response(output={'x': 1, 'y': 2, 'z': 3}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '88bc90e5-09a0-443d-b24e-673cc6bc0819': {1: Response(output=6, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}" - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 12 - }, - { - "cell_type": "markdown", - "source": "## Load Workflow with pyiron_base", - "metadata": {} - }, - { - "cell_type": "code", - "source": "from pyiron_base import Project", - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 13 - }, - { - "cell_type": "code", - "source": "from python_workflow_definition.pyiron_base import load_workflow_json", - "metadata": { - "trusted": true - }, - "outputs": [], - "execution_count": 14 - }, - { - "cell_type": "code", - "source": "pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "278f490ab20c4eaf9d39a75a7ee5231d", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": "0it [00:00, ?it/s]" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": 15 - }, - { - "cell_type": "code", - "source": "delayed_object = load_workflow_json(project=pr, file_name=workflow_json_filename)\ndelayed_object.draw()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "data": { - "image/svg+xml": "\n\n\n\n\ncreate_function_job_988efa8422518ba29903b66c63607fb8\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x71606f71f740>\n\n\n\nx_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x71606f6efa70>\n\n\n\nx_b8003ea81f8e4a9bdbfd3b4eb1e68e2b->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\n\n\n\n\ny_f60ae41b1c92823db71999ac596241ab\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x71606f71f6e0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_f60ae41b1c92823db71999ac596241ab\n\n\n\n\n\nz_a926da40ec18154feb3f3bb147af8220\n\nz=<pyiron_base.project.delayed.DelayedObject object at 0x71606f71f2f0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->z_a926da40ec18154feb3f3bb147af8220\n\n\n\n\n\ny_f60ae41b1c92823db71999ac596241ab->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\nz_a926da40ec18154feb3f3bb147af8220->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_f60ae41b1c92823db71999ac596241ab\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->z_a926da40ec18154feb3f3bb147af8220\n\n\n\n\n", - "text/plain": "" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": 16 - }, - { - "cell_type": "code", - "source": "delayed_object.pull()", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "The job add_x_and_y_68901482a2c5221cc845f828aabebd27 was saved and received the ID: 1\nThe job add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d was saved and received the ID: 2\n" - }, - { - "data": { - "text/plain": "6" - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 17 - } - ] -} +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.12.8"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Aiida","metadata":{}},{"cell_type":"markdown","source":"## Define workflow with aiida","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import write_workflow_json\n\nfrom aiida_workgraph import WorkGraph, task\nfrom aiida import orm, load_profile\nload_profile()\n\nworkflow_json_filename = \"aiida_simple.json\"","metadata":{"trusted":false},"outputs":[],"execution_count":1},{"cell_type":"code","source":"from simple_workflow import add_x_and_y as _add_x_and_y\nfrom simple_workflow import add_x_and_y_and_z as _add_x_and_y_and_z","metadata":{"trusted":false},"outputs":[],"execution_count":2},{"cell_type":"code","source":"wg = WorkGraph(\"wg-simple\")","metadata":{"trusted":false},"outputs":[],"execution_count":4},{"cell_type":"code","source":"add_x_and_y_task = wg.add_task(\n task(outputs=['x', 'y', 'z'])(_add_x_and_y),\n name=\"add_x_and_y\",\n x=orm.Int(1),\n y=orm.Int(2),\n)","metadata":{"trusted":false},"outputs":[],"execution_count":5},{"cell_type":"code","source":"add_x_and_y_and_z_task = wg.add_task(\n _add_x_and_y_and_z,\n name=\"add_x_and_y_and_z\",\n x=add_x_and_y_task.outputs.x,\n y=add_x_and_y_task.outputs.y,\n z=add_x_and_y_task.outputs.z,\n)","metadata":{"trusted":false},"outputs":[],"execution_count":6},{"cell_type":"code","source":"write_workflow_json(wg=wg, file_name=workflow_json_filename)","metadata":{"trusted":false},"outputs":[{"data":{"text/plain":"{'nodes': {'0': 'simple_workflow.add_x_and_y',\n '1': 'simple_workflow.add_x_and_y_and_z',\n '2': 1,\n '3': 2},\n 'edges': [{'tn': 1, 'th': 'x', 'sn': 0, 'sh': 'x'},\n {'tn': 1, 'th': 'y', 'sn': 0, 'sh': 'y'},\n {'tn': 1, 'th': 'z', 'sn': 0, 'sh': 'z'},\n {'tn': 0, 'th': 'x', 'sn': 2, 'sh': None},\n {'tn': 0, 'th': 'y', 'sn': 3, 'sh': None}]}"},"execution_count":7,"metadata":{},"output_type":"execute_result"}],"execution_count":7},{"cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"{\n \"nodes\": {\n \"0\": \"simple_workflow.add_x_and_y\",\n \"1\": \"simple_workflow.add_x_and_y_and_z\",\n \"2\": 1,\n \"3\": 2\n },\n \"edges\": [\n {\n \"tn\": 1,\n \"th\": \"x\",\n \"sn\": 0,\n \"sh\": \"x\"\n },\n {\n \"tn\": 1,\n \"th\": \"y\",\n \"sn\": 0,\n \"sh\": \"y\"\n },\n {\n \"tn\": 1,\n \"th\": \"z\",\n \"sn\": 0,\n \"sh\": \"z\"\n },\n {\n \"tn\": 0,\n \"th\": \"x\",\n \"sn\": 2,\n \"sh\": null\n },\n {\n \"tn\": 0,\n \"th\": \"y\",\n \"sn\": 3,\n \"sh\": null\n }\n ]\n}"}],"execution_count":8},{"cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":false},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":9},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":false},"outputs":[],"execution_count":10},{"cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":false},"outputs":[],"execution_count":11},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-02 14:36:37,425 INFO Started executing jobs locally\n2025-04-02 14:36:37,751 INFO Starting job - add_x_and_y (4bcb90c8-2c19-4981-a88e-56d5d24b5df9)\n2025-04-02 14:36:37,754 INFO Finished job - add_x_and_y (4bcb90c8-2c19-4981-a88e-56d5d24b5df9)\n2025-04-02 14:36:37,755 INFO Starting job - add_x_and_y_and_z (88bc90e5-09a0-443d-b24e-673cc6bc0819)\n2025-04-02 14:36:37,756 INFO Finished job - add_x_and_y_and_z (88bc90e5-09a0-443d-b24e-673cc6bc0819)\n2025-04-02 14:36:37,756 INFO Finished executing jobs locally\n"},{"data":{"text/plain":"{'4bcb90c8-2c19-4981-a88e-56d5d24b5df9': {1: Response(output={'x': 1, 'y': 2, 'z': 3}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '88bc90e5-09a0-443d-b24e-673cc6bc0819': {1: Response(output=6, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"execution_count":12,"metadata":{},"output_type":"execute_result"}],"execution_count":12},{"cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":false},"outputs":[],"execution_count":13},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":14},{"cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":false},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"278f490ab20c4eaf9d39a75a7ee5231d","version_major":2,"version_minor":0},"text/plain":"0it [00:00, ?it/s]"},"metadata":{},"output_type":"display_data"}],"execution_count":15},{"cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=workflow_json_filename)\ndelayed_object.draw()","metadata":{"trusted":false},"outputs":[{"data":{"image/svg+xml":"\n\n\n\n\ncreate_function_job_988efa8422518ba29903b66c63607fb8\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x71606f71f740>\n\n\n\nx_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x71606f6efa70>\n\n\n\nx_b8003ea81f8e4a9bdbfd3b4eb1e68e2b->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\n\n\n\n\ny_f60ae41b1c92823db71999ac596241ab\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x71606f71f6e0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_f60ae41b1c92823db71999ac596241ab\n\n\n\n\n\nz_a926da40ec18154feb3f3bb147af8220\n\nz=<pyiron_base.project.delayed.DelayedObject object at 0x71606f71f2f0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->z_a926da40ec18154feb3f3bb147af8220\n\n\n\n\n\ny_f60ae41b1c92823db71999ac596241ab->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\nz_a926da40ec18154feb3f3bb147af8220->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_f60ae41b1c92823db71999ac596241ab\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->z_a926da40ec18154feb3f3bb147af8220\n\n\n\n\n","text/plain":""},"metadata":{},"output_type":"display_data"}],"execution_count":16},{"cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"The job add_x_and_y_68901482a2c5221cc845f828aabebd27 was saved and received the ID: 1\nThe job add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d was saved and received the ID: 2\n"},{"data":{"text/plain":"6"},"execution_count":17,"metadata":{},"output_type":"execute_result"}],"execution_count":17}]} \ No newline at end of file diff --git a/book/_toc.yml b/book/_toc.yml new file mode 100644 index 0000000..d910700 --- /dev/null +++ b/book/_toc.yml @@ -0,0 +1,20 @@ +format: jb-book +root: README +chapters: +- file: intro.md +- file: simple.md + sections: + - file: aiida_simple.ipynb + - file: jobflow_simple.ipynb + - file: pyiron_base_simple.ipynb +- file: evcurve.md + sections: + - file: aiida_qe.ipynb + - file: jobflow_qe.ipynb + - file: pyiron_base_qe.ipynb +- file: nfdi.md + sections: + - file: aiida_nfdi.ipynb + - file: jobflow_nfdi.ipynb + - file: pyiron_base_nfdi.ipynb +- file: conclusion.md \ No newline at end of file diff --git a/book/conclusion.md b/book/conclusion.md new file mode 100644 index 0000000..f0e6582 --- /dev/null +++ b/book/conclusion.md @@ -0,0 +1,3 @@ +# Conclusion +Based on the Python Workflow Definition three rather different workflows were implemented in rather different workflow +engines. This demonstrates the interoperability achieved with the Python Workflow Definition. \ No newline at end of file diff --git a/book/config.yml b/book/config.yml new file mode 100644 index 0000000..4577b72 --- /dev/null +++ b/book/config.yml @@ -0,0 +1,13 @@ +title: Python Workflow Definition +author: Jan Janssen + +execute: + execute_notebooks : off + +repository: + url : https://github.com/pyiron-dev/python-workflow-definition + path_to_book : "" + +launch_buttons: + notebook_interface : jupyterlab + binderhub_url : https://mybinder.org \ No newline at end of file diff --git a/book/environment.yml b/book/environment.yml new file mode 100644 index 0000000..ffdaf20 --- /dev/null +++ b/book/environment.yml @@ -0,0 +1,4 @@ +channels: +- conda-forge +dependencies: +- jupyter-book \ No newline at end of file diff --git a/book/evcurve.md b/book/evcurve.md new file mode 100644 index 0000000..9c7ac43 --- /dev/null +++ b/book/evcurve.md @@ -0,0 +1,4 @@ +# Energy Volume Curve +Based on [previous work](https://materialdigital.github.io/ADIS2023/README.html) from the [ADIS 2023 workshop](https://www.mpie.de/4902385/adis2023) +the calculation of an energy volume curve with the [quantum espresso](https://www.quantum-espresso.org) density +functional theory (DFT) simulation code is implemented in the Python Workflow Definition. \ No newline at end of file diff --git a/book/intro.md b/book/intro.md new file mode 100644 index 0000000..ad4d1d4 --- /dev/null +++ b/book/intro.md @@ -0,0 +1,21 @@ +# Definition +In the Python Workflow Definition (PWD) each node represents a Python function, with the edges defining the connection +between input and output of the different Python functions. + +## Format +Each workflow consists of three files, a Python module which defines the individual Pythons, a JSON file which defines +the connections between the different Python functions and a conda environment file to define the software dependencies. +The files are not intended to be human readable, but rather interact as a machine readable exchange format between the +different workflow engines to enable interoperability. + +## Workflow Engines +Currently supported workflow engines: +* [aiida-workgraph](https://github.com/aiidateam/aiida-workgraph) +* [jobflow](https://github.com/materialsproject/jobflow) +* [pyiron_base](https://github.com/pyiron/pyiron_base) + +## Example Workflows +Three workflows are implemented: +* Simple workflow coupling two python functions +* Calculation of an energy volume curve with quantum espresso +* File based workflow benchmark from [NFDI4Ing](https://www.inggrid.org/article/id/3726/) diff --git a/book/nfdi.md b/book/nfdi.md new file mode 100644 index 0000000..f1a18cb --- /dev/null +++ b/book/nfdi.md @@ -0,0 +1,4 @@ +# NFDI4Ing Benchmark +To demonstrate the compatibility of the Python Workflow Definition to file based workflows, the workflow benchmark +developed as part of [NFDI4Ing](https://www.inggrid.org/article/id/3726/) is implemented for all three simulation codes +based on the Python Workflow Definition. \ No newline at end of file diff --git a/book/simple.md b/book/simple.md new file mode 100644 index 0000000..c02fac1 --- /dev/null +++ b/book/simple.md @@ -0,0 +1,50 @@ +# Simple Workflow +As a first example we define two Python functions which add multiple inputs: +```python +def add_x_and_y(x, y): + z = x + y + return x, y, z + +def add_x_and_y_and_z(x, y, z): + w = x + y + z + return w +``` +These two Python functions are combined in the following example workflow: +```python +x, y, z = add_x_and_y(x=1, y=2) +w = add_x_and_y_and_z(x=x, y=y, z=z) +``` +For the workflow representation of these Python functions the Python functions are stored in the [simple_workflow.py](simple_workflow.py) +Python module. The connection of the Python functions are stored in the [workflow_simple.json](workflow_simple.json) +JSON file: +``` +{ + "nodes": { + "0": "simple_workflow.add_x_and_y_and_z", + "1": "simple_workflow.add_x_and_y", + "2": "simple_workflow.add_x_and_y", + "3": "simple_workflow.add_x_and_y", + "4": 1, + "5": 2 + }, + "edges": [ + {"tn": 0, "th": "x", "sn": 1, "sh": "x"}, + {"tn": 1, "th": "x", "sn": 4, "sh": null}, + {"tn": 1, "th": "y", "sn": 5, "sh": null}, + {"tn": 0, "th": "y", "sn": 2, "sh": "y"}, + {"tn": 2, "th": "x", "sn": 4, "sh": null}, + {"tn": 2, "th": "y", "sn": 5, "sh": null}, + {"tn": 0, "th": "z", "sn": 3, "sh": "z"}, + {"tn": 3, "th": "x", "sn": 4, "sh": null}, + {"tn": 3, "th": "y", "sn": 5, "sh": null} + ] +} +``` +The abbreviations in the definition of the edges are: +* `tn` - target node +* `th` - target handle - for a node with multiple input parameters the target handle specifies which input parameter to use. +* `sn` - source node +* `sh` - source handle - for a node with multiple output parameters the source handle specifies which output parameter to use. + +As the workflow does not require any additional resources, as it is only using built-in functionality of the Python standard +library. diff --git a/jobflow_nfdi.ipynb b/jobflow_nfdi.ipynb index 200a365..c754cd1 100644 --- a/jobflow_nfdi.ipynb +++ b/jobflow_nfdi.ipynb @@ -1 +1 @@ -{"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":"https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements","metadata":{}},{"id":"6d86e804-245a-4d96-a1a3-1bc3216c3646","cell_type":"code","source":"!conda env list","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"\n# conda environments:\n#\nbase /srv/conda\nnotebook * /srv/conda/envs/notebook\npostprocessing /srv/conda/envs/postprocessing\npreprocessing /srv/conda/envs/preprocessing\nprocessing /srv/conda/envs/processing\n\n"}],"execution_count":1},{"id":"11e09b78-cb72-465f-9c8b-5b77f0aa729c","cell_type":"markdown","source":"# Preprocessing ","metadata":{}},{"id":"a76e6c0a-98f2-4436-af10-8097da183341","cell_type":"code","source":"from nfdi_ing_workflow import (\n generate_mesh as _generate_mesh, \n convert_to_xdmf as _convert_to_xdmf,\n poisson as _poisson,\n plot_over_line as _plot_over_line,\n substitute_macros as _substitute_macros,\n compile_paper as _compile_paper,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"89c02460-b543-442c-a27e-f1757dc2262e","cell_type":"code","source":"from jobflow import job, Flow","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":3},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf, data=[\"xdmf_file\", \"h5_file\"])\npoisson = job(_poisson, data=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"8d911f98-3b80-457f-a0f4-3cb37ebf1691","cell_type":"code","source":"domain_size = 2.0","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"cf1e22d2-9ce5-488f-8048-308d7d5d4966","cell_type":"markdown","source":"## generate mesh","metadata":{}},{"id":"71d411b6-cbec-489e-99e3-ba71680bcb5b","cell_type":"code","source":"gmsh_output_file = generate_mesh(\n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":6},{"id":"019938e7-8b41-47a9-b226-00e05dabc193","cell_type":"markdown","source":"## convert to xdmf","metadata":{}},{"id":"1d0d9804-f250-48b3-a5d0-a546d520f79b","cell_type":"code","source":"meshio_output_dict = convert_to_xdmf(\n gmsh_output_file=gmsh_output_file.output,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":7},{"id":"ceb0b643-caaa-426c-9781-28703440e647","cell_type":"markdown","source":"# Processing","metadata":{}},{"id":"11815a8b-319c-4ff3-8eae-330bf6e58eee","cell_type":"markdown","source":"## poisson","metadata":{}},{"id":"7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590","cell_type":"code","source":"poisson_dict = poisson(\n meshio_output_xdmf=meshio_output_dict.output.xdmf_file, \n meshio_output_h5=meshio_output_dict.output.h5_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":8},{"id":"bc8a8634-029e-4337-96a2-a1f284cb4c38","cell_type":"markdown","source":"# Postprocessing","metadata":{}},{"id":"157c5386-91a3-4e21-ac65-8f947f2d62fa","cell_type":"markdown","source":"## plot over line","metadata":{}},{"id":"3c4a29b0-eb1e-490a-8be0-e03cfff15e0a","cell_type":"code","source":"pvbatch_output_file = plot_over_line(\n poisson_output_pvd_file=poisson_dict.output.pvd_file, \n poisson_output_vtu_file=poisson_dict.output.vtu_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":9},{"id":"54f1d4bd-b944-470f-9cf8-30e64a24eb6d","cell_type":"markdown","source":"## substitute macros","metadata":{}},{"id":"a0a4c233-322d-4723-9627-62ca2487bfa9","cell_type":"code","source":"macros_tex_file = substitute_macros( \n pvbatch_output_file=pvbatch_output_file.output, \n ndofs=poisson_dict.output.numdofs, \n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":10},{"id":"2031b693-acf3-48bd-bb00-e33f669381e9","cell_type":"markdown","source":"## compile paper","metadata":{}},{"id":"c281408f-e63d-4380-a7e6-c595d49fbb8f","cell_type":"code","source":"paper_output = compile_paper(\n macros_tex=macros_tex_file.output, \n plot_file=pvbatch_output_file.output,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"a384d70a-8ef5-4fdd-880c-56ac7eaf87b9","cell_type":"code","source":"flow = Flow([gmsh_output_file, meshio_output_dict, poisson_dict, pvbatch_output_file, macros_tex_file, paper_output])","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"id":"5c1b0200-bba3-484d-ac49-f582898e974f","cell_type":"markdown","source":"# Convert ","metadata":{}},{"id":"196faf18-c46b-4f42-a652-698d2c580221","cell_type":"code","source":"from python_workflow_definition.jobflow import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"id":"fb23ad9c-76fd-4c0b-b546-e305d6c49796","cell_type":"code","source":"workflow_json_filename = \"jobflow_nfdi.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":14},{"id":"4139547a-9717-4708-b1a5-8202a0382d77","cell_type":"code","source":"write_workflow_json(flow=flow, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"id":"11a829e2-face-469f-b343-2c95763b1f13","cell_type":"markdown","source":"# Load Workflow with aiida","metadata":{}},{"id":"4f3acabe-55df-479a-af4d-a23a80c4660d","cell_type":"code","source":"from aiida import load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":16,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":16},{"id":"b6ba9444-a2c8-451b-b74c-19b0f69ba369","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":17},{"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":"db4b999e32234a12aa20455fa046dea5"}},"metadata":{}}],"execution_count":18},{"id":"5ef48778-4209-425f-8c6b-85a4cd2f92ec","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/02/2025 02:41:56 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh1\n04/02/2025 02:41:58 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|update_task_state]: Task: generate_mesh1, type: PyFunction, finished.\n04/02/2025 02:41:58 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf2\n04/02/2025 02:42:01 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf2, type: PyFunction, finished.\n04/02/2025 02:42:01 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson3\n04/02/2025 02:42:05 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|update_task_state]: Task: poisson3, type: PyFunction, finished.\n04/02/2025 02:42:05 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line4\n04/02/2025 02:42:07 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|update_task_state]: Task: plot_over_line4, type: PyFunction, finished.\n04/02/2025 02:42:07 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros5\n04/02/2025 02:42:09 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|update_task_state]: Task: substitute_macros5, type: PyFunction, finished.\n04/02/2025 02:42:09 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper6\n04/02/2025 02:42:12 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|update_task_state]: Task: compile_paper6, type: PyFunction, finished.\n04/02/2025 02:42:12 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/02/2025 02:42:12 PM <2016> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [28|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":19},{"id":"397b16a2-e1ec-4eec-8562-1c84f585c347","cell_type":"markdown","source":"# Load Workflow with pyiron_base","metadata":{}},{"id":"fdde6b82-b51d-434a-a9a8-5a8c31bbb429","cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":20},{"id":"be4d5d93-e9f6-4072-a6be-0ee5dc93590f","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":21},{"id":"4db75587-5f4c-416d-a1f6-c949077fa2ca","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":" 0%| | 0/6 [00:00","image/svg+xml":"\n\n\n\n\ncreate_function_job_53eb85d6d82fecfbbf97af61436a1e20\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x77a40a32b0b0>\n\n\n\nmacros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x77a40a32b170>\n\n\n\nmacros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2->create_function_job_53eb85d6d82fecfbbf97af61436a1e20\n\n\n\n\n\npvbatch_output_file_9d1a9b87944774e4e78d9da968ff99fe\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x77a40a32b470>\n\n\n\npvbatch_output_file_9d1a9b87944774e4e78d9da968ff99fe->macros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2\n\n\n\n\n\npoisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x77a40a32b0e0>\n\n\n\npoisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a->pvbatch_output_file_9d1a9b87944774e4e78d9da968ff99fe\n\n\n\n\n\nplot_file_9d1a9b87944774e4e78d9da968ff99fe\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x77a40a32b470>\n\n\n\npoisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a->plot_file_9d1a9b87944774e4e78d9da968ff99fe\n\n\n\n\n\nplot_file_9d1a9b87944774e4e78d9da968ff99fe->create_function_job_53eb85d6d82fecfbbf97af61436a1e20\n\n\n\n\n\nmeshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x77a40e9f97c0>\n\n\n\nmeshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21->poisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a\n\n\n\n\n\npoisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x77a40a32b5f0>\n\n\n\nmeshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21->poisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a\n\n\n\n\n\nndofs_94e80d99bd65f182606d914bcfc69587\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x77a40a32adb0>\n\n\n\nmeshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21->ndofs_94e80d99bd65f182606d914bcfc69587\n\n\n\n\n\npoisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a->pvbatch_output_file_9d1a9b87944774e4e78d9da968ff99fe\n\n\n\n\n\npoisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a->plot_file_9d1a9b87944774e4e78d9da968ff99fe\n\n\n\n\n\nndofs_94e80d99bd65f182606d914bcfc69587->macros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2\n\n\n\n\n\ngmsh_output_file_27004aae404cc419dd3dc1389fc88f0b\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x77a40a32bf80>\n\n\n\ngmsh_output_file_27004aae404cc419dd3dc1389fc88f0b->meshio_output_xdmf_f3f38cfe734b2fac03503bf1b0b2dc21\n\n\n\n\n\nmeshio_output_h5_421c94788b005f01f21c9dff066602da\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x77a40a32bbf0>\n\n\n\ngmsh_output_file_27004aae404cc419dd3dc1389fc88f0b->meshio_output_h5_421c94788b005f01f21c9dff066602da\n\n\n\n\n\nmeshio_output_h5_421c94788b005f01f21c9dff066602da->poisson_output_pvd_file_f104bb201447b192cc5a74afeb96949a\n\n\n\n\n\nmeshio_output_h5_421c94788b005f01f21c9dff066602da->poisson_output_vtu_file_5b31ff1f467eec7a35e7bd11c650b27a\n\n\n\n\n\nmeshio_output_h5_421c94788b005f01f21c9dff066602da->ndofs_94e80d99bd65f182606d914bcfc69587\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_fb028f57f3c3f54ac7ee35bd4c8bdfb2\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_27004aae404cc419dd3dc1389fc88f0b\n\n\n\n\n"},"metadata":{}}],"execution_count":23},{"id":"1c2760b6-96b4-4f44-ac49-a229d4a0cf67","cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n"},{"execution_count":24,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":24},{"id":"b3bba27e-ece9-4c02-834c-53e69844b140","cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[{"execution_count":25,"output_type":"execute_result","data":{"text/plain":" id status chemicalformula \\\n0 1 finished None \n1 2 finished None \n2 3 finished None \n3 4 finished None \n4 5 finished None \n5 6 finished None \n\n job \\\n0 generate_mesh_0b48cf5155cd6802c17d20bb58104132 \n1 convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 \n2 poisson_a0224b23ceb2119d105a5d98ef37f93e \n3 plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b \n4 substitute_macros_874fc185ecec04b4cb9537c58b7efb7b \n5 compile_paper_3cee534ffe692833d37faf1fd2170cb6 \n\n subjob projectpath \\\n0 /generate_mesh_0b48cf5155cd6802c17d20bb58104132 None \n1 /convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 None \n2 /poisson_a0224b23ceb2119d105a5d98ef37f93e None \n3 /plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b None \n4 /substitute_macros_874fc185ecec04b4cb9537c58b7efb7b None \n5 /compile_paper_3cee534ffe692833d37faf1fd2170cb6 None \n\n project timestart timestop totalcputime \\\n0 /home/jovyan/test/ 2025-04-02 14:42:14.018185 None None \n1 /home/jovyan/test/ 2025-04-02 14:42:15.692862 None None \n2 /home/jovyan/test/ 2025-04-02 14:42:17.404579 None None \n3 /home/jovyan/test/ 2025-04-02 14:42:20.491822 None None \n4 /home/jovyan/test/ 2025-04-02 14:42:22.530320 None None \n5 /home/jovyan/test/ 2025-04-02 14:42:23.760472 None None \n\n computer \\\n0 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n1 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n2 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n3 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n4 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n5 pyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1 \n\n hamilton hamversion parentid masterid \n0 PythonFunctionContainerJob 0.4 None None \n1 PythonFunctionContainerJob 0.4 None None \n2 PythonFunctionContainerJob 0.4 None None \n3 PythonFunctionContainerJob 0.4 None None \n4 PythonFunctionContainerJob 0.4 None None \n5 PythonFunctionContainerJob 0.4 None None ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idstatuschemicalformulajobsubjobprojectpathprojecttimestarttimestoptotalcputimecomputerhamiltonhamversionparentidmasterid
01finishedNonegenerate_mesh_0b48cf5155cd6802c17d20bb58104132/generate_mesh_0b48cf5155cd6802c17d20bb58104132None/home/jovyan/test/2025-04-02 14:42:14.018185NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
12finishedNoneconvert_to_xdmf_29ad6ec6927268429dc9aef8166fde43/convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43None/home/jovyan/test/2025-04-02 14:42:15.692862NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
23finishedNonepoisson_a0224b23ceb2119d105a5d98ef37f93e/poisson_a0224b23ceb2119d105a5d98ef37f93eNone/home/jovyan/test/2025-04-02 14:42:17.404579NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
34finishedNoneplot_over_line_82b37a42e0747f11d9a7f6318f63ac6b/plot_over_line_82b37a42e0747f11d9a7f6318f63ac6bNone/home/jovyan/test/2025-04-02 14:42:20.491822NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
45finishedNonesubstitute_macros_874fc185ecec04b4cb9537c58b7efb7b/substitute_macros_874fc185ecec04b4cb9537c58b7efb7bNone/home/jovyan/test/2025-04-02 14:42:22.530320NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
56finishedNonecompile_paper_3cee534ffe692833d37faf1fd2170cb6/compile_paper_3cee534ffe692833d37faf1fd2170cb6None/home/jovyan/test/2025-04-02 14:42:23.760472NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-boxlhbwf#1PythonFunctionContainerJob0.4NoneNone
\n
"},"metadata":{}}],"execution_count":25}]} \ No newline at end of file +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"048b53d1-db08-44ff-84cc-a4ff50032944","cell_type":"markdown","source":"# jobflow","metadata":{}},{"id":"106ded66-d202-46ac-82b0-2755ca309bdd","cell_type":"markdown","source":"https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements","metadata":{}},{"id":"856b2ba2-93d5-4516-93e1-a1eac49c48f2","cell_type":"markdown","source":"## Define workflow with jobflow","metadata":{}},{"id":"89c02460-b543-442c-a27e-f1757dc2262e","cell_type":"code","source":"from jobflow import job, Flow\n\nfrom python_workflow_definition.jobflow import write_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":1},{"id":"a76e6c0a-98f2-4436-af10-8097da183341","cell_type":"code","source":"from nfdi_ing_workflow import (\n generate_mesh as _generate_mesh, \n convert_to_xdmf as _convert_to_xdmf,\n poisson as _poisson,\n plot_over_line as _plot_over_line,\n substitute_macros as _substitute_macros,\n compile_paper as _compile_paper,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf, data=[\"xdmf_file\", \"h5_file\"])\npoisson = job(_poisson, data=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"8d911f98-3b80-457f-a0f4-3cb37ebf1691","cell_type":"code","source":"domain_size = 2.0","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"71d411b6-cbec-489e-99e3-ba71680bcb5b","cell_type":"code","source":"gmsh_output_file = generate_mesh(\n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":5},{"id":"1d0d9804-f250-48b3-a5d0-a546d520f79b","cell_type":"code","source":"meshio_output_dict = convert_to_xdmf(\n gmsh_output_file=gmsh_output_file.output,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":6},{"id":"7b69bcff-e2b1-4d4a-b62c-6a1c86eeb590","cell_type":"code","source":"poisson_dict = poisson(\n meshio_output_xdmf=meshio_output_dict.output.xdmf_file, \n meshio_output_h5=meshio_output_dict.output.h5_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":7},{"id":"3c4a29b0-eb1e-490a-8be0-e03cfff15e0a","cell_type":"code","source":"pvbatch_output_file = plot_over_line(\n poisson_output_pvd_file=poisson_dict.output.pvd_file, \n poisson_output_vtu_file=poisson_dict.output.vtu_file,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":8},{"id":"a0a4c233-322d-4723-9627-62ca2487bfa9","cell_type":"code","source":"macros_tex_file = substitute_macros( \n pvbatch_output_file=pvbatch_output_file.output, \n ndofs=poisson_dict.output.numdofs, \n domain_size=domain_size,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":9},{"id":"c281408f-e63d-4380-a7e6-c595d49fbb8f","cell_type":"code","source":"paper_output = compile_paper(\n macros_tex=macros_tex_file.output, \n plot_file=pvbatch_output_file.output,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":10},{"id":"a384d70a-8ef5-4fdd-880c-56ac7eaf87b9","cell_type":"code","source":"flow = Flow([gmsh_output_file, meshio_output_dict, poisson_dict, pvbatch_output_file, macros_tex_file, paper_output])","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"fb23ad9c-76fd-4c0b-b546-e305d6c49796","cell_type":"code","source":"workflow_json_filename = \"jobflow_nfdi.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"id":"4139547a-9717-4708-b1a5-8202a0382d77","cell_type":"code","source":"write_workflow_json(flow=flow, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"id":"11a829e2-face-469f-b343-2c95763b1f13","cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"id":"4f3acabe-55df-479a-af4d-a23a80c4660d","cell_type":"code","source":"from aiida import load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":14},{"id":"b6ba9444-a2c8-451b-b74c-19b0f69ba369","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"id":"c3528d55-6bf7-47ed-a110-65c47446ba92","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)\nwg","metadata":{"trusted":true},"outputs":[{"execution_count":16,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"ed7596c6123a451d836092fa381f61a7"}},"metadata":{}}],"execution_count":16},{"id":"5ef48778-4209-425f-8c6b-85a4cd2f92ec","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/04/2025 02:47:35 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh1\n04/04/2025 02:47:38 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|update_task_state]: Task: generate_mesh1, type: PyFunction, finished.\n04/04/2025 02:47:38 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf2\n04/04/2025 02:47:41 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf2, type: PyFunction, finished.\n04/04/2025 02:47:41 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson3\n04/04/2025 02:47:46 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|update_task_state]: Task: poisson3, type: PyFunction, finished.\n04/04/2025 02:47:46 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line4\n04/04/2025 02:47:48 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|update_task_state]: Task: plot_over_line4, type: PyFunction, finished.\n04/04/2025 02:47:49 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros5\n04/04/2025 02:47:50 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|update_task_state]: Task: substitute_macros5, type: PyFunction, finished.\n04/04/2025 02:47:50 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper6\n04/04/2025 02:47:54 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|update_task_state]: Task: compile_paper6, type: PyFunction, finished.\n04/04/2025 02:47:54 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/04/2025 02:47:54 PM <1667> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [2|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":17},{"id":"397b16a2-e1ec-4eec-8562-1c84f585c347","cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"id":"fdde6b82-b51d-434a-a9a8-5a8c31bbb429","cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":18},{"id":"be4d5d93-e9f6-4072-a6be-0ee5dc93590f","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":19},{"id":"4db75587-5f4c-416d-a1f6-c949077fa2ca","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"0it [00:00, ?it/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"1176c70fb2c34f76bd1614266e7444ce"}},"metadata":{}}],"execution_count":20},{"id":"4452a648-d4c3-4f5f-8678-ffb54bef17dc","cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=workflow_json_filename)\ndelayed_object.draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_ad78d751885eaefc2605f3dceb2cb1aa\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x72df51fc4260>\n\n\n\nmacros_tex_76816516c28d282cb376f4d1af23a98d\n\nmacros_tex=<pyiron_base.project.delayed.DelayedObject object at 0x72df4f7ee900>\n\n\n\nmacros_tex_76816516c28d282cb376f4d1af23a98d->create_function_job_ad78d751885eaefc2605f3dceb2cb1aa\n\n\n\n\n\npvbatch_output_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\npvbatch_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x72df4f7ee540>\n\n\n\npvbatch_output_file_0a1a8a5db5a6aedba38e6ab3d334b644->macros_tex_76816516c28d282cb376f4d1af23a98d\n\n\n\n\n\npoisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2\n\npoisson_output_pvd_file=<pyiron_base.project.delayed.DelayedObject object at 0x72df4f7ee210>\n\n\n\npoisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2->pvbatch_output_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\n\n\n\n\nplot_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\nplot_file=<pyiron_base.project.delayed.DelayedObject object at 0x72df4f7ee540>\n\n\n\npoisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2->plot_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\n\n\n\n\nplot_file_0a1a8a5db5a6aedba38e6ab3d334b644->create_function_job_ad78d751885eaefc2605f3dceb2cb1aa\n\n\n\n\n\nmeshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a\n\nmeshio_output_xdmf=<pyiron_base.project.delayed.DelayedObject object at 0x72df4f7eddc0>\n\n\n\nmeshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a->poisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2\n\n\n\n\n\npoisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93\n\npoisson_output_vtu_file=<pyiron_base.project.delayed.DelayedObject object at 0x72df4f7ee1e0>\n\n\n\nmeshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a->poisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93\n\n\n\n\n\nndofs_c8554a1b671d87672c81c508324bd11c\n\nndofs=<pyiron_base.project.delayed.DelayedObject object at 0x72df4f7ee5d0>\n\n\n\nmeshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a->ndofs_c8554a1b671d87672c81c508324bd11c\n\n\n\n\n\npoisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93->pvbatch_output_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\n\n\n\n\npoisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93->plot_file_0a1a8a5db5a6aedba38e6ab3d334b644\n\n\n\n\n\nndofs_c8554a1b671d87672c81c508324bd11c->macros_tex_76816516c28d282cb376f4d1af23a98d\n\n\n\n\n\ngmsh_output_file_78213b177bb355e1585daee03d735c19\n\ngmsh_output_file=<pyiron_base.project.delayed.DelayedObject object at 0x72df4f7edb50>\n\n\n\ngmsh_output_file_78213b177bb355e1585daee03d735c19->meshio_output_xdmf_434a8c4d1345685ee8fc0b7e00e32d0a\n\n\n\n\n\nmeshio_output_h5_efac48e79bcba581ea1c6da5811cd281\n\nmeshio_output_h5=<pyiron_base.project.delayed.DelayedObject object at 0x72df4f7edd90>\n\n\n\ngmsh_output_file_78213b177bb355e1585daee03d735c19->meshio_output_h5_efac48e79bcba581ea1c6da5811cd281\n\n\n\n\n\nmeshio_output_h5_efac48e79bcba581ea1c6da5811cd281->poisson_output_pvd_file_b5205a1ffc6dca69db1460c486a2a2e2\n\n\n\n\n\nmeshio_output_h5_efac48e79bcba581ea1c6da5811cd281->poisson_output_vtu_file_483d18e47061d6eead9dec38f84a4d93\n\n\n\n\n\nmeshio_output_h5_efac48e79bcba581ea1c6da5811cd281->ndofs_c8554a1b671d87672c81c508324bd11c\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20\n\ndomain_size=2.0\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->macros_tex_76816516c28d282cb376f4d1af23a98d\n\n\n\n\n\ndomain_size_f12a7f1986b9dd058dfc666dbe230b20->gmsh_output_file_78213b177bb355e1585daee03d735c19\n\n\n\n\n"},"metadata":{}}],"execution_count":21},{"id":"1c2760b6-96b4-4f44-ac49-a229d4a0cf67","cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job generate_mesh_0b48cf5155cd6802c17d20bb58104132 was saved and received the ID: 1\nThe job convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 was saved and received the ID: 2\nThe job poisson_a0224b23ceb2119d105a5d98ef37f93e was saved and received the ID: 3\nThe job plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b was saved and received the ID: 4\nThe job substitute_macros_874fc185ecec04b4cb9537c58b7efb7b was saved and received the ID: 5\nThe job compile_paper_3cee534ffe692833d37faf1fd2170cb6 was saved and received the ID: 6\n"},{"execution_count":22,"output_type":"execute_result","data":{"text/plain":"'/home/jovyan/postprocessing/paper.pdf'"},"metadata":{}}],"execution_count":22},{"id":"b3bba27e-ece9-4c02-834c-53e69844b140","cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[{"execution_count":23,"output_type":"execute_result","data":{"text/plain":" id status chemicalformula \\\n0 1 finished None \n1 2 finished None \n2 3 finished None \n3 4 finished None \n4 5 finished None \n5 6 finished None \n\n job \\\n0 generate_mesh_0b48cf5155cd6802c17d20bb58104132 \n1 convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 \n2 poisson_a0224b23ceb2119d105a5d98ef37f93e \n3 plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b \n4 substitute_macros_874fc185ecec04b4cb9537c58b7efb7b \n5 compile_paper_3cee534ffe692833d37faf1fd2170cb6 \n\n subjob projectpath \\\n0 /generate_mesh_0b48cf5155cd6802c17d20bb58104132 None \n1 /convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43 None \n2 /poisson_a0224b23ceb2119d105a5d98ef37f93e None \n3 /plot_over_line_82b37a42e0747f11d9a7f6318f63ac6b None \n4 /substitute_macros_874fc185ecec04b4cb9537c58b7efb7b None \n5 /compile_paper_3cee534ffe692833d37faf1fd2170cb6 None \n\n project timestart timestop totalcputime \\\n0 /home/jovyan/test/ 2025-04-04 14:47:55.342358 None None \n1 /home/jovyan/test/ 2025-04-04 14:47:56.888684 None None \n2 /home/jovyan/test/ 2025-04-04 14:47:58.709291 None None \n3 /home/jovyan/test/ 2025-04-04 14:48:01.939684 None None \n4 /home/jovyan/test/ 2025-04-04 14:48:03.947338 None None \n5 /home/jovyan/test/ 2025-04-04 14:48:05.245018 None None \n\n computer \\\n0 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n1 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n2 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n3 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n4 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n5 pyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1 \n\n hamilton hamversion parentid masterid \n0 PythonFunctionContainerJob 0.4 None None \n1 PythonFunctionContainerJob 0.4 None None \n2 PythonFunctionContainerJob 0.4 None None \n3 PythonFunctionContainerJob 0.4 None None \n4 PythonFunctionContainerJob 0.4 None None \n5 PythonFunctionContainerJob 0.4 None None ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idstatuschemicalformulajobsubjobprojectpathprojecttimestarttimestoptotalcputimecomputerhamiltonhamversionparentidmasterid
01finishedNonegenerate_mesh_0b48cf5155cd6802c17d20bb58104132/generate_mesh_0b48cf5155cd6802c17d20bb58104132None/home/jovyan/test/2025-04-04 14:47:55.342358NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
12finishedNoneconvert_to_xdmf_29ad6ec6927268429dc9aef8166fde43/convert_to_xdmf_29ad6ec6927268429dc9aef8166fde43None/home/jovyan/test/2025-04-04 14:47:56.888684NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
23finishedNonepoisson_a0224b23ceb2119d105a5d98ef37f93e/poisson_a0224b23ceb2119d105a5d98ef37f93eNone/home/jovyan/test/2025-04-04 14:47:58.709291NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
34finishedNoneplot_over_line_82b37a42e0747f11d9a7f6318f63ac6b/plot_over_line_82b37a42e0747f11d9a7f6318f63ac6bNone/home/jovyan/test/2025-04-04 14:48:01.939684NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
45finishedNonesubstitute_macros_874fc185ecec04b4cb9537c58b7efb7b/substitute_macros_874fc185ecec04b4cb9537c58b7efb7bNone/home/jovyan/test/2025-04-04 14:48:03.947338NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
56finishedNonecompile_paper_3cee534ffe692833d37faf1fd2170cb6/compile_paper_3cee534ffe692833d37faf1fd2170cb6None/home/jovyan/test/2025-04-04 14:48:05.245018NoneNonepyiron@jupyter-pyiron-dev-pyth-flow-definition-1xkr44oj#1PythonFunctionContainerJob0.4NoneNone
\n
"},"metadata":{}}],"execution_count":23}]} \ No newline at end of file diff --git a/jobflow_qe.ipynb b/jobflow_qe.ipynb index af7cc65..eba1056 100644 --- a/jobflow_qe.ipynb +++ b/jobflow_qe.ipynb @@ -1,1281 +1 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Quantum Espresso Energy Volume Curve Workflow with jobflow" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define workflow with jobflow" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from jobflow import job, Flow" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.jobflow import write_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "from quantum_espresso_workflow import (\n", - " calculate_qe as _calculate_qe, \n", - " generate_structures as _generate_structures, \n", - " get_bulk_structure as _get_bulk_structure, \n", - " plot_energy_volume_curve as _plot_energy_volume_curve,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "workflow_json_filename = \"jobflow_qe.json\"" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "calculate_qe = job(_calculate_qe, data=[\"energy\", \"volume\", \"structure\"])\n", - "generate_structures = job(_generate_structures, data=[f\"s_{i}\" for i in range(100)])\n", - "plot_energy_volume_curve = job(_plot_energy_volume_curve)\n", - "get_bulk_structure = job(_get_bulk_structure)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "structure = get_bulk_structure(\n", - " element=\"Al\",\n", - " a=4.05,\n", - " cubic=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "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": "code", - "execution_count": 10, - "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": 11, - "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": "code", - "execution_count": 12, - "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": 13, - "metadata": {}, - "outputs": [], - "source": [ - "flow = Flow([structure, calc_mini, structure_lst] + job_strain_lst + [plot])" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "write_workflow_json(flow=flow, file_name=workflow_json_filename)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\"nodes\": {\"0\": \"quantum_espresso_workflow.get_bulk_structure\", \"1\": \"quantum_espresso_workflow.calculate_qe\", \"2\": \"quantum_espresso_workflow.generate_structures\", \"3\": \"quantum_espresso_workflow.calculate_qe\", \"4\": \"quantum_espresso_workflow.calculate_qe\", \"5\": \"quantum_espresso_workflow.calculate_qe\", \"6\": \"quantum_espresso_workflow.calculate_qe\", \"7\": \"quantum_espresso_workflow.calculate_qe\", \"8\": \"quantum_espresso_workflow.plot_energy_volume_curve\", \"9\": \"Al\", \"10\": 4.05, \"11\": true, \"12\": \"mini\", \"13\": \"python_workflow_definition.shared.get_dict\", \"14\": {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}, \"15\": [3, 3, 3], \"16\": \"vc-relax\", \"17\": 0.02, \"18\": [0.9, 0.9500000000000001, 1.0, 1.05, 1.1], \"19\": \"strain_0\", \"20\": \"python_workflow_definition.shared.get_dict\", \"21\": \"scf\", \"22\": \"strain_1\", \"23\": \"python_workflow_definition.shared.get_dict\", \"24\": \"strain_2\", \"25\": \"python_workflow_definition.shared.get_dict\", \"26\": \"strain_3\", \"27\": \"python_workflow_definition.shared.get_dict\", \"28\": \"strain_4\", \"29\": \"python_workflow_definition.shared.get_dict\", \"30\": \"python_workflow_definition.shared.get_list\", \"31\": \"python_workflow_definition.shared.get_list\"}, \"edges\": [{\"tn\": 0, \"th\": \"element\", \"sn\": 9, \"sh\": null}, {\"tn\": 0, \"th\": \"a\", \"sn\": 10, \"sh\": null}, {\"tn\": 0, \"th\": \"cubic\", \"sn\": 11, \"sh\": null}, {\"tn\": 1, \"th\": \"working_directory\", \"sn\": 12, \"sh\": null}, {\"tn\": 13, \"th\": \"structure\", \"sn\": 0, \"sh\": null}, {\"tn\": 13, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 13, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 13, \"th\": \"calculation\", \"sn\": 16, \"sh\": null}, {\"tn\": 13, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 1, \"th\": \"input_dict\", \"sn\": 13, \"sh\": null}, {\"tn\": 2, \"th\": \"structure\", \"sn\": 1, \"sh\": \"structure\"}, {\"tn\": 2, \"th\": \"strain_lst\", \"sn\": 18, \"sh\": null}, {\"tn\": 3, \"th\": \"working_directory\", \"sn\": 19, \"sh\": null}, {\"tn\": 20, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_0\"}, {\"tn\": 20, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 20, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 20, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 20, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 3, \"th\": \"input_dict\", \"sn\": 20, \"sh\": null}, {\"tn\": 4, \"th\": \"working_directory\", \"sn\": 22, \"sh\": null}, {\"tn\": 23, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_1\"}, {\"tn\": 23, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 23, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 23, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 23, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 4, \"th\": \"input_dict\", \"sn\": 23, \"sh\": null}, {\"tn\": 5, \"th\": \"working_directory\", \"sn\": 24, \"sh\": null}, {\"tn\": 25, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_2\"}, {\"tn\": 25, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 25, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 25, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 25, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 5, \"th\": \"input_dict\", \"sn\": 25, \"sh\": null}, {\"tn\": 6, \"th\": \"working_directory\", \"sn\": 26, \"sh\": null}, {\"tn\": 27, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_3\"}, {\"tn\": 27, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 27, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 27, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 27, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 6, \"th\": \"input_dict\", \"sn\": 27, \"sh\": null}, {\"tn\": 7, \"th\": \"working_directory\", \"sn\": 28, \"sh\": null}, {\"tn\": 29, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_4\"}, {\"tn\": 29, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 29, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 29, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 29, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 7, \"th\": \"input_dict\", \"sn\": 29, \"sh\": null}, {\"tn\": 30, \"th\": \"0\", \"sn\": 3, \"sh\": \"volume\"}, {\"tn\": 30, \"th\": \"1\", \"sn\": 4, \"sh\": \"volume\"}, {\"tn\": 30, \"th\": \"2\", \"sn\": 5, \"sh\": \"volume\"}, {\"tn\": 30, \"th\": \"3\", \"sn\": 6, \"sh\": \"volume\"}, {\"tn\": 30, \"th\": \"4\", \"sn\": 7, \"sh\": \"volume\"}, {\"tn\": 8, \"th\": \"volume_lst\", \"sn\": 30, \"sh\": null}, {\"tn\": 31, \"th\": \"0\", \"sn\": 3, \"sh\": \"energy\"}, {\"tn\": 31, \"th\": \"1\", \"sn\": 4, \"sh\": \"energy\"}, {\"tn\": 31, \"th\": \"2\", \"sn\": 5, \"sh\": \"energy\"}, {\"tn\": 31, \"th\": \"3\", \"sn\": 6, \"sh\": \"energy\"}, {\"tn\": 31, \"th\": \"4\", \"sn\": 7, \"sh\": \"energy\"}, {\"tn\": 8, \"th\": \"energy_lst\", \"sn\": 31, \"sh\": null}]}" - ] - } - ], - "source": [ - "!cat {workflow_json_filename}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load Workflow with aiida" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Profile" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from aiida import load_profile\n", - "\n", - "load_profile()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.aiida import load_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "wg = load_workflow_json(workflow_json_filename)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4b2f21f2dbc74d8fa206428847590b35", - "version_major": 2, - "version_minor": 1 - }, - "text/plain": [ - "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wg" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "04/01/2025 10:52:32 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n", - "04/01/2025 10:52:33 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PyFunction, finished.\n", - "04/01/2025 10:52:34 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10\n", - "04/01/2025 10:52:35 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n", - "04/01/2025 10:52:36 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:52:55 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n", - "04/01/2025 10:52:55 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe2, type: PyFunction, finished.\n", - "04/01/2025 10:52:56 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n", - "04/01/2025 10:52:57 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: generate_structures3, type: PyFunction, finished.\n", - "04/01/2025 10:52:58 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict11,get_dict12,get_dict13,get_dict14,get_dict15\n", - "04/01/2025 10:52:59 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict11, type: PyFunction, finished.\n", - "04/01/2025 10:52:59 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict13,get_dict14,get_dict15,calculate_qe4\n", - "04/01/2025 10:53:00 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n", - "04/01/2025 10:53:01 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict13,get_dict14,get_dict15,calculate_qe4,calculate_qe5\n", - "04/01/2025 10:53:02 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict13, type: PyFunction, finished.\n", - "04/01/2025 10:53:03 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict15,calculate_qe4,calculate_qe5,calculate_qe6\n", - "04/01/2025 10:53:04 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n", - "04/01/2025 10:53:04 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict15,calculate_qe4,calculate_qe5,calculate_qe6,calculate_qe7\n", - "04/01/2025 10:53:05 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict15, type: PyFunction, finished.\n", - "04/01/2025 10:53:06 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,calculate_qe5,calculate_qe6,calculate_qe7,calculate_qe8\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:53:10 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:53:10 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe4, type: PyFunction, finished.\n", - "04/01/2025 10:53:11 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe5,calculate_qe6,calculate_qe7,calculate_qe8\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:53:15 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:53:16 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe5, type: PyFunction, finished.\n", - "04/01/2025 10:53:16 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6,calculate_qe7,calculate_qe8\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:53:21 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:53:21 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n", - "04/01/2025 10:53:22 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe7,calculate_qe8\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:53:27 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:53:28 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe7, type: PyFunction, finished.\n", - "04/01/2025 10:53:28 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe8\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:53:34 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:53:34 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PyFunction, finished.\n", - "04/01/2025 10:53:35 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list16,get_list17\n", - "04/01/2025 10:53:36 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_list16, type: PyFunction, finished.\n", - "04/01/2025 10:53:36 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n", - "04/01/2025 10:53:37 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n", - "04/01/2025 10:53:38 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n", - "04/01/2025 10:53:39 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve9, type: PyFunction, finished.\n", - "04/01/2025 10:53:39 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", - "04/01/2025 10:53:41 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|finalize]: Finalize workgraph.\n" - ] - }, - { - "data": { - "image/png": "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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "wg.run()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load Workflow with pyiron_base" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "from pyiron_base import Project" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.pyiron_base import load_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4caef04a260d4db6a145bd9ce8cea6f8", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/17 [00:00\n", - "\n", - "\n", - "\n", - "\n", - "create_function_job_8efde306e01476f31dc88ed9f939e365\n", - "\n", - "create_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07b4d0>\n", - "\n", - "\n", - "\n", - "volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n", - "\n", - "volume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07ae90>\n", - "\n", - "\n", - "\n", - "volume_lst_0a067e4e854f258474f2cc9c270ffcf6->create_function_job_8efde306e01476f31dc88ed9f939e365\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "0_955c8ec5df91e1384fd3c2479d5b4432\n", - "\n", - "0=<pyiron_base.project.delayed.DelayedObject object at 0x7f34341fba10>\n", - "\n", - "\n", - "\n", - "0_955c8ec5df91e1384fd3c2479d5b4432->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_2e9abb255f1a31f7d29b4451ad422add\n", - "\n", - "working_directory=strain_0\n", - "\n", - "\n", - "\n", - "working_directory_2e9abb255f1a31f7d29b4451ad422add->0_955c8ec5df91e1384fd3c2479d5b4432\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "0_e0b6aa6ef68a4efb034264a4785e3ac9\n", - "\n", - "0=<pyiron_base.project.delayed.DelayedObject object at 0x7f342ef00450>\n", - "\n", - "\n", - "\n", - "working_directory_2e9abb255f1a31f7d29b4451ad422add->0_e0b6aa6ef68a4efb034264a4785e3ac9\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n", - "\n", - "energy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f079d50>\n", - "\n", - "\n", - "\n", - "0_e0b6aa6ef68a4efb034264a4785e3ac9->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_36e198dfa349bc60853925c9e11af2db\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16dcd0>\n", - "\n", - "\n", - "\n", - "input_dict_36e198dfa349bc60853925c9e11af2db->0_955c8ec5df91e1384fd3c2479d5b4432\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_36e198dfa349bc60853925c9e11af2db->0_e0b6aa6ef68a4efb034264a4785e3ac9\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_1c51bcd538be036a6d4392d0103016bb\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16c050>\n", - "\n", - "\n", - "\n", - "structure_1c51bcd538be036a6d4392d0103016bb->input_dict_36e198dfa349bc60853925c9e11af2db\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_c113e8251b29845018e428419a1d2698\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f0ebc90>\n", - "\n", - "\n", - "\n", - "structure_c113e8251b29845018e428419a1d2698->structure_1c51bcd538be036a6d4392d0103016bb\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_ed6f3c962abe8050a51f414adbd0ff7a\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342d318d50>\n", - "\n", - "\n", - "\n", - "structure_c113e8251b29845018e428419a1d2698->structure_ed6f3c962abe8050a51f414adbd0ff7a\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_edcc7169afc8a5c42e4e69d7b96654fa\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f0e8290>\n", - "\n", - "\n", - "\n", - "structure_c113e8251b29845018e428419a1d2698->structure_edcc7169afc8a5c42e4e69d7b96654fa\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_2fca7fbe3b1c006f5217c598d1950e6f\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f0ea310>\n", - "\n", - "\n", - "\n", - "structure_c113e8251b29845018e428419a1d2698->structure_2fca7fbe3b1c006f5217c598d1950e6f\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_adc90bb48c6eddf6eb0a8e6fca83ecd3\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f0ebd50>\n", - "\n", - "\n", - "\n", - "structure_c113e8251b29845018e428419a1d2698->structure_adc90bb48c6eddf6eb0a8e6fca83ecd3\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_8c2fc93e386760501cc2bc5fd279936b\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16c150>\n", - "\n", - "\n", - "\n", - "structure_ed6f3c962abe8050a51f414adbd0ff7a->input_dict_8c2fc93e386760501cc2bc5fd279936b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_b10ce6f7b36928314fdebf405fbd3096\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16c990>\n", - "\n", - "\n", - "\n", - "structure_edcc7169afc8a5c42e4e69d7b96654fa->input_dict_b10ce6f7b36928314fdebf405fbd3096\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_cd4c438e70833af210ca2f2cb6cc3433\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16e4d0>\n", - "\n", - "\n", - "\n", - "structure_2fca7fbe3b1c006f5217c598d1950e6f->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16d490>\n", - "\n", - "\n", - "\n", - "structure_adc90bb48c6eddf6eb0a8e6fca83ecd3->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_a17ade9a563d8dcadb655fb2e1c743a7\n", - "\n", - "working_directory=mini\n", - "\n", - "\n", - "\n", - "working_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_c113e8251b29845018e428419a1d2698\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n", - "\n", - "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342eb51350>\n", - "\n", - "\n", - "\n", - "input_dict_41dfbc5759c1782c1aadb6df0b0ee06b->structure_c113e8251b29845018e428419a1d2698\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "structure_f4511b90f1d10b2338ab6a9d2263a4f7\n", - "\n", - "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342ee1e250>\n", - "\n", - "\n", - "\n", - "structure_f4511b90f1d10b2338ab6a9d2263a4f7->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "element_467734216d9bd2497ffd28d5cd6daba0\n", - "\n", - "element=Al\n", - "\n", - "\n", - "\n", - "element_467734216d9bd2497ffd28d5cd6daba0->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "a_aea0574e321c6f75f923c059730e9537\n", - "\n", - "a=4.05\n", - "\n", - "\n", - "\n", - "a_aea0574e321c6f75f923c059730e9537->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cubic_bad787c53fa02a5559fe570238fdb23a\n", - "\n", - "cubic=True\n", - "\n", - "\n", - "\n", - "cubic_bad787c53fa02a5559fe570238fdb23a->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10\n", - "\n", - "pseudopotentials={'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_36e198dfa349bc60853925c9e11af2db\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_8c2fc93e386760501cc2bc5fd279936b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_b10ce6f7b36928314fdebf405fbd3096\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1_09bcd65217c9d6874322ae0074b75a51\n", - "\n", - "1=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07b610>\n", - "\n", - "\n", - "\n", - "input_dict_8c2fc93e386760501cc2bc5fd279936b->1_09bcd65217c9d6874322ae0074b75a51\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1_91529aefacc5a546fd65f5387f2b09f0\n", - "\n", - "1=<pyiron_base.project.delayed.DelayedObject object at 0x7f342ef029d0>\n", - "\n", - "\n", - "\n", - "input_dict_8c2fc93e386760501cc2bc5fd279936b->1_91529aefacc5a546fd65f5387f2b09f0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2_07f0a3b279b1055343ff43468be23188\n", - "\n", - "2=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07ae50>\n", - "\n", - "\n", - "\n", - "input_dict_b10ce6f7b36928314fdebf405fbd3096->2_07f0a3b279b1055343ff43468be23188\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2_c2670b3885c2bf5fcb820fa32aa73b7f\n", - "\n", - "2=<pyiron_base.project.delayed.DelayedObject object at 0x7f34341fae50>\n", - "\n", - "\n", - "\n", - "input_dict_b10ce6f7b36928314fdebf405fbd3096->2_c2670b3885c2bf5fcb820fa32aa73b7f\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3_21682a7b33b71609683ab10fd691fc4e\n", - "\n", - "3=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07be50>\n", - "\n", - "\n", - "\n", - "input_dict_cd4c438e70833af210ca2f2cb6cc3433->3_21682a7b33b71609683ab10fd691fc4e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3_0e7920e7e7612861a802811dee582e3e\n", - "\n", - "3=<pyiron_base.project.delayed.DelayedObject object at 0x7f34341fbb50>\n", - "\n", - "\n", - "\n", - "input_dict_cd4c438e70833af210ca2f2cb6cc3433->3_0e7920e7e7612861a802811dee582e3e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4_6bdcb72224c727e1bd635884dfd1b61d\n", - "\n", - "4=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f078590>\n", - "\n", - "\n", - "\n", - "input_dict_8ef0642f5bd8fbe8221152b1e1563ebb->4_6bdcb72224c727e1bd635884dfd1b61d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4_b390133ee37d66c42b3588de6fcc919e\n", - "\n", - "4=<pyiron_base.project.delayed.DelayedObject object at 0x7f34341f8f10>\n", - "\n", - "\n", - "\n", - "input_dict_8ef0642f5bd8fbe8221152b1e1563ebb->4_b390133ee37d66c42b3588de6fcc919e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa\n", - "\n", - "kpts=[3, 3, 3]\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_36e198dfa349bc60853925c9e11af2db\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_8c2fc93e386760501cc2bc5fd279936b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b10ce6f7b36928314fdebf405fbd3096\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_77b75a01e65d83962d14fa8a882d6c34\n", - "\n", - "calculation=vc-relax\n", - "\n", - "\n", - "\n", - "calculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9\n", - "\n", - "smearing=0.02\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_36e198dfa349bc60853925c9e11af2db\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_8c2fc93e386760501cc2bc5fd279936b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b10ce6f7b36928314fdebf405fbd3096\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_17d5bcbc7579ab5e0f98577d05347b86\n", - "\n", - "strain_lst=[0.9, 0.9500000000000001, 1.0, 1.05, 1.1]\n", - "\n", - "\n", - "\n", - "strain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_1c51bcd538be036a6d4392d0103016bb\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_ed6f3c962abe8050a51f414adbd0ff7a\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_edcc7169afc8a5c42e4e69d7b96654fa\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_2fca7fbe3b1c006f5217c598d1950e6f\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "strain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_adc90bb48c6eddf6eb0a8e6fca83ecd3\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83\n", - "\n", - "calculation=scf\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_36e198dfa349bc60853925c9e11af2db\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_8c2fc93e386760501cc2bc5fd279936b\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b10ce6f7b36928314fdebf405fbd3096\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1_09bcd65217c9d6874322ae0074b75a51->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_5423d2cc67129a6d0383af6f347df5bd\n", - "\n", - "working_directory=strain_1\n", - "\n", - "\n", - "\n", - "working_directory_5423d2cc67129a6d0383af6f347df5bd->1_09bcd65217c9d6874322ae0074b75a51\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_5423d2cc67129a6d0383af6f347df5bd->1_91529aefacc5a546fd65f5387f2b09f0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "1_91529aefacc5a546fd65f5387f2b09f0->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2_07f0a3b279b1055343ff43468be23188->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_cc646e064ddfc4b2811aba3d86d27992\n", - "\n", - "working_directory=strain_2\n", - "\n", - "\n", - "\n", - "working_directory_cc646e064ddfc4b2811aba3d86d27992->2_07f0a3b279b1055343ff43468be23188\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_cc646e064ddfc4b2811aba3d86d27992->2_c2670b3885c2bf5fcb820fa32aa73b7f\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2_c2670b3885c2bf5fcb820fa32aa73b7f->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3_21682a7b33b71609683ab10fd691fc4e->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_e27768d53df6cd8dc245c52054ecf31f\n", - "\n", - "working_directory=strain_3\n", - "\n", - "\n", - "\n", - "working_directory_e27768d53df6cd8dc245c52054ecf31f->3_21682a7b33b71609683ab10fd691fc4e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_e27768d53df6cd8dc245c52054ecf31f->3_0e7920e7e7612861a802811dee582e3e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3_0e7920e7e7612861a802811dee582e3e->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4_6bdcb72224c727e1bd635884dfd1b61d->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_72bba39b22d2b7ce154d37c7e8c658b7\n", - "\n", - "working_directory=strain_4\n", - "\n", - "\n", - "\n", - "working_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_6bdcb72224c727e1bd635884dfd1b61d\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "working_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_b390133ee37d66c42b3588de6fcc919e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4_b390133ee37d66c42b3588de6fcc919e->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "energy_lst_83f0ff69cd84017d2fc83be62d3dc606->create_function_job_8efde306e01476f31dc88ed9f939e365\n", - "\n", - "\n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "delayed_object = load_workflow_json(project=pr, file_name=workflow_json_filename)\n", - "delayed_object.draw()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 4\n", - "The job get_dict_bbed7e528d369f5fa02591748be3166d was saved and received the ID: 5\n", - "The job calculate_qe_a8254d13768b11f13ee9368124819d22 was saved and received the ID: 6\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": [ - "The job generate_structures_7c00a7a36fdf7a83905a933d6458c9f6 was saved and received the ID: 7\n", - "The job get_dict_9fea1887c87374cda848be8c394400b6 was saved and received the ID: 8\n", - "The job calculate_qe_a2a0f9b449a97089f66fd4697c1184d4 was saved and received the ID: 9\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": [ - "The job get_dict_736160eef13d04e2065cf2c38c62bf47 was saved and received the ID: 10\n", - "The job calculate_qe_42a1041b6acc70e91f55e4a2a877ec0b was saved and received the ID: 11\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": [ - "The job get_dict_618fccf949c159d8a1573c4cda125aae was saved and received the ID: 12\n", - "The job calculate_qe_d5f2ff242c26f0b8badef6df9a0504a5 was saved and received the ID: 13\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": [ - "The job get_dict_61f81e04658f67188ad4502e007fe475 was saved and received the ID: 14\n", - "The job calculate_qe_2f09fb4c3a6570dbdc141588f072fec6 was saved and received the ID: 15\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": [ - "The job get_dict_0bf0210bb59731567645c21e9c07d901 was saved and received the ID: 16\n", - "The job calculate_qe_8e0081288044bb59e2eb975aab60c98c was saved and received the ID: 17\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": [ - "The job get_list_56b7ebcd322ece2c1200ba8d040fc0bd was saved and received the ID: 18\n", - "The job get_list_8d6e79fedf35b08653113905df993b7b was saved and received the ID: 19\n", - "The job plot_energy_volume_curve_fa6e68740c464fa9316d532209ff492f was saved and received the ID: 20\n" - ] - }, - { - "data": { - "image/png": "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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoSQHBwMM8880xVZJQ6zGKxMOHMMgIfRcdTXGIzN5CISB2xZEcSK/em4uJkYc6YTrg41b3pt7MqNbKUnJyMp6dnha/x8PDg+eefr1Qokd8b1imYWT/EkJSZz4o9qdzcsbHZkUREarW0rHye+3YPAI/e2IrIxr4mJzJXpWpicXExWVlZ5zyys7MpLNR5JVK13F2cGNsjFIB5UTrRW0SkOhmGwdNf7yLzdBHtm/jq9AcqWZb8/f0JCAg45+Hv74+HhwfNmjXj+eefx2bTlIlUjbE9m+FstbDlyCl2Hcs0O46ISK319bZEVu9Lw8WpdPHJujz9dlaljsD8+fMJDg7m6aef5ptvvuGbb77h6aefpkmTJvznP//hwQcf5O2332bWrFlVnVfqqEa+7mXTb/O0jICISLVIzcrnhSWl02+P9W9NRFDdnn47q1LnLC1YsIA5c+YwZsyYsm3Dhg2jQ4cOvPvuu/z444+Ehoby6quv8vTTT1dZWKnbJvQJ59vtSSzdkcz0wZEE+riZHUlEpNYwDIOnv9pFVn4xHZv68dC1zc2OVGNUamRpw4YNdO7c+ZztnTt3Jjo6GoC+ffuSkJBwZelEfueqEH86h/pTWGJj4cYjZscREalVFv+WyI8xabg6WZk9uhPOmn4rU6kjERISwvvvv3/O9vfff5+QkNL7eZ08eZKAgIArSyfyB+N7hwHw8a8JFBbrnDgRkaqQkpnPi9+dmX67qRWtG/mYnKhmqdQ03OzZsxk9ejQ//PADV199NQBbtmwhJiaGL7/8EoDNmzdz++23V11SEWBIh8a89v0+UrMKWLYriZGdm5odSUTEoRmGwfSvdpKdX0ynEH8evEbTb39UqZGl4cOHExsby5AhQ0hPTyc9PZ3BgwcTExPD0KFDAfjTn/7E3/72tyoNK+LiZGVcz2YAzIuKxzAMkxOJiDi2RVuPsTb2eOn0220dNf12Hpc9slRUVMSgQYOYO3cuM2fOrI5MIhW6s3sob685yM5jmfyWcIquzeqZHUlExCElZ57m5e/2AvDEgNa00vTbeV12fXRxcWHnzp3VkUXkktT3duOWTsFA6eiSiIhcPsMwmLp4F9kFxVwV4s8Dmn67oEqNtd19993nPcFbxF4m9AkH4IfdKSRnnjY5jYiI4/liy1F+2X8cV+fSq9+crBazI9VYlTrBu7i4mA8++IDVq1fTtWtXvLy8yj2vc5WkurUN9qVHeD02Hk7no+gjPDUowuxIIiIOIzHjNK8s3QfAkwNa07Kht8mJarZKlaXdu3fTpUsXAPbv31/uOYtFzVTsY0KfcDYeTufTTQn8pV8r3F2czI4kIlLjGYbBtMU7yS4opkuoPxP7avrtYipVltauXVvVOUQu201tG9HE34PEjNN8uz2R268ONTuSiEiN99nmo6w7cAI3ZytvavrtklzR9YEHDx5kxYoVnD5des6ILuMWe3KyWri3t5YREBG5VMdO5fHK0tKr36YMbEOLQE2/XYpKlaWTJ0/Sr18/WrduzZAhQ0hOTgZg4sSJTJ48uUoDilTk9m6heLg4EZOSTfShk2bHERGpsUqn33aRW1hCt2YBZRfKyMVVqiw9/vjjuLi4kJCQgKenZ9n222+/neXLl1dZOJGL8fN0YVTXJoCWERARqcgnmxJYf/AE7i6afrtclSpLK1eu5PXXX6dp0/K3mmjVqhVHjugGp2JfZ+8Xt3pfKkfT88wNIyJSAx1Nz+O1ZaVXv00ZGEF4A6+L7CG/V6mylJubW25E6az09HTc3NyuOJTI5WjZ0IdrWjXAMGDBhniz44iI1Cg2m8HUxTvJLSyhe1g9Jpz5B6ZcukqVpWuuuYYPP/yw7GuLxYLNZuONN97ghhtuqLJwIpfqvjNz759vOUpuQbHJaUREao6FmxLYEHcSdxcrb9zWEaum3y5bpZYOeOONN+jXrx9btmyhsLCQp556ij179pCenk5UVFRVZxS5qOtaBxLewIvDJ3JZ/Nsx7ukVZnYkERHTHU3PY+b3pdNvUwdFEKbpt0qp1MhS+/bt2b9/P3379uWWW24hNzeXW2+9lW3bttGiRYuqzihyUVarhXt7lS4jMH9DPDablhEQkbrNZjOY8uUO8gpL6B5ej3v1j8hKq9TIEoCfnx/PPPNMVWYRuSK3dQthzsr9HDqeyy8HjnN9m4ZmRxIRMc1Hvx7h10PpeLg4Mfu2Tpp+uwKVLksZGRls2rSJtLQ0bDZbuefuueeeKw4mcrm83ZwZ3S2ED6IOMy8qXmVJROqsIydzmfVDDADTh0QQWv/ci7Lk0lWqLH333XeMHTuWnJwcfH19y90PzmKxqCyJae7t3Yx5Gw7z8/7jHEzL0c0hRaTOKZ1+28npohJ6Nq/H3T2amR3J4VXqnKXJkydz3333kZOTQ0ZGBqdOnSp7pKenV3VGkUvWrL4X/SJKR5Q+jI43N4yIiAkWRMez6XA6nq5OvKnptypRqbKUmJjIX/7yl/OutSRitrNL+H+59RiZp4tMTiMiYj/xJ3J5ffnZ6bdIQurp73RVqFRZGjhwIFu2bKnqLCJVoneL+rRp5ENeYQmLthw1O46IiF2cvfotv8hG7xb1Gds91OxItUalzlm6+eabmTJlCnv37qVDhw64uLiUe3748OFVEk6kMiwWC+P7hDH9q13M3xDPhD7hugeSiNR68zbEszn+FF6uTrw+SotPViWLYRiXvSCN1XrhASmLxUJJSckVhXI0WVlZ+Pn5kZmZia+vr9lxBDhdWEKvWT+SkVfEe+O6MqBdkNmRRESqzaHjOQx5ex35RTZeHdmesTqp+5Jc6t/vSk3D2Wy2Cz7qWlGSmsnD1Yk7ri4dgp4XFW9uGBGRalRy5uq3/CIbfVs24C5Nv1W5yypLQ4YMITMzs+zrWbNmkZGRUfb1yZMnadu2bZWFE7kS9/RqhpPVQvShk+xLzjI7johItZgXdZitR07h7ebMrFEdyi3nI1XjssrSihUrKCgoKPv6tddeK7dUQHFxMbGxsVWXTuQKBPt7MOjM9Nt8jS6JSC0UdzyHN1eU/t195uZImgbo6rfqcFll6Y+nN1XidCcRuxrfJwyAb7Ynkp5baG4YEZEqVGIzmLJoBwXFNq5p1YA7rg4xO1KtValzlkQcRbdmAbRv4ktBsY1PNyWYHUdEpMq8v/4QvyVk4OPmzOujOmr6rRpdVlmyWCzn/J+h/3OkJrNYLEzoXbpI5UfRRygqsV1kDxGRmu9gWjazV+4H4NmhkQT7e5icqHa7rHWWDMNg/PjxuLm5AZCfn8/DDz+Ml5cXQLnzmURqiqGdGjPzh32kZOWzfHcKwzoFmx1JRKTSSmwGTy7aSWGxjetaBzKmm6bfqttllaV777233Nd33333Oa/RTXSlpnFzduKuHs14+8cDzN8Qr7IkIg7tv+sOsf1oBj7uuvrNXi6rLM2bN6+6cohUq7t7hvKfnw6y9cgpdh7LoGNTf7MjiYhctgOp2fztzPTbjKFtaeyn6Td70AneUic09HFnaMfSESUtUikijqi4xMaTi3ZQWGLjhjaBjO7a1OxIdYbKktQZ43uHAbB0ZxJpWfnmhhERuUzv/nKIHccy8XF3ZuatuvrNnhymLKWnpzN27Fh8fX3x9/dn4sSJ5OTkVLhPXFwcI0eOJDAwEF9fX8aMGUNqauoVv684pk4h/nQJ9aeoxGDhRi0jICKOIzYlm3+sPgDAC8PaEeTnbnKiusVhytLYsWPZs2cPq1atYunSpfzyyy88+OCDF3x9bm4uAwYMwGKxsGbNGqKioigsLGTYsGHYbLZKv684tgl9SpcRWLjxCAXFuo+hiNR8Rb+bfusX0ZBbuzQxO1KdYzEcYBnuffv20bZtWzZv3ky3bt0AWL58OUOGDOHYsWMEB597ddPKlSsZPHgwp06dKruTcGZmJgEBAaxcuZL+/ftX6n3P51LvWizmKyqxcc3ra0nJymfO6E6M0py/iNRw/1xzgNkr9+Pr7syqJ66jka9GlarKpf79doiRpejoaPz9/csKDUD//v2xWq1s3LjxvPsUFBRgsVjK1oQCcHd3x2q1sn79+kq/rzg2Fycr43o1A2DehsO6ZY+I1GgxKVn848fS6bcXb2mnomQShyhLKSkpNGzYsNw2Z2dn6tWrR0pKynn36dmzJ15eXkydOpW8vDxyc3N58sknKSkpITk5udLvC6VFLCsrq9xDHMed3UNxc7ayOzGLrUdOmR1HROS8ikpsTP5iB0UlBv0jGzHiKk2/mcXUsjRt2rSyW6hc6BETE1Op9w4MDGTRokV89913eHt74+fnR0ZGBl26dMFqvbKPPXPmTPz8/MoeISFaPdWR1PNyLfulo2UERKSm+s9PcexJysLf04XXbm2vq99MdFmLUla1yZMnM378+Apf07x5c4KCgkhLSyu3vbi4mPT0dIKCgi6474ABA4iLi+PEiRM4Ozvj7+9PUFAQzZs3B6j0+06fPp0nnnii7OusrCwVJgczoW8Yn285yvI9KSRlnNZ9lUSkRtmblMU7a85Mvw1vR0MfTb+ZydSyFBgYSGBg4EVf16tXLzIyMti6dStdu3YFYM2aNdhsNnr06HHR/Rs0aFC2T1paGsOHD7+i93Vzcyt3LpQ4noggX3o1r0/0oZN8GH2EaYMjzI4kIgL8/9VvRSUGA9o2Yrhu0WQ6hzhnKTIykkGDBvHAAw+wadMmoqKimDRpEnfccUfZFWuJiYlERESwadOmsv3mzZvHr7/+SlxcHB9//DGjR4/m8ccfp02bNpf8vlJ7TegTBsBnmxM4XahlBESkZvjX2oPsTc4iwNOFV0fq3m81gUOUJYCFCxcSERFBv379GDJkCH379uW9994re76oqIjY2Fjy8vLKtsXGxjJixAgiIyN56aWXeOaZZ5g9e/Zlva/UXv0iGxFSz4OMvCK+2Z5odhwREfYkZfLPNQcBePGW9gT6aBajJnCIdZZqOq2z5Lj+t+4QryzbR+tG3qx47Fr9C05ETFNYbGP4P9cTk5LNoHZB/OfuLvqdVM1q1TpLItVldLcQPF2d2J+aw4a4k2bHEZE67J9rDxKTkk09L1deGamr32oSlSWp0/w8XLjtzCreWkZARMyyOzGTf60tnX576ZZ2NPDW9FtNorIkdd69vcMA+DEmlSMnc80NIyJ1TmFx6dVvJTaDmzs0ZmhHXWBU06gsSZ3XItCb61oHYhiwYMMRs+OISB3zzpoDxKRkU9/LlZduaWd2HDkPlSUR/n8ZgUVbjpJTUGxuGBGpM3Yey+DfP8UB8PKI9tTX9FuNpLIkAlzbKpDmgV5kFxSzeOsxs+OISB1QUFxSNv02tGNjhnRobHYkuQCVJRHAarUw/sy5S/M3xGOzaUUNEale/1h9gP2pOTTwduWlW9qbHUcqoLIkcsaoLk3xcXfm8Ilcft5/3Ow4IlKL7TiawdyfS6ffXhnRgXperiYnkoqoLImc4eXmzO3dSm+I/EHUYZPTiEhtlV9UOv1mM2B4p2AGtb/wjdulZlBZEvmde3uHYbHAugMnOJiWbXYcEamF3lp9gANpOTTwduPF4br6zRGoLIn8Tkg9T/pHNgJKz10SEalK2xJO8d4vpdNvr41sT4Cm3xyCypLIH5xdRmDx1kQy84rMDSMitcbvp99GXBXMgHaafnMUKksif9CreX0ignw4XVTC51sSzI4jIrXE31ftJ+54LoE+bryg6TeHorIk8gcWi6VsdGnBhiOUaBkBEblCW4+c4r/rDgEwc2QH/D01/eZIVJZEzuOWq5oQ4OlCYsZpVu1NNTuOiDiw/KISppyZfru1cxP6t21kdiS5TCpLIufh7uLEnd1DAZinZQRE5ArMWRnLoRO5NPRx4/lhmn5zRCpLIhcwrlcznKwWNh5OZ09SptlxRMQBbT2Szv/Wl/6Da9aoDvh5upicSCpDZUnkAhr7eTD4zGJxC7SMgIhcptOFJTy5aCeGUXqHgBsjNP3mqFSWRCpw9kTvb7YncTKnwNwwIuJQZq+M5fCJXBr5uvHcsLZmx5EroLIkUoEuoQF0bOpHYbGNTzdpGQERuTSbDqeX3TZp1qiO+Hlo+s2RqSyJVOD3ywh89OsRikps5gYSkRrvdGEJT325A8OAMd2ackObhmZHkiuksiRyETd3CCbQx43UrAJ+2J1idhwRqeHeWBFD/Mk8Gvu58+xQTb/VBipLIhfh6mxlbA8tIyAiF7fx0EnmRcUDpdNvvu6afqsNVJZELsHYHs1wdbKyLSGD7UczzI4jIjVQXmExU77cCcAdV4dwXetAkxNJVVFZErkEgT5uDO3UGID5Gl0SkfN4Y3ksCel5BPu588zNkWbHkSqksiRyiSb0Dgdg2a5k0rLyTU4jIjVJdNxJ5p9Zj+312zrio+m3WkVlSeQSdWjqR7dmARSVGHz86xGz44hIDZFbUMxTi3cAcGf3UK5ppem32kZlSeQyTOhTOrq0cGMC+UUlJqcRkZpg1g8xHE0/TRN/D54eEmF2HKkGKksil2Fgu0YE+7lzMreQpTuTzY4jIibbcPAEH50ZaX59lKbfaiuVJZHL4OxkZVyvMKB0GQHDMMwNJCKmySko5qnFpVe/je0RSt9WDUxOJNVFZUnkMt1xdQjuLlb2JGWxOf6U2XFExCQzv9/HsVOnaRrgwfQhuvqtNlNZErlMAV6ujOzcBNAilSJ11foDJ1i4sfR+kW/c1hFvN2eTE0l1UlkSqYTxZ5YRWLEnhcSM0yanERF7ys4vYuqZ6bdxPZvRu4Wm32o7lSWRSmgT5EOflvWxGfBhdLzZcUTEjl77PobEjNOE1PNg2mBd/VYXqCyJVNLZ0aXPNh0lr7DY5DQiYg+/7D/Op5vOTL+N6oSXpt/qBJUlkUq6MaIhofU8yTxdxNfbEs2OIyLVLCu/iGlnpt/u7dWMXi3qm5xI7EVlSaSSnKwW7u0dBsD8qHgtIyBSy722bB9JmfmE1vNkqqbf6hSVJZErMLpbU7xcnTiQlkPUwZNmxxGRavJTbBqfbT4KwJu3dcTTVdNvdYnKksgV8HV34bauTQEtIyBSW2XlFzH9q10ATOgTRo/mmn6ra1SWRK7Q2am4NbFpxJ/INTeMiFS5V5buJTkzn7D6njw1UNNvdZHKksgVah7ozQ1tAjEMWKBlBERqlbUxaXyx5RgWC7w5uhMerk5mRxITqCyJVIEJfUqXEVi05RjZ+UUmpxGRqpB5uohpX5Ve/XZfn3CuDqtnciIxi8qSSBW4plUDWgR6kVNQzJdbj5kdR0SqwMtL95KaVUB4Ay+eHNDG7DhiIpUlkSpgsVgYf2Z0acGGeGw2LSMg4sjWxKTy5dbS6bfZoztq+q2OU1kSqSKjujTB192Z+JN5/LQ/zew4IlJJmXlFTFtcevXb/X3D6dpM0291ncqSSBXxdHXmju6hAMyLijc3jIhU2ovf7SEtu4DmgV5M1vSboLIkUqXG9WyG1QLrDpzgQGq22XFE5DKt3pvKV9sSsVpg9uhOuLto+k1UlkSqVEg9T25q2wiAeRvizQ0jIpclI6+Q6V+XTr89cE1zuoQGmJxIagqVJZEqdnYZga9+O0ZmnpYREHEULyzZw/HsAloEevH4Ta3NjiM1iMqSSBXrEV6PyMa+5BfZ+GxzgtlxROQSrNiTwjfbkzT9JuelsiRSxSwWCxPO3ALlw+gjFJfYzA0kIhU6lVvIM1/vBuDBa1vQWdNv8gcqSyLVYPhVwdTzciUx4zSr9qaaHUdEKvD8kj2cyCmgVUNvHuvfyuw4UgOpLIlUA3cXJ+46s4zA/9Yf1uiSSA21fHcyS3Yk4WS1aPpNLkhlSaSajOvVDGerha1HTjFqbjQH07SUgEhNkp5byLPflE6/PXRtczqF+JsbSGoslSWRatLI151/3NEZH3dndhzNYMjb63n35zhKdCsUkRrhuW93cyKnkNaNvPmrpt+kAipLItXo5o6NWfX4ddzQJpDCYhszf4jhtrkbiDueY3Y0kTrt+13JLN2ZjJPVwpzRV+HmrOk3uTCVJZFqFuTnzgfjr+aN2zri4+bMtoQMhvxjHf/95ZBGmURMcDKngBlnpt8eub4FHZr6mZxIajqVJRE7sFgsjOkWwsonruW61oEUFNt49ft9jHk3mkMaZRKxq+e+3cPJ3EIignx49EZNv8nFqSyJ2FFjPw/mT7ia10d1wMfNma1HTjH4H+v43zqNMonYw9KdSSzblVx29Zurs/4MysXpp0TEziwWC7dfHcqKx6/lmlYNKCi28cqyfdz+bjSHT+SaHU+k1jqRU8Bz3+4B4M83tKR9E02/yaVRWRIxSbC/Bx/e152Zt3bA282ZLUdOMfgfv/DB+sPYNMokUqUMw2DGN7tJzy0ksrEvk25oaXYkcSAqSyImslgs3Nm9dJSpb8sG5BfZeGnpXu5471fiNcokUmW+25nMD7tTcLZamD26o6bf5LLop0WkBmji78FHE7vz6sj2eLk6sSk+nUH/+IX5URplErlSadn5PPdt6dVvk25sSbtgTb/J5XGYspSens7YsWPx9fXF39+fiRMnkpNT8VVEcXFxjBw5ksDAQHx9fRkzZgypqf9/n674+HgmTpxIeHg4Hh4etGjRgueff57CwsLq/jgi57BYLIzt0Yzlj11L7xb1yS+y8cJ3e7nzv7+ScDLP7HgiDskwDJ79ejcZeUW0bezLnzX9JpXgMGVp7Nix7Nmzh1WrVrF06VJ++eUXHnzwwQu+Pjc3lwEDBmCxWFizZg1RUVEUFhYybNgwbLbS+3TFxMRgs9l499132bNnD3//+9+ZO3cuTz/9tL0+lsg5Qup58vHEHrw8oj2erk5sPJzOwLd+YcGGeI0yiVyG7PwiXlm2j5V7U3FxKr36zcXJYf7sSQ1iMQyjxv/23bdvH23btmXz5s1069YNgOXLlzNkyBCOHTtGcHDwOfusXLmSwYMHc+rUKXx9fQHIzMwkICCAlStX0r9///N+rzfffJP//Oc/HDp06JLzZWVl4efnR2ZmZtn3EqkKR9PzeOrLnUQfOglAz+b1ePO2ToTU8zQ5mUjNVVxi4/MtR/nbyv2czC2dKXhqUBseuV6jSlLepf79doiKHR0djb+/f1lRAujfvz9Wq5WNGzeed5+CggIsFgtubm5l29zd3bFaraxfv/6C3yszM5N69epVXXiRKxBSz5OF9/fg5Vva4eHixK+HSkeZPorWKJPI+aw7cJyb317PM1/v5mRuIc0DvXj/3m786boWZkcTB+YQZSklJYWGDRuW2+bs7Ey9evVISUk57z49e/bEy8uLqVOnkpeXR25uLk8++SQlJSUkJyefd5+DBw/yzjvv8NBDD1WYp6CggKysrHIPkepitVoY1yuMFY9dS4/weuQVljDj2z3c/f5GjqbrXCYRgINpOUyYt4lx728iNjUbPw8Xnh/WlhWPXUu/yEZYLBazI4oDM7UsTZs2DYvFUuEjJiamUu8dGBjIokWL+O677/D29sbPz4+MjAy6dOmC1Xrux05MTGTQoEGMHj2aBx54oML3njlzJn5+fmWPkJCQSmUUuRyh9T359IGevDi8dJRpQ9xJBr31Cx//egQHmE0XqRancgt5/tvdDHzrF9bGHsfZamFCnzB+nnI9E/qE6xwlqRKmnrN0/PhxTp48WeFrmjdvzscff8zkyZM5depU2fbi4mLc3d1ZtGgRI0eOrPA9Tpw4gbOzM/7+/gQFBTF58mSmTJlS9nxSUhLXX389PXv2ZP78+ectU79XUFBAQUFB2ddZWVmEhITonCWxmyMnc5myaCeb4tMB6NuyAbNGdaBpgM5lkrqhsNjGh9HxvP3jAbLyiwHoH9mQ6UMiaRHobXI6cRSXes6SQ53gvWXLFrp27QqUnsA9aNCgC57gfT5r1qyhf//+7Nu3jzZt2gClI0o33HADXbt25eOPP8bJyemy8+kEbzGDzWawIDqe15fHkF9kw9vNmaeHRHJn9xBNOUitZRgGq/amMvOHmLLbA0UE+TBjaFv6tGxgcjpxNLWqLAEMHjyY1NRU5s6dS1FRERMmTKBbt2588sknQGnp6devHx9++CHdu3cHYN68eURGRhIYGEh0dDR//etfGT9+PHPmzCnb5/rrr6dZs2YsWLCgXFEKCgq65GwqS2KmwydyeerLHWyOLx15vaZVA2aN6kgTfw+Tk4lUrb1JWbyybC8b4kpnJBp4u/HkgNaM7haCk1X/QJDLd6l/v53tmOmKLFy4kEmTJtGvXz+sViujRo3i7bffLnu+qKiI2NhY8vL+/4TX2NhYpk+fTnp6OmFhYTzzzDM8/vjjZc+vWrWKgwcPcvDgQZo2bVru+zlIhxQhvIEXnz3Yi/kb4nljeQzrDpxg4N9/4dmbI7n9ao0yieNLy85nzor9fLH1KIYBrs5W7u8bziM3tMTbzWH+jIkDc5iRpZpMI0tSUxw6nsOUL3ey9UjpKNO1rQOZdWsHgjXKJA4ov6iE99cf5t9rD5JbWALA0I6NmTooQmuNSZWoddNwNZnKktQkJTaDeVGHeXNFLAXFNnzcnJkxtC2juzXVKJM4BMMw+G5nMq//EENixmkAOoX489zQSLo20zp4UnVUluxIZUlqorjjOTy5aAfbEjIAuL5NIDNv7UBjP40ySc21LeEULy/dy29nfm4b+7kzdVAEwzsFY9V5SVLFVJbsSGVJaqoSm8H76w8xe+V+Cott+Lg789zQttzWVaNMUrMkZpzmjeUxfLs9CQAPFyf+dH0LHrimOR6ul3+VssilUFmyI5UlqekOpmXz5KKdbD+aAcCNEQ15bWQHgvzczQ0mdV5uQTFzf47jvV8OUVBsw2KBUV2aMmVgGxr56udTqpfKkh2pLIkjKC6x8b/1h/nbqtJRJl93Z54b1o5RXZpolEnszmYz+PK3Y8xeEUtadukiv93D6/Hc0La0b+JncjqpK1SW7EhlSRzJgdRsnly0gx3HMgHoF9GQ127toH/Fi91Ex53klWV72ZNUel/N0HqePD0kgoHtglTcxa5UluxIZUkcTXGJjffWHeKtVQcoLCkdZXpheDtGdtYok1Sf+BO5vPb9PlbuTQXAx82ZR/u15N7eYbg567wksT+VJTtSWRJHtT81m8lf7GBXYukoU//IRrx2a3sa+miUSapO5uki3vnxAAui4ykqMbBa4K4eoTzevzX1vd3Mjid1mMqSHaksiSMrLrHx7i+HeGv1fopKDPw8XHhxeDtuuSpYo0xyRYpLbHyyKYG/r9rPqbwiAK5rHcgzN0fSupGPyelEVJbsSmVJaoOYlCyeXLSD3Yml55EMaNuIV0d2INBH//KXy7c2No1Xl+3jYFoOAK0aevPMzZFc36ahyclE/p/Kkh2pLEltUVRiY+5Pcby95gBFJQb+nqWjTMM7aZRJLs3+1GxeWbaPX/YfByDA04UnbmrNnd1DcXaympxOpDyVJTtSWZLaZl9yFpO/2MHe5NJRpkHtgnh5RHuNMskFncwp4O+r9/PppqOU2AxcnCyM7x3GpBtb4efhYnY8kfNSWbIjlSWpjYpKbPx7bRzvrDlAsc0gwNOFl0e0Z2jHYLOjSQ1SUFzCgg3xvLPmINn5xQAMbNeI6YMjCWvgZXI6kYqpLNmRypLUZnuSMnly0U72nRllGtIhiJduaU8DXcVUpxmGwfLdKcz8IYaE9DwA2gX78uzNbenVor7J6UQujcqSHaksSW1XWGzjX2sP8q+1Bym2GdTzcuXlW9pzc8fGZkcTE+w6lsnLy/ay6XA6AA193JgysA23dmmKk252Kw5EZcmOVJakrtidmMmTi3YQk5INwM0dG/PS8HZaK6eOSM3K543lsXy17RiGAW7OVh66tjkPXdcCLzdns+OJXDaVJTtSWZK6pLDYxj/XHOBfP8VRYjOo7+XKKyPaM7iDRplqq9OFJbz3yyHm/hzH6aISAEZcFcxTgyII9vcwOZ1I5aks2ZHKktRFu46VjjLFppaOMg3rFMyLw9tRz8vV5GRSVWw2g293JPLG8liSM/MB6BLqz4yhbekcGmByOpErp7JkRypLUlcVFJfwzo8H+c/PpaNMDbxdeWVEBwa1DzI7mlyhrUfSeWnpPnYczQCgib8H0wZHMLRjY625JbWGypIdqSxJXbfzWAZPLtrB/tTS1ZqHnxllCtAok8M5mp7HrOUxLNuZDICXqxOP3NCSiX3DcXfRzW6ldlFZsiOVJZHSUaZ/rD7A3J/jsBnQwNuN10a2Z0A7jTI5guz8Iv79Uxzvrz9MYbENiwVu7xbCEwNa68bKUmupLNmRypLI/9t+tHSU6ew9wUZcFcwLw9vh76lRppqoxGbwxZajzFkZy4mcQgB6t6jPsze3pW2wfp9J7aayZEcqSyLl5ReV8NbqA7z3S+koU6CPGzNHdqB/20ZmR5PfiTp4gpeX7i1bCiK8gRdPD4mkf2RDnZckdYLKkh2pLImc37aEUzy5aAdxx3MBuLVzE54f1g4/T90rzEyHjufw2vf7WL0vDQBfd2f+2r8143o2w9VZN7uVukNlyY5UlkQuLL+ohL+v2s9/1x3CZkAjXzdm3tqBGyM0ymRvGXmF/OPHA3wUfYRim4GT1cK4ns34a79WOhlf6iSVJTtSWRK5uK1HTjFl0Q4OnSgdZRrVpSnPDWurO9LbQVGJjY9/PcJbqw+QeboIgBsjGvL0kEhaNvQ2OZ2IeVSW7EhlSeTS5BeVMGdlLP9bfxjjzCjTrFs7ckNEQ7Oj1UqGYfDjvjRe+35fWUlt08iHZ4dGck2rQJPTiZhPZcmOVJZELs+W+HSmfLmTw2f+gI/u2pRnh2qUqSrtS87ilWV7iTp4EoAG3q48cVMbxnRrirOTzksSAZUlu1JZErl8pwtLmL0ylg+iSkeZgnzdmTWqA9e30SjTlTieXcDfVsXy+eaj2AxwdbJyX99w/nxDC3zcVUZFfk9lyY5UlkQqb3N8OlMW7SD+ZB5QuhDiM0Mj8dUf9suSX1TCB1GH+ffaOHIKigG4uUNjpg2OIKSep8npRGomlSU7UlkSuTKnC0t4Y0UM8zfEYxjQ2M+d10d15NrWOq/mYgzDYNmuZGb9EMOxU6cB6NjUjxlD23J1WD2T04nUbCpLdqSyJFI1Nh1OZ8qXOzhyZpTpzu4hPD0kUtNHF7DjaAYvL93LliOngNKpzKcGtWHEVU2wWrWopMjFqCzZkcqSSNXJKyzmjeWxzN8QD5Te7X7WqA66eut3kjNP88byWL7elgiAh4sTD13XnAevbY6nq7PJ6UQch8qSHaksiVS9Xw+d5Kkvd5KQXjrKdFePUJ4eEom3W90tA3mFxcz9+RDv/RJHfpENKF2vasrANgT56Wa3IpdLZcmOVJZEqkduQTGvL4/hw+gjQOko0xu3daRPywYmJ7Mvm81g8W/HeHNFLGnZBQB0D6vHjKFt6dDUz+R0Io5LZcmOVJZEqteGuBM89eXOshOY7+4ZyvTBkXjVgVGmjYdO8vKyvexOzAIgpJ4HTw+OZFD7IN3sVuQKqSzZkcqSSPXLLShm5g/7+PjXBACaBpSOMvVuUTtHmY6czGXm9zEs35MCgI+bM5NubMn4PmG4OTuZnE6kdlBZsiOVJRH72XDwBFO+3EliRuko0z29mjF1UEStGWXKyi/in2sOMj8qnsISG1YL3Nk9lMdvak0Dbzez44nUKipLdqSyJGJfOQXFvPb9Pj7ZWDrKFFLPgzdv60TP5vVNTlZ5xSU2Pt18lL+v2k96biEA17RqwLM3t6VNkI/J6URqJ5UlO1JZEjHH+gMnmLr4/0eZ7u3VjKmDIxzu8vmf9x/n1WV72Z+aA0CLQC+evbkt17cJ1HlJItVIZcmOVJZEzJOdX8Rr38fw6abSUabQep68eVtHejjAKNPBtGxeWbaPn2KPA+Dv6cLj/VtzV49QXHSzW5Fqp7JkRypLIub7Zf9xpi3eSVJmPhYL3NsrjKcGtamRo0zpuYW8tXo/CzcmUGIzcHGycE+vMP5yYyv8PLVauYi9qCzZkcqSSM2QlV/Ea8v28dnmowCE1ffkzdGdasw90gqLbXwYHc8/fjxAdn7pzW5vatuIp4dEEt7Ay+R0InWPypIdqSyJ1Cw/xaYx/atdJJ8ZZZrQO5wpA9vg4WrOJfeGYbBybyozv99H/Jn73kU29mXG0Mhau/SBiCNQWbIjlSWRmicrv4hXlu7liy3HAAhv4MXs0R3p2sy+o0x7kjJ5eelefj2UDkADbzemDGzNbV1DcNLNbkVMpbJkRypLIjXX2pg0pn21k9SsAiwWmNgnnCcHtsHdpXpHmdKy8pm9MpZFW49hGODmbOWBa5rz8PUt6vT97URqEpUlO1JZEqnZMk8X8fLSvXy5tXSUqXkDL94c3YmuzQKq/HvlF5Xwv3WH+PdPceQVlgAwvFMwUwdH0MTfo8q/n4hUnsqSHaksiTiGNTGpTFu8i7TsAqwWuP+a5jxxU+sqGWUyDIMlO5J4/YcYkjLzAegc6s+MoW3pElr1pUxErpzKkh2pLIk4jsy8Il5cuoevfksESheAfHN0pysqNFuPnOLlpXvZfjQDgGA/d6YOjmB4p2AtKilSg6ks2ZHKkojjWb03lelf7+L4mVGmB65tzuP9L2+U6dipPF5fHst3O5IA8HR14pHrW3D/Nc2r/ZwoEblyKkt2pLIk4pgy8gp58bu9fL2tdJSpZUNvZo/uxFUh/hXul1NQzH9+Osj/1h2moNiGxQKjuzblyQFtaOjrbofkIlIVVJbsSGVJxLGt3JPC01/v5kRO6SjTQ9e14LH+rXBzLj86VGIz+HLrUWav3M/x7AIAejavx7M3t6V9Ez8zoovIFVBZsiOVJRHHdyq3kBe+28O320un1FqdGWXqdGaUaUPcCV5Zuo+9yVlA6ergTw+J5Ka2jXRekoiDUlmyI5Ulkdpj+e4Unv1mFydyCnGyWri/bziHTuSyam8qAL7uzvylXyvu6RWGq7NudiviyFSW7EhlSaR2Sc8t5Pkle8pO3AZwslq4u0cof+3fmnperiamE5Gqcql/v7WMrIjIH9TzcuWdOztzc4cgXvs+htaNvJk2OIKWDX3MjiYiJlBZEhG5gEHtGzOofWOzY4iIyTThLiIiIlIBlSURERGRCqgsiYiIiFRAZUlERESkAipLIiIiIhVQWRIRERGpgMOUpfT0dMaOHYuvry/+/v5MnDiRnJycCveJi4tj5MiRBAYG4uvry5gxY0hNTT3vawsKCrjqqquwWCxs3769Gj6BiIiIOCKHKUtjx45lz549rFq1iqVLl/LLL7/w4IMPXvD1ubm5DBgwAIvFwpo1a4iKiqKwsJBhw4Zhs9nOef1TTz1FcHBwdX4EERERcUAOsSjlvn37WL58OZs3b6Zbt24AvPPOOwwZMoTZs2eft+RERUURHx/Ptm3bypYwX7BgAQEBAaxZs4b+/fuXvfaHH35g5cqVLF68mB9++ME+H0pEREQcgkOMLEVHR+Pv719WlAD69++P1Wpl48aN592noKAAi8WCm5tb2TZ3d3esVivr168v25aamsoDDzzARx99hKenZ/V9CBEREXFIDlGWUlJSaNiwYbltzs7O1KtXj5SUlPPu07NnT7y8vJg6dSp5eXnk5uby5JNPUlJSQnJyMgCGYTB+/HgefvjhckXsYgoKCsjKyir3EBERkdrJ1LI0bdo0LBZLhY+YmJhKvXdgYCCLFi3iu+++w9vbGz8/PzIyMujSpQtWa+nHfuedd8jOzmb69OmX9d4zZ87Ez8+v7BESElKpjCIiIlLzmXrO0uTJkxk/fnyFr2nevDlBQUGkpaWV215cXEx6ejpBQUEX3HfAgAHExcVx4sQJnJ2d8ff3JygoiObNmwOwZs0aoqOjy03VAXTr1o2xY8eyYMGC877v9OnTeeKJJ8q+zsrKUmESERGppUwtS4GBgQQGBl70db169SIjI4OtW7fStWtXoLTo2Gw2evTocdH9GzRoULZPWloaw4cPB+Dtt9/mlVdeKXtdUlISAwcO5PPPP6/wfd3c3M4pWCIiIlI7OcTVcJGRkQwaNIgHHniAuXPnUlRUxKRJk7jjjjvKroRLTEykX79+fPjhh3Tv3h2AefPmERkZSWBgINHR0fz1r3/l8ccfp02bNgCEhoaW+z7e3t4AtGjRgqZNm15yPsMwAHTukoiIiAM5+3f77N/xC3GIsgSwcOFCJk2aRL9+/bBarYwaNYq333677PmioiJiY2PJy8sr2xYbG8v06dNJT08nLCyMZ555hscff7zKs2VnZwNoKk5ERMQBZWdn4+fnd8HnLcbF6pRclM1mIykpCR8fHywWi9lxys6hOnr0aNkaU3WZjkd5Oh7l6XicS8ekPB2P8mrT8TAMg+zsbIKDg8su/jofhxlZqsmsVutlTdvZi6+vr8P/IFclHY/ydDzK0/E4l45JeToe5dWW41HRiNJZDrHOkoiIiIhZVJZEREREKqCyVAu5ubnx/PPPa3mDM3Q8ytPxKE/H41w6JuXpeJRXF4+HTvAWERERqYBGlkREREQqoLIkIiIiUgGVJREREZEKqCw5sMTERO6++27q16+Ph4cHHTp0YMuWLWXPG4bBc889R+PGjfHw8KB///4cOHDAxMTVq6LjUVRUxNSpU+nQoQNeXl4EBwdzzz33kJSUZHLq6nWxn5Hfe/jhh7FYLLz11lv2DWlHl3I89u3bx/Dhw/Hz88PLy4urr76ahIQEkxJXr4sdj5ycHCZNmkTTpk3x8PCgbdu2zJ0718TE1ScsLAyLxXLO489//jMA+fn5/PnPf6Z+/fp4e3szatQoUlNTTU5dfSo6Hunp6Tz66KO0adMGDw8PQkND+ctf/kJmZqbZsauNFqV0UKdOnaJPnz7ccMMN/PDDDwQGBnLgwAECAgLKXvPGG2/w9ttvs2DBAsLDw5kxYwYDBw5k7969uLu7m5i+6l3seOTl5fHbb78xY8YMOnXqxKlTp/jrX//K8OHDL1geHN2l/Iyc9fXXX/Prr7+W3WuxNrqU4xEXF0ffvn2ZOHEiL774Ir6+vuzZs6fW/fcCl3Y8nnjiCdasWcPHH39MWFgYK1eu5JFHHiE4OLjshuS1xebNmykpKSn7evfu3dx0002MHj0agMcff5xly5axaNEi/Pz8mDRpErfeeitRUVFmRa5WFR2PpKQkkpKSmD17Nm3btuXIkSM8/PDDJCUl8eWXX5qYuhoZ4pCmTp1q9O3b94LP22w2IygoyHjzzTfLtmVkZBhubm7Gp59+ao+IdnWx43E+mzZtMgDjyJEj1ZTKXJd6TI4dO2Y0adLE2L17t9GsWTPj73//e/WHM8GlHI/bb7/duPvuu+2UyFyXcjzatWtnvPTSS+W2denSxXjmmWeqM1qN8Ne//tVo0aKFYbPZjIyMDMPFxcVYtGhR2fP79u0zACM6OtrElPbz++NxPl988YXh6upqFBUV2TmZfWgazkEtWbKEbt26MXr0aBo2bEjnzp3573//W/b84cOHSUlJoX///mXb/Pz86NGjB9HR0WZErlYXOx7nk5mZicViwd/f3z4h7exSjonNZmPcuHFMmTKFdu3amZTUPi52PGw2G8uWLaN169YMHDiQhg0b0qNHD7755hvzQlejS/n56N27N0uWLCExMRHDMFi7di379+9nwIABJqW2j8LCQj7++GPuu+8+LBYLW7dupaioqNzv04iICEJDQ2vl79M/+uPxOJ/MzEx8fX1xdq6lE1ZmtzWpHDc3N8PNzc2YPn268dtvvxnvvvuu4e7ubsyfP98wDMOIiooyACMpKancfqNHjzbGjBljRuRqdbHj8UenT582unTpYtx11112Tmo/l3JMXnvtNeOmm24q+9dibR5ZutjxSE5ONgDD09PT+Nvf/mZs27bNmDlzpmGxWIyffvrJ5PRV71J+PvLz84177rnHAAxnZ2fD1dXVWLBggYmp7ePzzz83nJycjMTERMMwDGPhwoWGq6vrOa+7+uqrjaeeesre8ezuj8fjj44fP26EhoYaTz/9tJ2T2Y/KkoNycXExevXqVW7bo48+avTs2dMwjLpXli52PH6vsLDQGDZsmNG5c2cjMzPTXhHt7mLHZMuWLUajRo3K/QKszWXpYscjMTHRAIw777yz3GuGDRtm3HHHHXbLaS+X8t/Mm2++abRu3dpYsmSJsWPHDuOdd94xvL29jVWrVtk7rl0NGDDAGDp0aNnXdb0s/fF4/F5mZqbRvXt3Y9CgQUZhYaGdk9mPpuEcVOPGjWnbtm25bZGRkWVX7QQFBQGcc7VGampq2XO1ycWOx1lFRUWMGTOGI0eOsGrVqlpxx+wLudgxWbduHWlpaYSGhuLs7IyzszNHjhxh8uTJhIWFmZC4el3seDRo0ABnZ+dL+jmqDS52PE6fPs3TTz/N3/72N4YNG0bHjh2ZNGkSt99+O7NnzzYjsl0cOXKE1atXc//995dtCwoKorCwkIyMjHKvra2/T3/vfMfjrOzsbAYNGoSPjw9ff/01Li4uJiS0D5UlB9WnTx9iY2PLbdu/fz/NmjUDIDw8nKCgIH788cey57Oysti4cSO9evWya1Z7uNjxgP8vSgcOHGD16tXUr1/f3jHt6mLHZNy4cezcuZPt27eXPYKDg5kyZQorVqwwI3K1utjxcHV15eqrr77oz1FtcbHjUVRURFFREVZr+T8TTk5O2Gw2u+W0t3nz5tGwYUNuvvnmsm1du3bFxcWl3O/T2NhYEhISauXv09873/GA0r8nAwYMwNXVlSVLltTKK0bLMXtoSypn06ZNhrOzs/Hqq68aBw4cMBYuXGh4enoaH3/8cdlrZs2aZfj7+xvffvutsXPnTuOWW24xwsPDjdOnT5uYvHpc7HgUFhYaw4cPN5o2bWps377dSE5OLnsUFBSYnL56XMrPyB/V5mm4SzkeX331leHi4mK89957xoEDB4x33nnHcHJyMtatW2di8upxKcfjuuuuM9q1a2esXbvWOHTokDFv3jzD3d3d+Pe//21i8upTUlJihIaGGlOnTj3nuYcfftgIDQ011qxZY2zZssXo1avXOdOYtc2FjkdmZqbRo0cPo0OHDsbBgwfL/T4tLi42KW31UllyYN99953Rvn17w83NzYiIiDDee++9cs/bbDZjxowZRqNGjQw3NzejX79+RmxsrElpq19Fx+Pw4cMGcN7H2rVrzQtdzS72M/JHtbksGcalHY/333/faNmypeHu7m506tTJ+Oabb0xIah8XOx7JycnG+PHjjeDgYMPd3d1o06aNMWfOnAtePu7oVqxYYQDn/T15+vRp45FHHjECAgIMT09PY+TIkUZycrIJKe3nQsdj7dq1F/x9evjwYXPCVjOLYRiGGSNaIiIiIo5A5yyJiIiIVEBlSURERKQCKksiIiIiFVBZEhEREamAypKIiIhIBVSWRERERCqgsiQiIiJSAZUlERERkQqoLIlInRYWFsZbb71ldgwRqcFUlkTEYQ0bNoxBgwad97l169ZhsVjYuXOnnVOJSG2jsiQiDmvixImsWrWKY8eOnfPcvHnz6NatGx07djQhmYjUJipLIuKwhg4dSmBgIPPnzy+3PScnh0WLFjFx4kQWL15Mu3btcHNzIywsjDlz5lzw/eLj47FYLGzfvr1sW0ZGBhaLhZ9++gmAn376CYvFwooVK+jcuTMeHh7ceOONpKWl8cMPPxAZGYmvry933XUXeXl5Ze9js9mYOXMm4eHheHh40KlTJ7788suqPBwiUk1UlkTEYTk7O3PPPfcwf/58fn9P8EWLFlFSUkJkZCRjxozhjjvuYNeuXbzwwgvMmDHjnHJVGS+88AL//Oc/2bBhA0ePHmXMmDG89dZbfPLJJyxbtoyVK1fyzjvvlL1+5syZfPjhh8ydO5c9e/bw+OOPc/fdd/Pzzz9fcRYRqV4W4/e/YUREHExMTAyRkZGsXbuW66+/HoBrr72WZs2aYbPZOH78OCtXrix7/VNPPcWyZcvYs2cPUHqC92OPPcZjjz1GfHw84eHhbNu2jauuugooHVkKCAgoe/+ffvqJG264gdWrV9OvXz8AZs2axfTp04mLi6N58+YAPPzww8THx7N8+XIKCgqoV68eq1evplevXmVZ7r//fvLy8vjkk0/scKREpLI0siQiDi0iIoLevXvzwQcfAHDw4EHWrVvHxIkT2bdvH3369Cn3+j59+nDgwAFKSkqu6Pv+/lyoRo0a4enpWVaUzm5LS0sry5SXl8dNN92Et7d32ePDDz8kLi7uinKISPVzNjuAiMiVmjhxIo8++ij/+te/mDdvHi1atOC666677PexWkv//fj7AfeioqLzvtbFxaXsf1sslnJfn91ms9mA0nOoAJYtW0aTJk3Kvc7Nze2yc4qIfWlkSUQc3pgxY7BarXzyySd8+OGH3HfffVgsFiIjI4mKiir32qioKFq3bo2Tk9M57xMYGAhAcnJy2bbfn+xdWW3btsXNzY2EhARatmxZ7hESEnLF7y8i1UsjSyLi8Ly9vbn99tuZPn06WVlZjB8/HoDJkydz9dVX8/LLL3P77bcTHR3NP//5T/7973+f9308PDzo2bMns2bNIjw8nLS0NJ599tkrzufj48OTTz7J448/js1mo2/fvmRmZhIVFYWvry/33nvvFX8PEak+GlkSkVph4sSJnDp1ioEDBxIcHAxAly5d+OKLL/jss89o3749zz33HC+99FJZmTqfDz74gOLiYrp27cpjjz3GK6+8UiX5Xn75ZWbMmMHMmTOJjIxk0KBBLFu2jPDw8Cp5fxGpProaTkRERKQCGlkSERERqYDKkoiIiEgFVJZEREREKqCyJCIiIlIBlSURERGRCqgsiYiIiFRAZUlERESkAipLIiIiIhVQWRIRERGpgMqSiIiISAVUlkREREQqoLIkIiIiUoH/A4hDTvDyMQd6AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "delayed_object.pull()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "aiida", - "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.11.0" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} +{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3 (ipykernel)","language":"python"},"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":"# jobflow","metadata":{}},{"cell_type":"markdown","source":"## Define workflow with jobflow","metadata":{}},{"cell_type":"code","source":"import numpy as np","metadata":{"trusted":false},"outputs":[],"execution_count":1},{"cell_type":"code","source":"from jobflow import job, Flow","metadata":{"trusted":false},"outputs":[],"execution_count":2},{"cell_type":"code","source":"from python_workflow_definition.jobflow import write_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":3},{"cell_type":"code","source":"from quantum_espresso_workflow import (\n calculate_qe as _calculate_qe, \n generate_structures as _generate_structures, \n get_bulk_structure as _get_bulk_structure, \n plot_energy_volume_curve as _plot_energy_volume_curve,\n)","metadata":{"trusted":false},"outputs":[],"execution_count":4},{"cell_type":"code","source":"workflow_json_filename = \"jobflow_qe.json\"","metadata":{"trusted":false},"outputs":[],"execution_count":5},{"cell_type":"code","source":"calculate_qe = job(_calculate_qe, data=[\"energy\", \"volume\", \"structure\"])\ngenerate_structures = job(_generate_structures, data=[f\"s_{i}\" for i in range(100)])\nplot_energy_volume_curve = job(_plot_energy_volume_curve)\nget_bulk_structure = job(_get_bulk_structure)","metadata":{"trusted":false},"outputs":[],"execution_count":6},{"cell_type":"code","source":"pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}","metadata":{"trusted":false},"outputs":[],"execution_count":7},{"cell_type":"code","source":"structure = get_bulk_structure(\n element=\"Al\",\n a=4.05,\n cubic=True,\n)","metadata":{"trusted":false},"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":false},"outputs":[],"execution_count":9},{"cell_type":"code","source":"number_of_strains = 5\nstructure_lst = generate_structures(\n structure=calc_mini.output.structure,\n strain_lst=np.linspace(0.9, 1.1, number_of_strains),\n)","metadata":{"trusted":false},"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":false},"outputs":[],"execution_count":11},{"cell_type":"code","source":"plot = plot_energy_volume_curve(\n volume_lst=[job.output.volume for job in job_strain_lst],\n energy_lst=[job.output.energy for job in job_strain_lst],\n)","metadata":{"trusted":false},"outputs":[],"execution_count":12},{"cell_type":"code","source":"flow = Flow([structure, calc_mini, structure_lst] + job_strain_lst + [plot])","metadata":{"trusted":false},"outputs":[],"execution_count":13},{"cell_type":"code","source":"write_workflow_json(flow=flow, file_name=workflow_json_filename)","metadata":{"trusted":false},"outputs":[],"execution_count":14},{"cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"{\"nodes\": {\"0\": \"quantum_espresso_workflow.get_bulk_structure\", \"1\": \"quantum_espresso_workflow.calculate_qe\", \"2\": \"quantum_espresso_workflow.generate_structures\", \"3\": \"quantum_espresso_workflow.calculate_qe\", \"4\": \"quantum_espresso_workflow.calculate_qe\", \"5\": \"quantum_espresso_workflow.calculate_qe\", \"6\": \"quantum_espresso_workflow.calculate_qe\", \"7\": \"quantum_espresso_workflow.calculate_qe\", \"8\": \"quantum_espresso_workflow.plot_energy_volume_curve\", \"9\": \"Al\", \"10\": 4.05, \"11\": true, \"12\": \"mini\", \"13\": \"python_workflow_definition.shared.get_dict\", \"14\": {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}, \"15\": [3, 3, 3], \"16\": \"vc-relax\", \"17\": 0.02, \"18\": [0.9, 0.9500000000000001, 1.0, 1.05, 1.1], \"19\": \"strain_0\", \"20\": \"python_workflow_definition.shared.get_dict\", \"21\": \"scf\", \"22\": \"strain_1\", \"23\": \"python_workflow_definition.shared.get_dict\", \"24\": \"strain_2\", \"25\": \"python_workflow_definition.shared.get_dict\", \"26\": \"strain_3\", \"27\": \"python_workflow_definition.shared.get_dict\", \"28\": \"strain_4\", \"29\": \"python_workflow_definition.shared.get_dict\", \"30\": \"python_workflow_definition.shared.get_list\", \"31\": \"python_workflow_definition.shared.get_list\"}, \"edges\": [{\"tn\": 0, \"th\": \"element\", \"sn\": 9, \"sh\": null}, {\"tn\": 0, \"th\": \"a\", \"sn\": 10, \"sh\": null}, {\"tn\": 0, \"th\": \"cubic\", \"sn\": 11, \"sh\": null}, {\"tn\": 1, \"th\": \"working_directory\", \"sn\": 12, \"sh\": null}, {\"tn\": 13, \"th\": \"structure\", \"sn\": 0, \"sh\": null}, {\"tn\": 13, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 13, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 13, \"th\": \"calculation\", \"sn\": 16, \"sh\": null}, {\"tn\": 13, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 1, \"th\": \"input_dict\", \"sn\": 13, \"sh\": null}, {\"tn\": 2, \"th\": \"structure\", \"sn\": 1, \"sh\": \"structure\"}, {\"tn\": 2, \"th\": \"strain_lst\", \"sn\": 18, \"sh\": null}, {\"tn\": 3, \"th\": \"working_directory\", \"sn\": 19, \"sh\": null}, {\"tn\": 20, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_0\"}, {\"tn\": 20, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 20, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 20, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 20, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 3, \"th\": \"input_dict\", \"sn\": 20, \"sh\": null}, {\"tn\": 4, \"th\": \"working_directory\", \"sn\": 22, \"sh\": null}, {\"tn\": 23, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_1\"}, {\"tn\": 23, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 23, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 23, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 23, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 4, \"th\": \"input_dict\", \"sn\": 23, \"sh\": null}, {\"tn\": 5, \"th\": \"working_directory\", \"sn\": 24, \"sh\": null}, {\"tn\": 25, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_2\"}, {\"tn\": 25, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 25, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 25, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 25, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 5, \"th\": \"input_dict\", \"sn\": 25, \"sh\": null}, {\"tn\": 6, \"th\": \"working_directory\", \"sn\": 26, \"sh\": null}, {\"tn\": 27, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_3\"}, {\"tn\": 27, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 27, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 27, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 27, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 6, \"th\": \"input_dict\", \"sn\": 27, \"sh\": null}, {\"tn\": 7, \"th\": \"working_directory\", \"sn\": 28, \"sh\": null}, {\"tn\": 29, \"th\": \"structure\", \"sn\": 2, \"sh\": \"s_4\"}, {\"tn\": 29, \"th\": \"pseudopotentials\", \"sn\": 14, \"sh\": null}, {\"tn\": 29, \"th\": \"kpts\", \"sn\": 15, \"sh\": null}, {\"tn\": 29, \"th\": \"calculation\", \"sn\": 21, \"sh\": null}, {\"tn\": 29, \"th\": \"smearing\", \"sn\": 17, \"sh\": null}, {\"tn\": 7, \"th\": \"input_dict\", \"sn\": 29, \"sh\": null}, {\"tn\": 30, \"th\": \"0\", \"sn\": 3, \"sh\": \"volume\"}, {\"tn\": 30, \"th\": \"1\", \"sn\": 4, \"sh\": \"volume\"}, {\"tn\": 30, \"th\": \"2\", \"sn\": 5, \"sh\": \"volume\"}, {\"tn\": 30, \"th\": \"3\", \"sn\": 6, \"sh\": \"volume\"}, {\"tn\": 30, \"th\": \"4\", \"sn\": 7, \"sh\": \"volume\"}, {\"tn\": 8, \"th\": \"volume_lst\", \"sn\": 30, \"sh\": null}, {\"tn\": 31, \"th\": \"0\", \"sn\": 3, \"sh\": \"energy\"}, {\"tn\": 31, \"th\": \"1\", \"sn\": 4, \"sh\": \"energy\"}, {\"tn\": 31, \"th\": \"2\", \"sn\": 5, \"sh\": \"energy\"}, {\"tn\": 31, \"th\": \"3\", \"sn\": 6, \"sh\": \"energy\"}, {\"tn\": 31, \"th\": \"4\", \"sn\": 7, \"sh\": \"energy\"}, {\"tn\": 8, \"th\": \"energy_lst\", \"sn\": 31, \"sh\": null}]}"}],"execution_count":15},{"cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"cell_type":"code","source":"from aiida import load_profile\n\nload_profile()","metadata":{"trusted":false},"outputs":[{"data":{"text/plain":"Profile"},"execution_count":16,"metadata":{},"output_type":"execute_result"}],"execution_count":16},{"cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":17},{"cell_type":"code","source":"wg = load_workflow_json(workflow_json_filename)","metadata":{"trusted":false},"outputs":[],"execution_count":18},{"cell_type":"code","source":"wg","metadata":{"trusted":false},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"4b2f21f2dbc74d8fa206428847590b35","version_major":2,"version_minor":1},"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…"},"execution_count":19,"metadata":{},"output_type":"execute_result"}],"execution_count":19},{"cell_type":"code","source":"wg.run()","metadata":{"trusted":false},"outputs":[{"name":"stderr","output_type":"stream","text":"04/01/2025 10:52:32 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n04/01/2025 10:52:33 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PyFunction, finished.\n04/01/2025 10:52:34 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10\n04/01/2025 10:52:35 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n04/01/2025 10:52:36 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:52:55 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n04/01/2025 10:52:55 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe2, type: PyFunction, finished.\n04/01/2025 10:52:56 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n04/01/2025 10:52:57 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: generate_structures3, type: PyFunction, finished.\n04/01/2025 10:52:58 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict11,get_dict12,get_dict13,get_dict14,get_dict15\n04/01/2025 10:52:59 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict11, type: PyFunction, finished.\n04/01/2025 10:52:59 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict13,get_dict14,get_dict15,calculate_qe4\n04/01/2025 10:53:00 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n04/01/2025 10:53:01 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict13,get_dict14,get_dict15,calculate_qe4,calculate_qe5\n04/01/2025 10:53:02 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict13, type: PyFunction, finished.\n04/01/2025 10:53:03 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict15,calculate_qe4,calculate_qe5,calculate_qe6\n04/01/2025 10:53:04 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n04/01/2025 10:53:04 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict15,calculate_qe4,calculate_qe5,calculate_qe6,calculate_qe7\n04/01/2025 10:53:05 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_dict15, type: PyFunction, finished.\n04/01/2025 10:53:06 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,calculate_qe5,calculate_qe6,calculate_qe7,calculate_qe8\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:53:10 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:53:10 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe4, type: PyFunction, finished.\n04/01/2025 10:53:11 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe5,calculate_qe6,calculate_qe7,calculate_qe8\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:53:15 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:53:16 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe5, type: PyFunction, finished.\n04/01/2025 10:53:16 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6,calculate_qe7,calculate_qe8\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:53:21 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:53:21 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n04/01/2025 10:53:22 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe7,calculate_qe8\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:53:27 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:53:28 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe7, type: PyFunction, finished.\n04/01/2025 10:53:28 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe8\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:53:34 AM <3361007> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:53:34 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PyFunction, finished.\n04/01/2025 10:53:35 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list16,get_list17\n04/01/2025 10:53:36 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_list16, type: PyFunction, finished.\n04/01/2025 10:53:36 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n04/01/2025 10:53:37 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n04/01/2025 10:53:38 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n04/01/2025 10:53:39 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve9, type: PyFunction, finished.\n04/01/2025 10:53:39 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/01/2025 10:53:41 AM <3361007> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51189|WorkGraphEngine|finalize]: Finalize workgraph.\n"},{"data":{"image/png":"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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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","text/plain":"
"},"metadata":{},"output_type":"display_data"}],"execution_count":20},{"cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":false},"outputs":[],"execution_count":21},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":22},{"cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":false},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"4caef04a260d4db6a145bd9ce8cea6f8","version_major":2,"version_minor":0},"text/plain":" 0%| | 0/17 [00:00\n\n\n\n\ncreate_function_job_8efde306e01476f31dc88ed9f939e365\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07b4d0>\n\n\n\nvolume_lst_0a067e4e854f258474f2cc9c270ffcf6\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07ae90>\n\n\n\nvolume_lst_0a067e4e854f258474f2cc9c270ffcf6->create_function_job_8efde306e01476f31dc88ed9f939e365\n\n\n\n\n\n0_955c8ec5df91e1384fd3c2479d5b4432\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7f34341fba10>\n\n\n\n0_955c8ec5df91e1384fd3c2479d5b4432->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_955c8ec5df91e1384fd3c2479d5b4432\n\n\n\n\n\n0_e0b6aa6ef68a4efb034264a4785e3ac9\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x7f342ef00450>\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_e0b6aa6ef68a4efb034264a4785e3ac9\n\n\n\n\n\nenergy_lst_83f0ff69cd84017d2fc83be62d3dc606\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f079d50>\n\n\n\n0_e0b6aa6ef68a4efb034264a4785e3ac9->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n\n\n\n\n\ninput_dict_36e198dfa349bc60853925c9e11af2db\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16dcd0>\n\n\n\ninput_dict_36e198dfa349bc60853925c9e11af2db->0_955c8ec5df91e1384fd3c2479d5b4432\n\n\n\n\n\ninput_dict_36e198dfa349bc60853925c9e11af2db->0_e0b6aa6ef68a4efb034264a4785e3ac9\n\n\n\n\n\nstructure_1c51bcd538be036a6d4392d0103016bb\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16c050>\n\n\n\nstructure_1c51bcd538be036a6d4392d0103016bb->input_dict_36e198dfa349bc60853925c9e11af2db\n\n\n\n\n\nstructure_c113e8251b29845018e428419a1d2698\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f0ebc90>\n\n\n\nstructure_c113e8251b29845018e428419a1d2698->structure_1c51bcd538be036a6d4392d0103016bb\n\n\n\n\n\nstructure_ed6f3c962abe8050a51f414adbd0ff7a\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342d318d50>\n\n\n\nstructure_c113e8251b29845018e428419a1d2698->structure_ed6f3c962abe8050a51f414adbd0ff7a\n\n\n\n\n\nstructure_edcc7169afc8a5c42e4e69d7b96654fa\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f0e8290>\n\n\n\nstructure_c113e8251b29845018e428419a1d2698->structure_edcc7169afc8a5c42e4e69d7b96654fa\n\n\n\n\n\nstructure_2fca7fbe3b1c006f5217c598d1950e6f\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f0ea310>\n\n\n\nstructure_c113e8251b29845018e428419a1d2698->structure_2fca7fbe3b1c006f5217c598d1950e6f\n\n\n\n\n\nstructure_adc90bb48c6eddf6eb0a8e6fca83ecd3\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f0ebd50>\n\n\n\nstructure_c113e8251b29845018e428419a1d2698->structure_adc90bb48c6eddf6eb0a8e6fca83ecd3\n\n\n\n\n\ninput_dict_8c2fc93e386760501cc2bc5fd279936b\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16c150>\n\n\n\nstructure_ed6f3c962abe8050a51f414adbd0ff7a->input_dict_8c2fc93e386760501cc2bc5fd279936b\n\n\n\n\n\ninput_dict_b10ce6f7b36928314fdebf405fbd3096\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16c990>\n\n\n\nstructure_edcc7169afc8a5c42e4e69d7b96654fa->input_dict_b10ce6f7b36928314fdebf405fbd3096\n\n\n\n\n\ninput_dict_cd4c438e70833af210ca2f2cb6cc3433\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16e4d0>\n\n\n\nstructure_2fca7fbe3b1c006f5217c598d1950e6f->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n\n\n\n\n\ninput_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f16d490>\n\n\n\nstructure_adc90bb48c6eddf6eb0a8e6fca83ecd3->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_c113e8251b29845018e428419a1d2698\n\n\n\n\n\ninput_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f342eb51350>\n\n\n\ninput_dict_41dfbc5759c1782c1aadb6df0b0ee06b->structure_c113e8251b29845018e428419a1d2698\n\n\n\n\n\nstructure_f4511b90f1d10b2338ab6a9d2263a4f7\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x7f342ee1e250>\n\n\n\nstructure_f4511b90f1d10b2338ab6a9d2263a4f7->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n\n\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0\n\nelement=Al\n\n\n\nelement_467734216d9bd2497ffd28d5cd6daba0->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n\n\n\n\n\na_aea0574e321c6f75f923c059730e9537\n\na=4.05\n\n\n\na_aea0574e321c6f75f923c059730e9537->structure_f4511b90f1d10b2338ab6a9d2263a4f7\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_f4511b90f1d10b2338ab6a9d2263a4f7\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_36e198dfa349bc60853925c9e11af2db\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_8c2fc93e386760501cc2bc5fd279936b\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_b10ce6f7b36928314fdebf405fbd3096\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n\n\n\n\n\n1_09bcd65217c9d6874322ae0074b75a51\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07b610>\n\n\n\ninput_dict_8c2fc93e386760501cc2bc5fd279936b->1_09bcd65217c9d6874322ae0074b75a51\n\n\n\n\n\n1_91529aefacc5a546fd65f5387f2b09f0\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x7f342ef029d0>\n\n\n\ninput_dict_8c2fc93e386760501cc2bc5fd279936b->1_91529aefacc5a546fd65f5387f2b09f0\n\n\n\n\n\n2_07f0a3b279b1055343ff43468be23188\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07ae50>\n\n\n\ninput_dict_b10ce6f7b36928314fdebf405fbd3096->2_07f0a3b279b1055343ff43468be23188\n\n\n\n\n\n2_c2670b3885c2bf5fcb820fa32aa73b7f\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x7f34341fae50>\n\n\n\ninput_dict_b10ce6f7b36928314fdebf405fbd3096->2_c2670b3885c2bf5fcb820fa32aa73b7f\n\n\n\n\n\n3_21682a7b33b71609683ab10fd691fc4e\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f07be50>\n\n\n\ninput_dict_cd4c438e70833af210ca2f2cb6cc3433->3_21682a7b33b71609683ab10fd691fc4e\n\n\n\n\n\n3_0e7920e7e7612861a802811dee582e3e\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x7f34341fbb50>\n\n\n\ninput_dict_cd4c438e70833af210ca2f2cb6cc3433->3_0e7920e7e7612861a802811dee582e3e\n\n\n\n\n\n4_6bdcb72224c727e1bd635884dfd1b61d\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7f342f078590>\n\n\n\ninput_dict_8ef0642f5bd8fbe8221152b1e1563ebb->4_6bdcb72224c727e1bd635884dfd1b61d\n\n\n\n\n\n4_b390133ee37d66c42b3588de6fcc919e\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x7f34341f8f10>\n\n\n\ninput_dict_8ef0642f5bd8fbe8221152b1e1563ebb->4_b390133ee37d66c42b3588de6fcc919e\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_36e198dfa349bc60853925c9e11af2db\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_8c2fc93e386760501cc2bc5fd279936b\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b10ce6f7b36928314fdebf405fbd3096\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_36e198dfa349bc60853925c9e11af2db\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_41dfbc5759c1782c1aadb6df0b0ee06b\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_8c2fc93e386760501cc2bc5fd279936b\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b10ce6f7b36928314fdebf405fbd3096\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\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_1c51bcd538be036a6d4392d0103016bb\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_ed6f3c962abe8050a51f414adbd0ff7a\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_edcc7169afc8a5c42e4e69d7b96654fa\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_2fca7fbe3b1c006f5217c598d1950e6f\n\n\n\n\n\nstrain_lst_17d5bcbc7579ab5e0f98577d05347b86->structure_adc90bb48c6eddf6eb0a8e6fca83ecd3\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_36e198dfa349bc60853925c9e11af2db\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_8c2fc93e386760501cc2bc5fd279936b\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b10ce6f7b36928314fdebf405fbd3096\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_cd4c438e70833af210ca2f2cb6cc3433\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_8ef0642f5bd8fbe8221152b1e1563ebb\n\n\n\n\n\n1_09bcd65217c9d6874322ae0074b75a51->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_09bcd65217c9d6874322ae0074b75a51\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_91529aefacc5a546fd65f5387f2b09f0\n\n\n\n\n\n1_91529aefacc5a546fd65f5387f2b09f0->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n\n\n\n\n\n2_07f0a3b279b1055343ff43468be23188->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_07f0a3b279b1055343ff43468be23188\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_c2670b3885c2bf5fcb820fa32aa73b7f\n\n\n\n\n\n2_c2670b3885c2bf5fcb820fa32aa73b7f->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n\n\n\n\n\n3_21682a7b33b71609683ab10fd691fc4e->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_21682a7b33b71609683ab10fd691fc4e\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_0e7920e7e7612861a802811dee582e3e\n\n\n\n\n\n3_0e7920e7e7612861a802811dee582e3e->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n\n\n\n\n\n4_6bdcb72224c727e1bd635884dfd1b61d->volume_lst_0a067e4e854f258474f2cc9c270ffcf6\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_6bdcb72224c727e1bd635884dfd1b61d\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_b390133ee37d66c42b3588de6fcc919e\n\n\n\n\n\n4_b390133ee37d66c42b3588de6fcc919e->energy_lst_83f0ff69cd84017d2fc83be62d3dc606\n\n\n\n\n\nenergy_lst_83f0ff69cd84017d2fc83be62d3dc606->create_function_job_8efde306e01476f31dc88ed9f939e365\n\n\n\n\n","text/plain":""},"metadata":{},"output_type":"display_data"}],"execution_count":24},{"cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 4\nThe job get_dict_bbed7e528d369f5fa02591748be3166d was saved and received the ID: 5\nThe job calculate_qe_a8254d13768b11f13ee9368124819d22 was saved and received the ID: 6\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":"The job generate_structures_7c00a7a36fdf7a83905a933d6458c9f6 was saved and received the ID: 7\nThe job get_dict_9fea1887c87374cda848be8c394400b6 was saved and received the ID: 8\nThe job calculate_qe_a2a0f9b449a97089f66fd4697c1184d4 was saved and received the ID: 9\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":"The job get_dict_736160eef13d04e2065cf2c38c62bf47 was saved and received the ID: 10\nThe job calculate_qe_42a1041b6acc70e91f55e4a2a877ec0b was saved and received the ID: 11\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":"The job get_dict_618fccf949c159d8a1573c4cda125aae was saved and received the ID: 12\nThe job calculate_qe_d5f2ff242c26f0b8badef6df9a0504a5 was saved and received the ID: 13\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":"The job get_dict_61f81e04658f67188ad4502e007fe475 was saved and received the ID: 14\nThe job calculate_qe_2f09fb4c3a6570dbdc141588f072fec6 was saved and received the ID: 15\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":"The job get_dict_0bf0210bb59731567645c21e9c07d901 was saved and received the ID: 16\nThe job calculate_qe_8e0081288044bb59e2eb975aab60c98c was saved and received the ID: 17\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":"The job get_list_56b7ebcd322ece2c1200ba8d040fc0bd was saved and received the ID: 18\nThe job get_list_8d6e79fedf35b08653113905df993b7b was saved and received the ID: 19\nThe job plot_energy_volume_curve_fa6e68740c464fa9316d532209ff492f was saved and received the ID: 20\n"},{"data":{"image/png":"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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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","text/plain":"
"},"metadata":{},"output_type":"display_data"}],"execution_count":25},{"cell_type":"code","source":"","metadata":{"trusted":false},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/jobflow_simple.ipynb b/jobflow_simple.ipynb index f455734..ea246f0 100644 --- a/jobflow_simple.ipynb +++ b/jobflow_simple.ipynb @@ -1 +1 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"982a4fbe-7cf9-45dd-84ae-9854149db0b9","cell_type":"markdown","source":"# Simple Workflow with jobflow","metadata":{}},{"id":"e6180712-d081-45c7-ba41-fc5191f10427","cell_type":"markdown","source":"## Define workflow with jobflow","metadata":{}},{"id":"000bbd4a-f53c-4eea-9d85-76f0aa2ca10b","cell_type":"code","source":"from jobflow import job, Flow","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":1},{"id":"06c2bd9e-b2ac-4b88-9158-fa37331c3418","cell_type":"code","source":"from python_workflow_definition.jobflow import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"fb847d49-7bf9-4839-9b99-c116d1b0e9ee","cell_type":"code","source":"from simple_workflow import (\n add_x_and_y as _add_x_and_y, \n add_x_and_y_and_z as _add_x_and_y_and_z,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"8f95244e","cell_type":"code","source":"workflow_json_filename = \"jobflow_simple.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"07598344-0f75-433b-8902-bea21a42088c","cell_type":"code","source":"add_x_and_y = job(_add_x_and_y, data=[\"x\", \"y\", \"z\"])\nadd_x_and_y_and_z = job(_add_x_and_y_and_z)","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"ecef1ed5-a8d3-48c3-9e01-4a40e55c1153","cell_type":"code","source":"obj = add_x_and_y(x=1, y=2)","metadata":{"trusted":true},"outputs":[],"execution_count":6},{"id":"2b88a30a-e26b-4802-89b7-79ca08cc0af9","cell_type":"code","source":"w = add_x_and_y_and_z(x=obj.output.x, y=obj.output.y, z=obj.output.z)","metadata":{"trusted":true},"outputs":[],"execution_count":7},{"id":"a5e5ca63-2906-47c9-bac6-adebf8643cba","cell_type":"code","source":"flow = Flow([obj, w])","metadata":{"trusted":true},"outputs":[],"execution_count":8},{"id":"e464da97-16a1-4772-9a07-0a47f152781d","cell_type":"code","source":"write_workflow_json(flow=flow, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":9},{"id":"bca646b2-0a9a-4271-966a-e5903a8c9031","cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"{\"nodes\": {\"0\": \"simple_workflow.add_x_and_y\", \"1\": \"simple_workflow.add_x_and_y_and_z\", \"2\": 1, \"3\": 2}, \"edges\": [{\"tn\": 0, \"th\": \"x\", \"sn\": 2, \"sh\": null}, {\"tn\": 0, \"th\": \"y\", \"sn\": 3, \"sh\": null}, {\"tn\": 1, \"th\": \"x\", \"sn\": 0, \"sh\": \"x\"}, {\"tn\": 1, \"th\": \"y\", \"sn\": 0, \"sh\": \"y\"}, {\"tn\": 1, \"th\": \"z\", \"sn\": 0, \"sh\": \"z\"}]}"}],"execution_count":10},{"id":"87a27540-c390-4d34-ae75-4739bfc4c1b7","cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"id":"66a1b3a6-3d3b-4caa-b58f-d8bc089b1074","cell_type":"code","source":"from aiida import load_profile\n\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":11,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":11},{"id":"4679693b-039b-45cf-8c67-5b2b3d705a83","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"id":"68c41a61-d185-47e8-ba31-eeff71d8b2c6","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)\nwg","metadata":{"trusted":true},"outputs":[{"execution_count":13,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"14e9a03e426b468dbfe338d7f734a41a"}},"metadata":{}}],"execution_count":13},{"id":"05228ece-643c-420c-8df8-4ce3df379515","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/02/2025 02:37:38 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y1\n04/02/2025 02:37:38 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|update_task_state]: Task: add_x_and_y1, type: PyFunction, finished.\n04/02/2025 02:37:38 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y_and_z2\n04/02/2025 02:37:39 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|update_task_state]: Task: add_x_and_y_and_z2, type: PyFunction, finished.\n04/02/2025 02:37:39 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/02/2025 02:37:39 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":14},{"id":"2c942094-61b4-4e94-859a-64f87b5bec64","cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"id":"40672826-23bf-4c24-84e2-a6b9d87e2a3f","cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":15},{"id":"ea102341-84f7-4156-a7d1-c3ab1ea613a5","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":16},{"id":"f45684a8-2613-415a-ab0a-5cb2bafaffea","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"0it [00:00, ?it/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"f4514974ee9546f788ea311ec80db1c9"}},"metadata":{}}],"execution_count":17},{"id":"8f2a621d-b533-4ddd-8bcd-c22db2f922ec","cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=workflow_json_filename)\ndelayed_object.draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_988efa8422518ba29903b66c63607fb8\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x75516fcff020>\n\n\n\nx_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x75516fcfebd0>\n\n\n\nx_b8003ea81f8e4a9bdbfd3b4eb1e68e2b->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\n\n\n\n\ny_f60ae41b1c92823db71999ac596241ab\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x75516fcfeba0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_f60ae41b1c92823db71999ac596241ab\n\n\n\n\n\nz_a926da40ec18154feb3f3bb147af8220\n\nz=<pyiron_base.project.delayed.DelayedObject object at 0x75516fcfe810>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->z_a926da40ec18154feb3f3bb147af8220\n\n\n\n\n\ny_f60ae41b1c92823db71999ac596241ab->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\nz_a926da40ec18154feb3f3bb147af8220->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_f60ae41b1c92823db71999ac596241ab\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->z_a926da40ec18154feb3f3bb147af8220\n\n\n\n\n"},"metadata":{}}],"execution_count":18},{"id":"cf80267d-c2b0-4236-bf1d-a57596985fc1","cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job add_x_and_y_68901482a2c5221cc845f828aabebd27 was saved and received the ID: 1\nThe job add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d was saved and received the ID: 2\n"},{"execution_count":19,"output_type":"execute_result","data":{"text/plain":"6"},"metadata":{}}],"execution_count":19},{"id":"9d819ed0-689c-46a7-9eff-0afb5ed66efc","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"982a4fbe-7cf9-45dd-84ae-9854149db0b9","cell_type":"markdown","source":"# jobflow","metadata":{}},{"id":"e6180712-d081-45c7-ba41-fc5191f10427","cell_type":"markdown","source":"## Define workflow with jobflow","metadata":{}},{"id":"000bbd4a-f53c-4eea-9d85-76f0aa2ca10b","cell_type":"code","source":"from jobflow import job, Flow","metadata":{"trusted":false},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":1},{"id":"06c2bd9e-b2ac-4b88-9158-fa37331c3418","cell_type":"code","source":"from python_workflow_definition.jobflow import write_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":2},{"id":"fb847d49-7bf9-4839-9b99-c116d1b0e9ee","cell_type":"code","source":"from simple_workflow import (\n add_x_and_y as _add_x_and_y, \n add_x_and_y_and_z as _add_x_and_y_and_z,\n)","metadata":{"trusted":false},"outputs":[],"execution_count":3},{"id":"8f95244e","cell_type":"code","source":"workflow_json_filename = \"jobflow_simple.json\"","metadata":{"trusted":false},"outputs":[],"execution_count":4},{"id":"07598344-0f75-433b-8902-bea21a42088c","cell_type":"code","source":"add_x_and_y = job(_add_x_and_y, data=[\"x\", \"y\", \"z\"])\nadd_x_and_y_and_z = job(_add_x_and_y_and_z)","metadata":{"trusted":false},"outputs":[],"execution_count":5},{"id":"ecef1ed5-a8d3-48c3-9e01-4a40e55c1153","cell_type":"code","source":"obj = add_x_and_y(x=1, y=2)","metadata":{"trusted":false},"outputs":[],"execution_count":6},{"id":"2b88a30a-e26b-4802-89b7-79ca08cc0af9","cell_type":"code","source":"w = add_x_and_y_and_z(x=obj.output.x, y=obj.output.y, z=obj.output.z)","metadata":{"trusted":false},"outputs":[],"execution_count":7},{"id":"a5e5ca63-2906-47c9-bac6-adebf8643cba","cell_type":"code","source":"flow = Flow([obj, w])","metadata":{"trusted":false},"outputs":[],"execution_count":8},{"id":"e464da97-16a1-4772-9a07-0a47f152781d","cell_type":"code","source":"write_workflow_json(flow=flow, file_name=workflow_json_filename)","metadata":{"trusted":false},"outputs":[],"execution_count":9},{"id":"bca646b2-0a9a-4271-966a-e5903a8c9031","cell_type":"code","source":"!cat {workflow_json_filename}","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"{\"nodes\": {\"0\": \"simple_workflow.add_x_and_y\", \"1\": \"simple_workflow.add_x_and_y_and_z\", \"2\": 1, \"3\": 2}, \"edges\": [{\"tn\": 0, \"th\": \"x\", \"sn\": 2, \"sh\": null}, {\"tn\": 0, \"th\": \"y\", \"sn\": 3, \"sh\": null}, {\"tn\": 1, \"th\": \"x\", \"sn\": 0, \"sh\": \"x\"}, {\"tn\": 1, \"th\": \"y\", \"sn\": 0, \"sh\": \"y\"}, {\"tn\": 1, \"th\": \"z\", \"sn\": 0, \"sh\": \"z\"}]}"}],"execution_count":10},{"id":"87a27540-c390-4d34-ae75-4739bfc4c1b7","cell_type":"markdown","source":"## Load Workflow with aiida","metadata":{}},{"id":"66a1b3a6-3d3b-4caa-b58f-d8bc089b1074","cell_type":"code","source":"from aiida import load_profile\n\nload_profile()","metadata":{"trusted":false},"outputs":[{"execution_count":11,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":11},{"id":"4679693b-039b-45cf-8c67-5b2b3d705a83","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":12},{"id":"68c41a61-d185-47e8-ba31-eeff71d8b2c6","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)\nwg","metadata":{"trusted":false},"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":"14e9a03e426b468dbfe338d7f734a41a"}},"metadata":{}}],"execution_count":13},{"id":"05228ece-643c-420c-8df8-4ce3df379515","cell_type":"code","source":"wg.run()","metadata":{"trusted":false},"outputs":[{"name":"stderr","output_type":"stream","text":"04/02/2025 02:37:38 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y1\n04/02/2025 02:37:38 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|update_task_state]: Task: add_x_and_y1, type: PyFunction, finished.\n04/02/2025 02:37:38 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y_and_z2\n04/02/2025 02:37:39 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|update_task_state]: Task: add_x_and_y_and_z2, type: PyFunction, finished.\n04/02/2025 02:37:39 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/02/2025 02:37:39 PM <422> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [16|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":14},{"id":"2c942094-61b4-4e94-859a-64f87b5bec64","cell_type":"markdown","source":"## Load Workflow with pyiron_base","metadata":{}},{"id":"40672826-23bf-4c24-84e2-a6b9d87e2a3f","cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":false},"outputs":[],"execution_count":15},{"id":"ea102341-84f7-4156-a7d1-c3ab1ea613a5","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":16},{"id":"f45684a8-2613-415a-ab0a-5cb2bafaffea","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":false},"outputs":[{"output_type":"display_data","data":{"text/plain":"0it [00:00, ?it/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"f4514974ee9546f788ea311ec80db1c9"}},"metadata":{}}],"execution_count":17},{"id":"8f2a621d-b533-4ddd-8bcd-c22db2f922ec","cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=workflow_json_filename)\ndelayed_object.draw()","metadata":{"trusted":false},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_988efa8422518ba29903b66c63607fb8\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x75516fcff020>\n\n\n\nx_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x75516fcfebd0>\n\n\n\nx_b8003ea81f8e4a9bdbfd3b4eb1e68e2b->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\n\n\n\n\ny_f60ae41b1c92823db71999ac596241ab\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x75516fcfeba0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_f60ae41b1c92823db71999ac596241ab\n\n\n\n\n\nz_a926da40ec18154feb3f3bb147af8220\n\nz=<pyiron_base.project.delayed.DelayedObject object at 0x75516fcfe810>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->z_a926da40ec18154feb3f3bb147af8220\n\n\n\n\n\ny_f60ae41b1c92823db71999ac596241ab->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\nz_a926da40ec18154feb3f3bb147af8220->create_function_job_988efa8422518ba29903b66c63607fb8\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_b8003ea81f8e4a9bdbfd3b4eb1e68e2b\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_f60ae41b1c92823db71999ac596241ab\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->z_a926da40ec18154feb3f3bb147af8220\n\n\n\n\n"},"metadata":{}}],"execution_count":18},{"id":"cf80267d-c2b0-4236-bf1d-a57596985fc1","cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"The job add_x_and_y_68901482a2c5221cc845f828aabebd27 was saved and received the ID: 1\nThe job add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d was saved and received the ID: 2\n"},{"execution_count":19,"output_type":"execute_result","data":{"text/plain":"6"},"metadata":{}}],"execution_count":19},{"id":"9d819ed0-689c-46a7-9eff-0afb5ed66efc","cell_type":"code","source":"","metadata":{"trusted":false},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/pyiron_base_nfdi.ipynb b/pyiron_base_nfdi.ipynb index 9bda9eb..72cbcec 100644 --- a/pyiron_base_nfdi.ipynb +++ b/pyiron_base_nfdi.ipynb @@ -1 +1 @@ -{"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":"https://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements","metadata":{}},{"id":"6d86e804-245a-4d96-a1a3-1bc3216c3646","cell_type":"code","source":"!conda env list","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"\n# conda environments:\n#\nbase /srv/conda\nnotebook * /srv/conda/envs/notebook\npostprocessing /srv/conda/envs/postprocessing\npreprocessing /srv/conda/envs/preprocessing\nprocessing /srv/conda/envs/processing\n\n"}],"execution_count":1},{"id":"11e09b78-cb72-465f-9c8b-5b77f0aa729c","cell_type":"markdown","source":"# Preprocessing ","metadata":{}},{"id":"a76e6c0a-98f2-4436-af10-8097da183341","cell_type":"code","source":"from nfdi_ing_workflow import (\n generate_mesh as _generate_mesh, \n convert_to_xdmf as _convert_to_xdmf,\n poisson as _poisson,\n plot_over_line as _plot_over_line,\n substitute_macros as _substitute_macros,\n compile_paper as _compile_paper,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"89c02460-b543-442c-a27e-f1757dc2262e","cell_type":"code","source":"from pyiron_base import Project, job","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf, output_key_lst=[\"xdmf_file\", \"h5_file\"])\npoisson = job(_poisson, output_key_lst=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"508e6549-f7b8-492b-8c88-9e46c08ffca9","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":" 0%| | 0/6 [00:00"},"metadata":{}}],"execution_count":16},{"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":17},{"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":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":"5fc1dd2af29a487f91a742dc61513583"}},"metadata":{}}],"execution_count":18},{"id":"15282ca1-d339-40e7-ad68-8a7613ed08da","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/02/2025 02:42:49 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh6\n04/02/2025 02:42:52 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|update_task_state]: Task: generate_mesh6, type: PyFunction, finished.\n04/02/2025 02:42:52 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf5\n04/02/2025 02:42:54 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf5, type: PyFunction, finished.\n04/02/2025 02:42:54 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson4\n04/02/2025 02:42:58 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|update_task_state]: Task: poisson4, type: PyFunction, finished.\n04/02/2025 02:42:58 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line3\n04/02/2025 02:43:00 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|update_task_state]: Task: plot_over_line3, type: PyFunction, finished.\n04/02/2025 02:43:00 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros2\n04/02/2025 02:43:02 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|update_task_state]: Task: substitute_macros2, type: PyFunction, finished.\n04/02/2025 02:43:02 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper1\n04/02/2025 02:43:06 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|update_task_state]: Task: compile_paper1, type: PyFunction, finished.\n04/02/2025 02:43:06 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/02/2025 02:43:06 PM <3366> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [57|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":19},{"id":"55dc8d12-dfe6-4465-a368-b7e590ae6800","cell_type":"markdown","source":"# Load Workflow with pyiron_base","metadata":{}},{"id":"dff46eb8-e0e7-49bb-8c40-0db2df133124","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":20},{"id":"6a189459-84e4-4738-ada1-37ee8c65b2ab","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":21},{"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":22},{"id":"2d87ed45-f5d9-403f-a03a-26be4a47a3ef","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-02 14:43:07,042 INFO Started executing jobs locally\n2025-04-02 14:43:07,362 INFO Starting job - generate_mesh (43b2c093-4d23-4dff-9faa-91515c28b29b)\n2025-04-02 14:43:08,924 INFO Finished job - generate_mesh (43b2c093-4d23-4dff-9faa-91515c28b29b)\n2025-04-02 14:43:08,925 INFO Starting job - convert_to_xdmf (54030101-696f-4d65-939f-fc0d1caa8503)\n2025-04-02 14:43:10,661 INFO Finished job - convert_to_xdmf (54030101-696f-4d65-939f-fc0d1caa8503)\n2025-04-02 14:43:10,663 INFO Starting job - poisson (5a5d4720-da41-44c9-a3f0-52995c086dee)\n2025-04-02 14:43:13,799 INFO Finished job - poisson (5a5d4720-da41-44c9-a3f0-52995c086dee)\n2025-04-02 14:43:13,801 INFO Starting job - plot_over_line (ef4ff511-cac6-4f0f-a0f6-36e049bbf9fe)\n2025-04-02 14:43:15,798 INFO Finished job - plot_over_line (ef4ff511-cac6-4f0f-a0f6-36e049bbf9fe)\n2025-04-02 14:43:15,799 INFO Starting job - substitute_macros (2a2432f2-612b-4598-a4a9-1ec1eeb194bf)\n2025-04-02 14:43:17,144 INFO Finished job - substitute_macros (2a2432f2-612b-4598-a4a9-1ec1eeb194bf)\n2025-04-02 14:43:17,145 INFO Starting job - compile_paper (1db56d00-9f04-4482-aae9-6cad8720fb06)\n2025-04-02 14:43:19,774 INFO Finished job - compile_paper (1db56d00-9f04-4482-aae9-6cad8720fb06)\n2025-04-02 14:43:19,775 INFO Finished executing jobs locally\n"},{"execution_count":23,"output_type":"execute_result","data":{"text/plain":"{'43b2c093-4d23-4dff-9faa-91515c28b29b': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '54030101-696f-4d65-939f-fc0d1caa8503': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '5a5d4720-da41-44c9-a3f0-52995c086dee': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'ef4ff511-cac6-4f0f-a0f6-36e049bbf9fe': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '2a2432f2-612b-4598-a4a9-1ec1eeb194bf': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '1db56d00-9f04-4482-aae9-6cad8720fb06': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":23}]} \ No newline at end of file +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"106ded66-d202-46ac-82b0-2755ca309bdd","cell_type":"markdown","source":"# pyiron\n\nhttps://github.com/BAMresearch/NFDI4IngScientificWorkflowRequirements","metadata":{}},{"id":"91dd48ea-aa7e-4937-a68e-59fc5017eb1e","cell_type":"markdown","source":"## Define workflow with pyiron_base","metadata":{}},{"id":"a76e6c0a-98f2-4436-af10-8097da183341","cell_type":"code","source":"from nfdi_ing_workflow import (\n generate_mesh as _generate_mesh, \n convert_to_xdmf as _convert_to_xdmf,\n poisson as _poisson,\n plot_over_line as _plot_over_line,\n substitute_macros as _substitute_macros,\n compile_paper as _compile_paper,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"89c02460-b543-442c-a27e-f1757dc2262e","cell_type":"code","source":"from pyiron_base import Project, job\n\nfrom python_workflow_definition.pyiron_base import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"549ecf27-88ef-4e77-8bd4-b616cfdda2e4","cell_type":"code","source":"generate_mesh = job(_generate_mesh)\nconvert_to_xdmf = job(_convert_to_xdmf, output_key_lst=[\"xdmf_file\", \"h5_file\"])\npoisson = job(_poisson, output_key_lst=[\"numdofs\", \"pvd_file\", \"vtu_file\"])\nplot_over_line = job(_plot_over_line)\nsubstitute_macros = job(_substitute_macros)\ncompile_paper = job(_compile_paper)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"508e6549-f7b8-492b-8c88-9e46c08ffca9","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"0it [00:00, ?it/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"df061dc9c1a14295b2a3aee30b619a5f"}},"metadata":{}}],"execution_count":4},{"id":"8d911f98-3b80-457f-a0f4-3cb37ebf1691","cell_type":"code","source":"domain_size = 2.0","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"71d411b6-cbec-489e-99e3-ba71680bcb5b","cell_type":"code","source":"gmsh_output_file = generate_mesh(\n domain_size=domain_size,\n pyiron_project=pr\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":6},{"id":"1d0d9804-f250-48b3-a5d0-a546d520f79b","cell_type":"code","source":"meshio_output_dict = convert_to_xdmf(\n gmsh_output_file=gmsh_output_file,\n pyiron_project=pr,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":7},{"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 pyiron_project=pr,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":8},{"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 pyiron_project=pr,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":9},{"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 pyiron_project=pr,\n)","metadata":{"tags":[],"trusted":true},"outputs":[],"execution_count":10},{"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 pyiron_project=pr,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":11},{"id":"63f29646-3846-4a97-a033-20e9df0ac214","cell_type":"code","source":"workflow_json_filename = \"pyiron_base_nfdi.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"id":"f62111ba-9271-4987-9c7e-3b1c9f9eae7a","cell_type":"code","source":"write_workflow_json(delayed_object=paper_output, file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":13},{"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":14,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":14},{"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":15},{"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":16,"output_type":"execute_result","data":{"text/plain":"NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":1,"model_id":"02c7a6f0732b44d3b1265dd09f0b7bf2"}},"metadata":{}}],"execution_count":16},{"id":"15282ca1-d339-40e7-ad68-8a7613ed08da","cell_type":"code","source":"wg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/04/2025 02:49:20 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_mesh6\n04/04/2025 02:49:22 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|update_task_state]: Task: generate_mesh6, type: PyFunction, finished.\n04/04/2025 02:49:22 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|continue_workgraph]: tasks ready to run: convert_to_xdmf5\n04/04/2025 02:49:24 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|update_task_state]: Task: convert_to_xdmf5, type: PyFunction, finished.\n04/04/2025 02:49:24 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|continue_workgraph]: tasks ready to run: poisson4\n04/04/2025 02:49:28 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|update_task_state]: Task: poisson4, type: PyFunction, finished.\n04/04/2025 02:49:28 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_over_line3\n04/04/2025 02:49:31 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|update_task_state]: Task: plot_over_line3, type: PyFunction, finished.\n04/04/2025 02:49:31 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|continue_workgraph]: tasks ready to run: substitute_macros2\n04/04/2025 02:49:33 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|update_task_state]: Task: substitute_macros2, type: PyFunction, finished.\n04/04/2025 02:49:33 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|continue_workgraph]: tasks ready to run: compile_paper1\n04/04/2025 02:49:36 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|update_task_state]: Task: compile_paper1, type: PyFunction, finished.\n04/04/2025 02:49:36 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/04/2025 02:49:36 PM <3075> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [31|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":17},{"id":"55dc8d12-dfe6-4465-a368-b7e590ae6800","cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"id":"dff46eb8-e0e7-49bb-8c40-0db2df133124","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":18},{"id":"6a189459-84e4-4738-ada1-37ee8c65b2ab","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":19},{"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":20},{"id":"2d87ed45-f5d9-403f-a03a-26be4a47a3ef","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-04 14:49:38,125 INFO Started executing jobs locally\n2025-04-04 14:49:39,097 INFO Starting job - generate_mesh (96c2a02e-82a1-4ec2-8c8f-03aaaaaa2199)\n2025-04-04 14:49:40,737 INFO Finished job - generate_mesh (96c2a02e-82a1-4ec2-8c8f-03aaaaaa2199)\n2025-04-04 14:49:40,738 INFO Starting job - convert_to_xdmf (27e8a0e1-b612-4ab4-8dec-f13a2e92c152)\n2025-04-04 14:49:42,432 INFO Finished job - convert_to_xdmf (27e8a0e1-b612-4ab4-8dec-f13a2e92c152)\n2025-04-04 14:49:42,433 INFO Starting job - poisson (45f843da-fde4-4fc1-8eda-5a6595fa6f53)\n2025-04-04 14:49:45,325 INFO Finished job - poisson (45f843da-fde4-4fc1-8eda-5a6595fa6f53)\n2025-04-04 14:49:45,326 INFO Starting job - plot_over_line (18182edf-93cd-4ee3-b8ec-2babbac189be)\n2025-04-04 14:49:47,301 INFO Finished job - plot_over_line (18182edf-93cd-4ee3-b8ec-2babbac189be)\n2025-04-04 14:49:47,302 INFO Starting job - substitute_macros (b94580b0-329b-4043-bc8e-04dfcc5e8443)\n2025-04-04 14:49:48,572 INFO Finished job - substitute_macros (b94580b0-329b-4043-bc8e-04dfcc5e8443)\n2025-04-04 14:49:48,573 INFO Starting job - compile_paper (173f8ae0-845a-424f-b181-2c73a5cde7df)\n2025-04-04 14:49:51,030 INFO Finished job - compile_paper (173f8ae0-845a-424f-b181-2c73a5cde7df)\n2025-04-04 14:49:51,032 INFO Finished executing jobs locally\n"},{"execution_count":21,"output_type":"execute_result","data":{"text/plain":"{'96c2a02e-82a1-4ec2-8c8f-03aaaaaa2199': {1: Response(output='/home/jovyan/preprocessing/square.msh', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '27e8a0e1-b612-4ab4-8dec-f13a2e92c152': {1: Response(output={'xdmf_file': '/home/jovyan/preprocessing/square.xdmf', 'h5_file': '/home/jovyan/preprocessing/square.h5'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '45f843da-fde4-4fc1-8eda-5a6595fa6f53': {1: Response(output={'numdofs': 357, 'pvd_file': '/home/jovyan/processing/poisson.pvd', 'vtu_file': '/home/jovyan/processing/poisson000000.vtu'}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '18182edf-93cd-4ee3-b8ec-2babbac189be': {1: Response(output='/home/jovyan/postprocessing/plotoverline.csv', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'b94580b0-329b-4043-bc8e-04dfcc5e8443': {1: Response(output='/home/jovyan/postprocessing/macros.tex', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n '173f8ae0-845a-424f-b181-2c73a5cde7df': {1: Response(output='/home/jovyan/postprocessing/paper.pdf', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":21}]} \ No newline at end of file diff --git a/pyiron_base_qe.ipynb b/pyiron_base_qe.ipynb index 13e61e4..9c98b49 100644 --- a/pyiron_base_qe.ipynb +++ b/pyiron_base_qe.ipynb @@ -1,563 +1 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "be2d61b0-0d47-4349-b4b0-1b767c961644", - "metadata": {}, - "source": [ - "# Quantum Espresso Energy Volume Curve Workflow with pyiron_base" - ] - }, - { - "cell_type": "markdown", - "id": "0bad2a57-1bd2-4837-94fe-f8c60e211fae", - "metadata": {}, - "source": [ - "## Define workflow with pyiron_base" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a2ed2608-9e1b-4a81-81cb-5079573ea2d1", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "from pyiron_base import Project, job\n", - "from python_workflow_definition.pyiron_base import write_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b75c2530-9b89-4185-838f-a17e517fa68f", - "metadata": {}, - "outputs": [], - "source": [ - "from quantum_espresso_workflow import (\n", - " calculate_qe as _calculate_qe, \n", - " generate_structures as _generate_structures, \n", - " get_bulk_structure as _get_bulk_structure, \n", - " plot_energy_volume_curve as _plot_energy_volume_curve,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "07a950ca", - "metadata": {}, - "outputs": [], - "source": [ - "workflow_json_filename = \"pyiron_base_qe.json\"" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "208ddfb8-dfda-4227-aa1f-3dc29e34ea82", - "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": 5, - "id": "5071d3a0-7c1f-44c5-85e0-dede1566c10c", - "metadata": {}, - "outputs": [], - "source": [ - "pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "13debfcd-362d-4fd0-a91f-5ab33632fceb", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "cc655495af0844928dc62f4f138acd31", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/17 [00:00" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from aiida import load_profile\n", - "\n", - "load_profile()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "a442fe46-057c-469b-a5e0-173ed4829dfb", - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.aiida import load_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "32fcd4b2-4f0a-442d-b098-827672823796", - "metadata": {}, - "outputs": [], - "source": [ - "wg = load_workflow_json(file_name=workflow_json_filename)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "a80b59bd-fe30-49c6-92ca-35ef2d77a6fb", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "04/01/2025 10:56:19 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure8\n", - "04/01/2025 10:56:20 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_bulk_structure8, type: PyFunction, finished.\n", - "04/01/2025 10:56:21 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict7\n", - "04/01/2025 10:56:22 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict7, type: PyFunction, finished.\n", - "04/01/2025 10:56:22 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:56:41 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n", - "04/01/2025 10:56:42 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n", - "04/01/2025 10:56:42 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures5\n", - "04/01/2025 10:56:44 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: generate_structures5, type: PyFunction, finished.\n", - "04/01/2025 10:56:44 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict4,get_dict10,get_dict12,get_dict14,get_dict16\n", - "04/01/2025 10:56:45 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict4, type: PyFunction, finished.\n", - "04/01/2025 10:56:46 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10,get_dict12,get_dict14,get_dict16,calculate_qe3\n", - "04/01/2025 10:56:47 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n", - "04/01/2025 10:56:48 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict14,get_dict16,calculate_qe3,calculate_qe9\n", - "04/01/2025 10:56:49 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n", - "04/01/2025 10:56:49 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict16,calculate_qe3,calculate_qe9,calculate_qe11\n", - "04/01/2025 10:56:50 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n", - "04/01/2025 10:56:51 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict16,calculate_qe3,calculate_qe9,calculate_qe11,calculate_qe13\n", - "04/01/2025 10:56:52 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict16, type: PyFunction, finished.\n", - "04/01/2025 10:56:53 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe3,calculate_qe9,calculate_qe11,calculate_qe13,calculate_qe15\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:56:57 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:56:57 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe3, type: PyFunction, finished.\n", - "04/01/2025 10:56:58 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe9,calculate_qe11,calculate_qe13,calculate_qe15\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:57:02 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:57:02 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe9, type: PyFunction, finished.\n", - "04/01/2025 10:57:03 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe11,calculate_qe13,calculate_qe15\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:57:07 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:57:08 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe11, type: PyFunction, finished.\n", - "04/01/2025 10:57:08 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe13,calculate_qe15\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:57:14 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:57:14 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe13, type: PyFunction, finished.\n", - "04/01/2025 10:57:15 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe15\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "04/01/2025 10:57:20 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "04/01/2025 10:57:20 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe15, type: PyFunction, finished.\n", - "04/01/2025 10:57:21 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list2,get_list17\n", - "04/01/2025 10:57:22 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_list2, type: PyFunction, finished.\n", - "04/01/2025 10:57:23 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n", - "04/01/2025 10:57:24 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n", - "04/01/2025 10:57:25 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve1\n", - "04/01/2025 10:57:26 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve1, type: PyFunction, finished.\n", - "04/01/2025 10:57:26 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", - "04/01/2025 10:57:28 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|finalize]: Finalize workgraph.\n" - ] - }, - { - "data": { - "image/png": "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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "wg.run()" - ] - }, - { - "cell_type": "markdown", - "id": "c4f5c047-c6da-4b54-9007-415faca7a448", - "metadata": {}, - "source": [ - "## Load Workflow with jobflow" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "b8e3c2ca-2672-4e9d-aada-63344842dbcf", - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.jobflow import load_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "54a24ff6c569094e", - "metadata": {}, - "outputs": [], - "source": [ - "from jobflow.managers.local import run_locally" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "48a27146-7372-40ab-8b02-e2a9283d4748", - "metadata": {}, - "outputs": [], - "source": [ - "flow = load_workflow_json(file_name=workflow_json_filename)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "98fa5694-2cc6-44e9-a6e7-2cc71b4f48ce", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:57:31,434 INFO Started executing jobs locally\n", - "2025-04-01 10:57:31,534 INFO Starting job - get_bulk_structure (c4dbc1c3-08e2-4517-88b1-55b2b14fae2b)\n", - "2025-04-01 10:57:31,539 INFO Finished job - get_bulk_structure (c4dbc1c3-08e2-4517-88b1-55b2b14fae2b)\n", - "2025-04-01 10:57:31,541 INFO Starting job - get_dict (a6e8e886-8bbb-488a-8125-46cdfb4dedb4)\n", - "2025-04-01 10:57:31,545 INFO Finished job - get_dict (a6e8e886-8bbb-488a-8125-46cdfb4dedb4)\n", - "2025-04-01 10:57:31,545 INFO Starting job - calculate_qe (d0d3f8f7-9c1e-4e26-a49a-9637c759bd64)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:57:49,723 INFO Finished job - calculate_qe (d0d3f8f7-9c1e-4e26-a49a-9637c759bd64)\n", - "2025-04-01 10:57:49,724 INFO Starting job - generate_structures (3c77f030-1b28-45dc-934e-d85147676f34)\n", - "2025-04-01 10:57:49,737 INFO Finished job - generate_structures (3c77f030-1b28-45dc-934e-d85147676f34)\n", - "2025-04-01 10:57:49,738 INFO Starting job - get_dict (5baee8fe-01f3-4a49-b589-8eb2547bd61f)\n", - "2025-04-01 10:57:49,741 INFO Finished job - get_dict (5baee8fe-01f3-4a49-b589-8eb2547bd61f)\n", - "2025-04-01 10:57:49,742 INFO Starting job - get_dict (1c0e5563-998a-4adb-8036-3c3f65dc3e4a)\n", - "2025-04-01 10:57:49,744 INFO Finished job - get_dict (1c0e5563-998a-4adb-8036-3c3f65dc3e4a)\n", - "2025-04-01 10:57:49,745 INFO Starting job - get_dict (e5660385-b8ff-4a58-9349-520757d80a7d)\n", - "2025-04-01 10:57:49,748 INFO Finished job - get_dict (e5660385-b8ff-4a58-9349-520757d80a7d)\n", - "2025-04-01 10:57:49,748 INFO Starting job - get_dict (07bf6634-c9b2-4d98-b6db-96147a5e89f7)\n", - "2025-04-01 10:57:49,751 INFO Finished job - get_dict (07bf6634-c9b2-4d98-b6db-96147a5e89f7)\n", - "2025-04-01 10:57:49,751 INFO Starting job - get_dict (dd376f88-1ac0-41e1-8e75-db0cc598a45e)\n", - "2025-04-01 10:57:49,754 INFO Finished job - get_dict (dd376f88-1ac0-41e1-8e75-db0cc598a45e)\n", - "2025-04-01 10:57:49,755 INFO Starting job - calculate_qe (39512b85-df17-48f3-a064-9f322b68a2ac)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:57:53,583 INFO Finished job - calculate_qe (39512b85-df17-48f3-a064-9f322b68a2ac)\n", - "2025-04-01 10:57:53,584 INFO Starting job - calculate_qe (227561a6-47b5-4ba4-bd3f-2e59c6089e0b)\n", - "2025-04-01 10:57:57,547 INFO Finished job - calculate_qe (227561a6-47b5-4ba4-bd3f-2e59c6089e0b)\n", - "2025-04-01 10:57:57,548 INFO Starting job - calculate_qe (ff2920f8-72e0-4b58-8828-d1b30f60fcb1)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:58:02,366 INFO Finished job - calculate_qe (ff2920f8-72e0-4b58-8828-d1b30f60fcb1)\n", - "2025-04-01 10:58:02,367 INFO Starting job - calculate_qe (bbcd53dc-eb58-4567-b727-476d1b9393d3)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:58:06,956 INFO Finished job - calculate_qe (bbcd53dc-eb58-4567-b727-476d1b9393d3)\n", - "2025-04-01 10:58:06,957 INFO Starting job - calculate_qe (8c3828c4-4687-41c0-906f-fc82bba1c17c)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-04-01 10:58:10,586 INFO Finished job - calculate_qe (8c3828c4-4687-41c0-906f-fc82bba1c17c)\n", - "2025-04-01 10:58:10,587 INFO Starting job - get_list (e068c427-b5e7-4507-a707-2de7ed1c1583)\n", - "2025-04-01 10:58:10,594 INFO Finished job - get_list (e068c427-b5e7-4507-a707-2de7ed1c1583)\n", - "2025-04-01 10:58:10,595 INFO Starting job - get_list (fc038980-8d36-46d9-a221-b11dadbec44a)\n", - "2025-04-01 10:58:10,600 INFO Finished job - get_list (fc038980-8d36-46d9-a221-b11dadbec44a)\n", - "2025-04-01 10:58:10,601 INFO Starting job - plot_energy_volume_curve (38549ff7-2e75-43c2-aaf2-15f9f85fd3a6)\n", - "2025-04-01 10:58:10,672 INFO Finished job - plot_energy_volume_curve (38549ff7-2e75-43c2-aaf2-15f9f85fd3a6)\n", - "2025-04-01 10:58:10,673 INFO Finished executing jobs locally\n" - ] - }, - { - "data": { - "text/plain": [ - "{'c4dbc1c3-08e2-4517-88b1-55b2b14fae2b': {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]], \"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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'a6e8e886-8bbb-488a-8125-46cdfb4dedb4': {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]], \"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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'd0d3f8f7-9c1e-4e26-a49a-9637c759bd64': {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.045637407648352, 0.0, 0.0], [0.0, 4.045637407648352, 0.0], [0.0, 0.0, 4.045637407648352]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818703824176, 2.022818703824176], [2.022818703824176, 0.0, 2.022818703824176], [2.022818703824176, 2.022818703824176, 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.9365698416873, 'volume': 66.21568389520257}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '3c77f030-1b28-45dc-934e-d85147676f34': {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.906019971047922, 0.0, 0.0], [0.0, 3.906019971047922, 0.0], [0.0, 0.0, 3.906019971047922]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009985523961, 1.953009985523961], [1.953009985523961, 0.0, 1.953009985523961], [1.953009985523961, 1.953009985523961, 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.977054032769754, 0.0, 0.0], [0.0, 3.977054032769754, 0.0], [0.0, 0.0, 3.977054032769754]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.988527016384877, 1.988527016384877], [1.988527016384877, 0.0, 1.988527016384877], [1.988527016384877, 1.988527016384877, 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.045637407648352, 0.0, 0.0], [0.0, 4.045637407648352, 0.0], [0.0, 0.0, 4.045637407648352]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818703824176, 2.022818703824176], [2.022818703824176, 0.0, 2.022818703824176], [2.022818703824176, 2.022818703824176, 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.111971122127673, 0.0, 0.0], [0.0, 4.111971122127673, 0.0], [0.0, 0.0, 4.111971122127673]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559855610638365, 2.0559855610638365], [2.0559855610638365, 0.0, 2.0559855610638365], [2.0559855610638365, 2.0559855610638365, 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.176231050261839, 0.0, 0.0], [0.0, 4.176231050261839, 0.0], [0.0, 0.0, 4.176231050261839]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881155251309194, 2.0881155251309194], [2.0881155251309194, 0.0, 2.0881155251309194], [2.0881155251309194, 2.0881155251309194, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '5baee8fe-01f3-4a49-b589-8eb2547bd61f': {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.977054032769754, 0.0, 0.0], [0.0, 3.977054032769754, 0.0], [0.0, 0.0, 3.977054032769754]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.988527016384877, 1.988527016384877], [1.988527016384877, 0.0, 1.988527016384877], [1.988527016384877, 1.988527016384877, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '1c0e5563-998a-4adb-8036-3c3f65dc3e4a': {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.045637407648352, 0.0, 0.0], [0.0, 4.045637407648352, 0.0], [0.0, 0.0, 4.045637407648352]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818703824176, 2.022818703824176], [2.022818703824176, 0.0, 2.022818703824176], [2.022818703824176, 2.022818703824176, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'e5660385-b8ff-4a58-9349-520757d80a7d': {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.111971122127673, 0.0, 0.0], [0.0, 4.111971122127673, 0.0], [0.0, 0.0, 4.111971122127673]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559855610638365, 2.0559855610638365], [2.0559855610638365, 0.0, 2.0559855610638365], [2.0559855610638365, 2.0559855610638365, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '07bf6634-c9b2-4d98-b6db-96147a5e89f7': {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.176231050261839, 0.0, 0.0], [0.0, 4.176231050261839, 0.0], [0.0, 0.0, 4.176231050261839]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881155251309194, 2.0881155251309194], [2.0881155251309194, 0.0, 2.0881155251309194], [2.0881155251309194, 2.0881155251309194, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'dd376f88-1ac0-41e1-8e75-db0cc598a45e': {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.906019971047922, 0.0, 0.0], [0.0, 3.906019971047922, 0.0], [0.0, 0.0, 3.906019971047922]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009985523961, 1.953009985523961], [1.953009985523961, 0.0, 1.953009985523961], [1.953009985523961, 1.953009985523961, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '39512b85-df17-48f3-a064-9f322b68a2ac': {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.9770540153862988, 0.0, 0.0], [0.0, 3.9770540153862988, 0.0], [0.0, 0.0, 3.9770540153862988]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270077082742, 1.9885270077082742], [1.9885270077082742, 0.0, 1.9885270077082742], [1.9885270077082742, 1.9885270077082742, 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.9161853618164, 'volume': 62.90489887558233}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '227561a6-47b5-4ba4-bd3f-2e59c6089e0b': {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.045637389965126, 0.0, 0.0], [0.0, 4.045637389965126, 0.0], [0.0, 0.0, 4.045637389965126]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186949583877, 2.0228186949583877], [2.0228186949583877, 0.0, 2.0228186949583877], [2.0228186949583877, 2.0228186949583877, 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.9365678763597, 'volume': 66.21568302692893}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'ff2920f8-72e0-4b58-8828-d1b30f60fcb1': {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.111971104154505, 0.0, 0.0], [0.0, 4.111971104154505, 0.0], [0.0, 0.0, 4.111971104154505]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985552113418, 2.055985552113418], [2.055985552113418, 0.0, 2.055985552113418], [2.055985552113418, 2.055985552113418, 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.9193225358767, 'volume': 69.52646717827525}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'bbcd53dc-eb58-4567-b727-476d1b9393d3': {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.176231032007799, 0.0, 0.0], [0.0, 4.176231032007799, 0.0], [0.0, 0.0, 4.176231032007799]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115515972979, 2.088115515972979], [2.088115515972979, 0.0, 2.088115515972979], [2.088115515972979, 2.088115515972979, 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.8738270284005, 'volume': 72.83725132962194}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '8c3828c4-4687-41c0-906f-fc82bba1c17c': {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.9060199539749543, 0.0, 0.0], [0.0, 3.9060199539749543, 0.0], [0.0, 0.0, 3.9060199539749543]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530099769635174, 1.9530099769635174], [1.9530099769635174, 0.0, 1.9530099769635174], [1.9530099769635174, 1.9530099769635174, 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.8457811122457, 'volume': 59.59411472423595}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'e068c427-b5e7-4507-a707-2de7ed1c1583': {1: Response(output=[-1074.8457811122457, -1074.9161853618164, -1074.9365678763597, -1074.9193225358767, -1074.8738270284005], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " 'fc038980-8d36-46d9-a221-b11dadbec44a': {1: Response(output=[59.59411472423595, 62.90489887558233, 66.21568302692893, 69.52646717827525, 72.83725132962194], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n", - " '38549ff7-2e75-43c2-aaf2-15f9f85fd3a6': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))}}" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "result = run_locally(flow)\n", - "result" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "aiida", - "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.11.0" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} +{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3 (ipykernel)","language":"python"},"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":"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 Project, job\nfrom python_workflow_definition.pyiron_base import write_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":1},{"id":"b75c2530-9b89-4185-838f-a17e517fa68f","cell_type":"code","source":"from quantum_espresso_workflow import (\n calculate_qe as _calculate_qe, \n generate_structures as _generate_structures, \n get_bulk_structure as _get_bulk_structure, \n plot_energy_volume_curve as _plot_energy_volume_curve,\n)","metadata":{"trusted":false},"outputs":[],"execution_count":2},{"id":"07a950ca","cell_type":"code","source":"workflow_json_filename = \"pyiron_base_qe.json\"","metadata":{"trusted":false},"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":false},"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":false},"outputs":[],"execution_count":5},{"id":"13debfcd-362d-4fd0-a91f-5ab33632fceb","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":false},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"cc655495af0844928dc62f4f138acd31","version_major":2,"version_minor":0},"text/plain":" 0%| | 0/17 [00:00"},"execution_count":14,"metadata":{},"output_type":"execute_result"}],"execution_count":14},{"id":"a442fe46-057c-469b-a5e0-173ed4829dfb","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":15},{"id":"32fcd4b2-4f0a-442d-b098-827672823796","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":false},"outputs":[],"execution_count":16},{"id":"a80b59bd-fe30-49c6-92ca-35ef2d77a6fb","cell_type":"code","source":"wg.run()","metadata":{"trusted":false},"outputs":[{"name":"stderr","output_type":"stream","text":"04/01/2025 10:56:19 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure8\n04/01/2025 10:56:20 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_bulk_structure8, type: PyFunction, finished.\n04/01/2025 10:56:21 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict7\n04/01/2025 10:56:22 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict7, type: PyFunction, finished.\n04/01/2025 10:56:22 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe6\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:56:41 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n04/01/2025 10:56:42 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PyFunction, finished.\n04/01/2025 10:56:42 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures5\n04/01/2025 10:56:44 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: generate_structures5, type: PyFunction, finished.\n04/01/2025 10:56:44 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict4,get_dict10,get_dict12,get_dict14,get_dict16\n04/01/2025 10:56:45 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict4, type: PyFunction, finished.\n04/01/2025 10:56:46 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict10,get_dict12,get_dict14,get_dict16,calculate_qe3\n04/01/2025 10:56:47 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict10, type: PyFunction, finished.\n04/01/2025 10:56:48 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict12,get_dict14,get_dict16,calculate_qe3,calculate_qe9\n04/01/2025 10:56:49 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict12, type: PyFunction, finished.\n04/01/2025 10:56:49 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14,get_dict16,calculate_qe3,calculate_qe9,calculate_qe11\n04/01/2025 10:56:50 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PyFunction, finished.\n04/01/2025 10:56:51 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict16,calculate_qe3,calculate_qe9,calculate_qe11,calculate_qe13\n04/01/2025 10:56:52 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_dict16, type: PyFunction, finished.\n04/01/2025 10:56:53 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe3,calculate_qe9,calculate_qe11,calculate_qe13,calculate_qe15\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:56:57 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:56:57 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe3, type: PyFunction, finished.\n04/01/2025 10:56:58 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe9,calculate_qe11,calculate_qe13,calculate_qe15\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:57:02 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:57:02 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe9, type: PyFunction, finished.\n04/01/2025 10:57:03 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe11,calculate_qe13,calculate_qe15\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:57:07 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:57:08 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe11, type: PyFunction, finished.\n04/01/2025 10:57:08 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe13,calculate_qe15\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:57:14 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:57:14 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe13, type: PyFunction, finished.\n04/01/2025 10:57:15 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe15\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n04/01/2025 10:57:20 AM <3368622> aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n04/01/2025 10:57:20 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: calculate_qe15, type: PyFunction, finished.\n04/01/2025 10:57:21 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list2,get_list17\n04/01/2025 10:57:22 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_list2, type: PyFunction, finished.\n04/01/2025 10:57:23 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list17\n04/01/2025 10:57:24 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: get_list17, type: PyFunction, finished.\n04/01/2025 10:57:25 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve1\n04/01/2025 10:57:26 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve1, type: PyFunction, finished.\n04/01/2025 10:57:26 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/01/2025 10:57:28 AM <3368622> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [51282|WorkGraphEngine|finalize]: Finalize workgraph.\n"},{"data":{"image/png":"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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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","text/plain":"
"},"metadata":{},"output_type":"display_data"}],"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":false},"outputs":[],"execution_count":18},{"id":"54a24ff6c569094e","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":false},"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":false},"outputs":[],"execution_count":20},{"id":"98fa5694-2cc6-44e9-a6e7-2cc71b4f48ce","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-01 10:57:31,434 INFO Started executing jobs locally\n2025-04-01 10:57:31,534 INFO Starting job - get_bulk_structure (c4dbc1c3-08e2-4517-88b1-55b2b14fae2b)\n2025-04-01 10:57:31,539 INFO Finished job - get_bulk_structure (c4dbc1c3-08e2-4517-88b1-55b2b14fae2b)\n2025-04-01 10:57:31,541 INFO Starting job - get_dict (a6e8e886-8bbb-488a-8125-46cdfb4dedb4)\n2025-04-01 10:57:31,545 INFO Finished job - get_dict (a6e8e886-8bbb-488a-8125-46cdfb4dedb4)\n2025-04-01 10:57:31,545 INFO Starting job - calculate_qe (d0d3f8f7-9c1e-4e26-a49a-9637c759bd64)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:57:49,723 INFO Finished job - calculate_qe (d0d3f8f7-9c1e-4e26-a49a-9637c759bd64)\n2025-04-01 10:57:49,724 INFO Starting job - generate_structures (3c77f030-1b28-45dc-934e-d85147676f34)\n2025-04-01 10:57:49,737 INFO Finished job - generate_structures (3c77f030-1b28-45dc-934e-d85147676f34)\n2025-04-01 10:57:49,738 INFO Starting job - get_dict (5baee8fe-01f3-4a49-b589-8eb2547bd61f)\n2025-04-01 10:57:49,741 INFO Finished job - get_dict (5baee8fe-01f3-4a49-b589-8eb2547bd61f)\n2025-04-01 10:57:49,742 INFO Starting job - get_dict (1c0e5563-998a-4adb-8036-3c3f65dc3e4a)\n2025-04-01 10:57:49,744 INFO Finished job - get_dict (1c0e5563-998a-4adb-8036-3c3f65dc3e4a)\n2025-04-01 10:57:49,745 INFO Starting job - get_dict (e5660385-b8ff-4a58-9349-520757d80a7d)\n2025-04-01 10:57:49,748 INFO Finished job - get_dict (e5660385-b8ff-4a58-9349-520757d80a7d)\n2025-04-01 10:57:49,748 INFO Starting job - get_dict (07bf6634-c9b2-4d98-b6db-96147a5e89f7)\n2025-04-01 10:57:49,751 INFO Finished job - get_dict (07bf6634-c9b2-4d98-b6db-96147a5e89f7)\n2025-04-01 10:57:49,751 INFO Starting job - get_dict (dd376f88-1ac0-41e1-8e75-db0cc598a45e)\n2025-04-01 10:57:49,754 INFO Finished job - get_dict (dd376f88-1ac0-41e1-8e75-db0cc598a45e)\n2025-04-01 10:57:49,755 INFO Starting job - calculate_qe (39512b85-df17-48f3-a064-9f322b68a2ac)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:57:53,583 INFO Finished job - calculate_qe (39512b85-df17-48f3-a064-9f322b68a2ac)\n2025-04-01 10:57:53,584 INFO Starting job - calculate_qe (227561a6-47b5-4ba4-bd3f-2e59c6089e0b)\n2025-04-01 10:57:57,547 INFO Finished job - calculate_qe (227561a6-47b5-4ba4-bd3f-2e59c6089e0b)\n2025-04-01 10:57:57,548 INFO Starting job - calculate_qe (ff2920f8-72e0-4b58-8828-d1b30f60fcb1)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:58:02,366 INFO Finished job - calculate_qe (ff2920f8-72e0-4b58-8828-d1b30f60fcb1)\n2025-04-01 10:58:02,367 INFO Starting job - calculate_qe (bbcd53dc-eb58-4567-b727-476d1b9393d3)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:58:06,956 INFO Finished job - calculate_qe (bbcd53dc-eb58-4567-b727-476d1b9393d3)\n2025-04-01 10:58:06,957 INFO Starting job - calculate_qe (8c3828c4-4687-41c0-906f-fc82bba1c17c)\n"},{"name":"stderr","output_type":"stream","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"2025-04-01 10:58:10,586 INFO Finished job - calculate_qe (8c3828c4-4687-41c0-906f-fc82bba1c17c)\n2025-04-01 10:58:10,587 INFO Starting job - get_list (e068c427-b5e7-4507-a707-2de7ed1c1583)\n2025-04-01 10:58:10,594 INFO Finished job - get_list (e068c427-b5e7-4507-a707-2de7ed1c1583)\n2025-04-01 10:58:10,595 INFO Starting job - get_list (fc038980-8d36-46d9-a221-b11dadbec44a)\n2025-04-01 10:58:10,600 INFO Finished job - get_list (fc038980-8d36-46d9-a221-b11dadbec44a)\n2025-04-01 10:58:10,601 INFO Starting job - plot_energy_volume_curve (38549ff7-2e75-43c2-aaf2-15f9f85fd3a6)\n2025-04-01 10:58:10,672 INFO Finished job - plot_energy_volume_curve (38549ff7-2e75-43c2-aaf2-15f9f85fd3a6)\n2025-04-01 10:58:10,673 INFO Finished executing jobs locally\n"},{"data":{"text/plain":"{'c4dbc1c3-08e2-4517-88b1-55b2b14fae2b': {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]], \"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/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'a6e8e886-8bbb-488a-8125-46cdfb4dedb4': {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]], \"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/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'd0d3f8f7-9c1e-4e26-a49a-9637c759bd64': {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.045637407648352, 0.0, 0.0], [0.0, 4.045637407648352, 0.0], [0.0, 0.0, 4.045637407648352]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818703824176, 2.022818703824176], [2.022818703824176, 0.0, 2.022818703824176], [2.022818703824176, 2.022818703824176, 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.9365698416873, 'volume': 66.21568389520257}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n '3c77f030-1b28-45dc-934e-d85147676f34': {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.906019971047922, 0.0, 0.0], [0.0, 3.906019971047922, 0.0], [0.0, 0.0, 3.906019971047922]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009985523961, 1.953009985523961], [1.953009985523961, 0.0, 1.953009985523961], [1.953009985523961, 1.953009985523961, 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.977054032769754, 0.0, 0.0], [0.0, 3.977054032769754, 0.0], [0.0, 0.0, 3.977054032769754]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.988527016384877, 1.988527016384877], [1.988527016384877, 0.0, 1.988527016384877], [1.988527016384877, 1.988527016384877, 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.045637407648352, 0.0, 0.0], [0.0, 4.045637407648352, 0.0], [0.0, 0.0, 4.045637407648352]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818703824176, 2.022818703824176], [2.022818703824176, 0.0, 2.022818703824176], [2.022818703824176, 2.022818703824176, 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.111971122127673, 0.0, 0.0], [0.0, 4.111971122127673, 0.0], [0.0, 0.0, 4.111971122127673]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559855610638365, 2.0559855610638365], [2.0559855610638365, 0.0, 2.0559855610638365], [2.0559855610638365, 2.0559855610638365, 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.176231050261839, 0.0, 0.0], [0.0, 4.176231050261839, 0.0], [0.0, 0.0, 4.176231050261839]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881155251309194, 2.0881155251309194], [2.0881155251309194, 0.0, 2.0881155251309194], [2.0881155251309194, 2.0881155251309194, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n '5baee8fe-01f3-4a49-b589-8eb2547bd61f': {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.977054032769754, 0.0, 0.0], [0.0, 3.977054032769754, 0.0], [0.0, 0.0, 3.977054032769754]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.988527016384877, 1.988527016384877], [1.988527016384877, 0.0, 1.988527016384877], [1.988527016384877, 1.988527016384877, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n '1c0e5563-998a-4adb-8036-3c3f65dc3e4a': {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.045637407648352, 0.0, 0.0], [0.0, 4.045637407648352, 0.0], [0.0, 0.0, 4.045637407648352]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818703824176, 2.022818703824176], [2.022818703824176, 0.0, 2.022818703824176], [2.022818703824176, 2.022818703824176, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'e5660385-b8ff-4a58-9349-520757d80a7d': {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.111971122127673, 0.0, 0.0], [0.0, 4.111971122127673, 0.0], [0.0, 0.0, 4.111971122127673]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559855610638365, 2.0559855610638365], [2.0559855610638365, 0.0, 2.0559855610638365], [2.0559855610638365, 2.0559855610638365, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n '07bf6634-c9b2-4d98-b6db-96147a5e89f7': {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.176231050261839, 0.0, 0.0], [0.0, 4.176231050261839, 0.0], [0.0, 0.0, 4.176231050261839]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881155251309194, 2.0881155251309194], [2.0881155251309194, 0.0, 2.0881155251309194], [2.0881155251309194, 2.0881155251309194, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'dd376f88-1ac0-41e1-8e75-db0cc598a45e': {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.906019971047922, 0.0, 0.0], [0.0, 3.906019971047922, 0.0], [0.0, 0.0, 3.906019971047922]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009985523961, 1.953009985523961], [1.953009985523961, 0.0, 1.953009985523961], [1.953009985523961, 1.953009985523961, 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/wang_x3/repos/superstar54/python-workflow-definition'))},\n '39512b85-df17-48f3-a064-9f322b68a2ac': {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.9770540153862988, 0.0, 0.0], [0.0, 3.9770540153862988, 0.0], [0.0, 0.0, 3.9770540153862988]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270077082742, 1.9885270077082742], [1.9885270077082742, 0.0, 1.9885270077082742], [1.9885270077082742, 1.9885270077082742, 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.9161853618164, 'volume': 62.90489887558233}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n '227561a6-47b5-4ba4-bd3f-2e59c6089e0b': {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.045637389965126, 0.0, 0.0], [0.0, 4.045637389965126, 0.0], [0.0, 0.0, 4.045637389965126]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186949583877, 2.0228186949583877], [2.0228186949583877, 0.0, 2.0228186949583877], [2.0228186949583877, 2.0228186949583877, 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.9365678763597, 'volume': 66.21568302692893}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'ff2920f8-72e0-4b58-8828-d1b30f60fcb1': {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.111971104154505, 0.0, 0.0], [0.0, 4.111971104154505, 0.0], [0.0, 0.0, 4.111971104154505]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.055985552113418, 2.055985552113418], [2.055985552113418, 0.0, 2.055985552113418], [2.055985552113418, 2.055985552113418, 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.9193225358767, 'volume': 69.52646717827525}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'bbcd53dc-eb58-4567-b727-476d1b9393d3': {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.176231032007799, 0.0, 0.0], [0.0, 4.176231032007799, 0.0], [0.0, 0.0, 4.176231032007799]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115515972979, 2.088115515972979], [2.088115515972979, 0.0, 2.088115515972979], [2.088115515972979, 2.088115515972979, 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.8738270284005, 'volume': 72.83725132962194}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n '8c3828c4-4687-41c0-906f-fc82bba1c17c': {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.9060199539749543, 0.0, 0.0], [0.0, 3.9060199539749543, 0.0], [0.0, 0.0, 3.9060199539749543]], \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530099769635174, 1.9530099769635174], [1.9530099769635174, 0.0, 1.9530099769635174], [1.9530099769635174, 1.9530099769635174, 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.8457811122457, 'volume': 59.59411472423595}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'e068c427-b5e7-4507-a707-2de7ed1c1583': {1: Response(output=[-1074.8457811122457, -1074.9161853618164, -1074.9365678763597, -1074.9193225358767, -1074.8738270284005], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n 'fc038980-8d36-46d9-a221-b11dadbec44a': {1: Response(output=[59.59411472423595, 62.90489887558233, 66.21568302692893, 69.52646717827525, 72.83725132962194], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))},\n '38549ff7-2e75-43c2-aaf2-15f9f85fd3a6': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/wang_x3/repos/superstar54/python-workflow-definition'))}}"},"execution_count":21,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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q9/+SGVJTNeqkQ99WzbAZpTeYFdERBxLRl4hT39dOv32wDXNa92dGVSWpEY4u4zAZ5sSyCssNjeMiIhclheW7OF4dgEtAr14/KbWZsepcipLUiPc0KYhYfU9ycovZvFviWbHERGRS7RiTwrfbE/CaoE5Y66qVdNvZ6ksSY1gtVq498y5S/OjDmOzaUULEZGa7lRuIc98vRuAh65rwVUh/uYGqiYqS1Jj3Na1Kd5uzsQdz2X9wRNmxxERkYt4fskeTuQU0KqhN4/1b2V2nGqjsiQ1ho+7C7d11TICIiKOYPnuZJbsSMLJamH26E64Ode+6bezVJakRhnfOwyLBdbGHufQ8Ryz44iIyHmk5xby7Del028PX9ecTrV0+u0slSWpUcIaeHFjm4YALNgQb24YERE5r+e+3c2JnELaNPLhL/1q7/TbWSpLUuOMP7OMwJdbj5GVX2RuGBERKef7Xcks3ZlcJ6bfzlJZkhqnb8sGtGroTW5hCYu2HDM7joiInHEip6Bs+u2R61vQoamfyYnso1JlKTc3t6pziJSxWCxlo0sLNsRTomUERERqhOe+3U16biERQT48emPtn347q1JlqVGjRtx3332sX7++qvOIADCycxP8PFxISM9jTUya2XFEROq8pTuT+H5XCs5npt9cnevO5FSlPunHH39Meno6N954I61bt2bWrFkkJSVVdTapwzxdnbnj6hAA5m/QMgIiImY6nl3AjLPTbze0pH2TujH9dlalytKIESP45ptvSExM5OGHH+aTTz6hWbNmDB06lK+++oriYt3bS67cuF7NsFog6uBJYlOyzY4jIlInGYbBjG92cyqviMjGvky6oaXZkezuisbQAgMDeeKJJ9i5cyd/+9vfWL16NbfddhvBwcE899xz5OXlVVVOqYOaBngysF0QoNElERGzfLczmeV7zk6/daxT029nXdEnTk1N5Y033qBt27ZMmzaN2267jR9//JE5c+bw1VdfMWLEiCqKKXXVhD7hAHz1WyKncgtNTiMiUrekZefz3Lel02+TbmxJu+C6Nf12lnNldvrqq6+YN28eK1asoG3btjzyyCPcfffd+Pv7l72md+/eREZGVlVOqaOuDgugbWNf9iZn8dnmo/zp+hZmRxIRqRMMw+DZr3eTkVdE28a+/LkOTr+dVamRpQkTJhAcHExUVBTbt29n0qRJ5YoS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","text/plain":"
"},"metadata":{},"output_type":"display_data"}],"execution_count":21}]} \ No newline at end of file diff --git a/pyiron_base_simple.ipynb b/pyiron_base_simple.ipynb index 60246da..090c80d 100644 --- a/pyiron_base_simple.ipynb +++ b/pyiron_base_simple.ipynb @@ -1 +1 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"c39b76fb-259f-4e16-a44d-02a295c82386","cell_type":"markdown","source":"# Simple Workflow with pyiron_base","metadata":{}},{"id":"3638419b-a0cb-49e2-b157-7fbb1acde90f","cell_type":"markdown","source":"## Define workflow with pyiron_base","metadata":{}},{"id":"b4a78447-e87c-4fb4-8d17-d9a280eb7254","cell_type":"code","source":"from pyiron_base import Project, job","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"06c2bd9e-b2ac-4b88-9158-fa37331c3418","cell_type":"code","source":"from python_workflow_definition.pyiron_base import write_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"fb847d49-7bf9-4839-9b99-c116d1b0e9ee","cell_type":"code","source":"from simple_workflow import (\n add_x_and_y as _add_x_and_y, \n add_x_and_y_and_z as _add_x_and_y_and_z,\n)","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"8f95244e","cell_type":"code","source":"workflow_json_filename = \"pyiron_base_simple.json\"","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"07598344-0f75-433b-8902-bea21a42088c","cell_type":"code","source":"add_x_and_y = job(_add_x_and_y, output_key_lst=[\"x\", \"y\", \"z\"])\nadd_x_and_y_and_z = job(_add_x_and_y_and_z)","metadata":{"trusted":true},"outputs":[],"execution_count":5},{"id":"ecef1ed5-a8d3-48c3-9e01-4a40e55c1153","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":" 0%| | 0/2 [00:00"},"metadata":{}}],"execution_count":11},{"id":"68a56b32-9f99-43d7-aaee-0c1cd9522681","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":12},{"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":"dcfa2451385b4eb2b9204f7e196eeda4"}},"metadata":{}}],"execution_count":13},{"id":"cf80267d-c2b0-4236-bf1d-a57596985fc1","cell_type":"code","source":"\nwg.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"04/02/2025 02:36:58 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y2\n04/02/2025 02:36:59 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: add_x_and_y2, type: PyFunction, finished.\n04/02/2025 02:36:59 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y_and_z1\n04/02/2025 02:37:00 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: add_x_and_y_and_z1, type: PyFunction, finished.\n04/02/2025 02:37:00 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/02/2025 02:37:00 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":14},{"id":"0c3503e1-0a32-40e1-845d-3fd9ec3c4c19","cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"id":"4abb0481-8e38-479d-ae61-6c46d091653e","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":15},{"id":"8253dd7c283bf3f7","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":16},{"id":"4b45e83b-945f-48c5-8e20-9df0ce0a14a1","cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":true},"outputs":[],"execution_count":17},{"id":"8665c39c-220c-4982-b738-c31f6460530f","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-02 14:37:00,813 INFO Started executing jobs locally\n2025-04-02 14:37:01,234 INFO Starting job - add_x_and_y (3cb63b3e-289b-4c08-a9e4-0ba051181adb)\n2025-04-02 14:37:01,238 INFO Finished job - add_x_and_y (3cb63b3e-289b-4c08-a9e4-0ba051181adb)\n2025-04-02 14:37:01,239 INFO Starting job - add_x_and_y_and_z (bff452ed-d3b3-4d6c-8162-feaa188b5660)\n2025-04-02 14:37:01,242 INFO Finished job - add_x_and_y_and_z (bff452ed-d3b3-4d6c-8162-feaa188b5660)\n2025-04-02 14:37:01,243 INFO Finished executing jobs locally\n"},{"execution_count":18,"output_type":"execute_result","data":{"text/plain":"{'3cb63b3e-289b-4c08-a9e4-0ba051181adb': {1: Response(output={'x': 1, 'y': 2, 'z': 3}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'bff452ed-d3b3-4d6c-8162-feaa188b5660': {1: Response(output=6, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":18},{"id":"cf76f305-24de-45a7-be8e-cfe45cd6458e","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"c39b76fb-259f-4e16-a44d-02a295c82386","cell_type":"markdown","source":"# pyiron","metadata":{}},{"id":"3638419b-a0cb-49e2-b157-7fbb1acde90f","cell_type":"markdown","source":"## Define workflow with pyiron_base","metadata":{}},{"id":"b4a78447-e87c-4fb4-8d17-d9a280eb7254","cell_type":"code","source":"from pyiron_base import Project, job","metadata":{"trusted":false},"outputs":[],"execution_count":1},{"id":"06c2bd9e-b2ac-4b88-9158-fa37331c3418","cell_type":"code","source":"from python_workflow_definition.pyiron_base import write_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":2},{"id":"fb847d49-7bf9-4839-9b99-c116d1b0e9ee","cell_type":"code","source":"from simple_workflow import (\n add_x_and_y as _add_x_and_y, \n add_x_and_y_and_z as _add_x_and_y_and_z,\n)","metadata":{"trusted":false},"outputs":[],"execution_count":3},{"id":"8f95244e","cell_type":"code","source":"workflow_json_filename = \"pyiron_base_simple.json\"","metadata":{"trusted":false},"outputs":[],"execution_count":4},{"id":"07598344-0f75-433b-8902-bea21a42088c","cell_type":"code","source":"add_x_and_y = job(_add_x_and_y, output_key_lst=[\"x\", \"y\", \"z\"])\nadd_x_and_y_and_z = job(_add_x_and_y_and_z)","metadata":{"trusted":false},"outputs":[],"execution_count":5},{"id":"ecef1ed5-a8d3-48c3-9e01-4a40e55c1153","cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":false},"outputs":[{"output_type":"display_data","data":{"text/plain":" 0%| | 0/2 [00:00"},"metadata":{}}],"execution_count":11},{"id":"68a56b32-9f99-43d7-aaee-0c1cd9522681","cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json","metadata":{"trusted":false},"outputs":[],"execution_count":12},{"id":"8f2a621d-b533-4ddd-8bcd-c22db2f922ec","cell_type":"code","source":"wg = load_workflow_json(file_name=workflow_json_filename)\nwg","metadata":{"trusted":false},"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":"dcfa2451385b4eb2b9204f7e196eeda4"}},"metadata":{}}],"execution_count":13},{"id":"cf80267d-c2b0-4236-bf1d-a57596985fc1","cell_type":"code","source":"\nwg.run()","metadata":{"trusted":false},"outputs":[{"name":"stderr","output_type":"stream","text":"04/02/2025 02:36:58 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y2\n04/02/2025 02:36:59 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: add_x_and_y2, type: PyFunction, finished.\n04/02/2025 02:36:59 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y_and_z1\n04/02/2025 02:37:00 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|update_task_state]: Task: add_x_and_y_and_z1, type: PyFunction, finished.\n04/02/2025 02:37:00 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n04/02/2025 02:37:00 PM <248> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|finalize]: Finalize workgraph.\n"}],"execution_count":14},{"id":"0c3503e1-0a32-40e1-845d-3fd9ec3c4c19","cell_type":"markdown","source":"## Load Workflow with jobflow","metadata":{}},{"id":"4abb0481-8e38-479d-ae61-6c46d091653e","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":false},"outputs":[{"name":"stderr","output_type":"stream","text":"/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"cipher\": algorithms.TripleDES,\n/srv/conda/envs/notebook/lib/python3.12/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.\n \"class\": algorithms.TripleDES,\n"}],"execution_count":15},{"id":"8253dd7c283bf3f7","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":false},"outputs":[],"execution_count":16},{"id":"4b45e83b-945f-48c5-8e20-9df0ce0a14a1","cell_type":"code","source":"flow = load_workflow_json(file_name=workflow_json_filename)","metadata":{"trusted":false},"outputs":[],"execution_count":17},{"id":"8665c39c-220c-4982-b738-c31f6460530f","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-04-02 14:37:00,813 INFO Started executing jobs locally\n2025-04-02 14:37:01,234 INFO Starting job - add_x_and_y (3cb63b3e-289b-4c08-a9e4-0ba051181adb)\n2025-04-02 14:37:01,238 INFO Finished job - add_x_and_y (3cb63b3e-289b-4c08-a9e4-0ba051181adb)\n2025-04-02 14:37:01,239 INFO Starting job - add_x_and_y_and_z (bff452ed-d3b3-4d6c-8162-feaa188b5660)\n2025-04-02 14:37:01,242 INFO Finished job - add_x_and_y_and_z (bff452ed-d3b3-4d6c-8162-feaa188b5660)\n2025-04-02 14:37:01,243 INFO Finished executing jobs locally\n"},{"execution_count":18,"output_type":"execute_result","data":{"text/plain":"{'3cb63b3e-289b-4c08-a9e4-0ba051181adb': {1: Response(output={'x': 1, 'y': 2, 'z': 3}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))},\n 'bff452ed-d3b3-4d6c-8162-feaa188b5660': {1: Response(output=6, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jovyan'))}}"},"metadata":{}}],"execution_count":18},{"id":"cf76f305-24de-45a7-be8e-cfe45cd6458e","cell_type":"code","source":"","metadata":{"trusted":false},"outputs":[],"execution_count":null}]} \ No newline at end of file From d5105deaf00458e6c119645f4b42043a4cfe484e Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 4 Apr 2025 17:20:24 +0200 Subject: [PATCH 2/2] fixes --- .github/workflows/book.yml | 25 ------------------------- .github/workflows/pipeline.yml | 22 +++++++++++++++++++++- book/{config.yml => _config.yml} | 0 3 files changed, 21 insertions(+), 26 deletions(-) delete mode 100644 .github/workflows/book.yml rename book/{config.yml => _config.yml} (100%) diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml deleted file mode 100644 index 2d606b2..0000000 --- a/.github/workflows/book.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Jupyterbook - -on: - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: conda-incubator/setup-miniconda@v3 - with: - auto-update-conda: true - python-version: "3.12" - environment-file: book/environment.yml - auto-activate-base: false - - name: Install Jupyterbook - shell: bash -l {0} - run: | - cp book/_config.yml . - cp book/_toc.yml . - cp book/*.md . - jupyter-book build . --path-output public - - run: mv public/_build/html public_html - - run: touch public_html/.nojekyll \ No newline at end of file diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 48a3b98..1ace8ce 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -89,4 +89,24 @@ jobs: papermill aiida_simple.ipynb aiida_simple_out.ipynb -k "python3" papermill jobflow_simple.ipynb jobflow_simple_out.ipynb -k "python3" papermill pyiron_base_simple.ipynb pyiron_base_simple_out.ipynb -k "python3" - papermill universal_workflow_simple.ipynb universal_workflow_simple_out.ipynb -k "python3" \ No newline at end of file + papermill universal_workflow_simple.ipynb universal_workflow_simple_out.ipynb -k "python3" + + book: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + python-version: "3.12" + environment-file: book/environment.yml + auto-activate-base: false + - name: Install Jupyterbook + shell: bash -l {0} + run: | + cp book/_config.yml . + cp book/_toc.yml . + cp book/*.md . + jupyter-book build . --path-output public + - run: mv public/_build/html public_html + - run: touch public_html/.nojekyll \ No newline at end of file diff --git a/book/config.yml b/book/_config.yml similarity index 100% rename from book/config.yml rename to book/_config.yml