From 8ddc7ae7cd9ef25ef5c39679402bbb27f94ac175 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Mon, 24 Mar 2025 11:37:16 +0100 Subject: [PATCH 1/2] Reduce number of notebooks --- .github/workflows/aiida.yml | 4 - .github/workflows/jobflow.yml | 4 - .../workflows/{executorlib.yml => load.yml} | 12 +- .github/workflows/pyiron.yml | 4 - .github/workflows/python.yml | 29 - README.md | 34 +- universal_qe_to_aiida.ipynb | 675 ------------------ universal_qe_to_executorlib.ipynb | 1 - universal_qe_to_jobflow.ipynb | 196 ----- universal_qe_to_pyiron_base.ipynb | 1 - universal_qe_to_python.ipynb | 45 -- universal_simple_to_aiida.ipynb | 119 --- universal_simple_to_executorlib.ipynb | 1 - universal_simple_to_jobflow.ipynb | 1 - universal_simple_to_pyiron_base.ipynb | 1 - universal_simple_to_python.ipynb | 45 -- universal_workflow_qe.ipynb | 1 + universal_workflow_simple.ipynb | 1 + 18 files changed, 23 insertions(+), 1151 deletions(-) rename .github/workflows/{executorlib.yml => load.yml} (64%) delete mode 100644 .github/workflows/python.yml delete mode 100644 universal_qe_to_aiida.ipynb delete mode 100644 universal_qe_to_executorlib.ipynb delete mode 100644 universal_qe_to_jobflow.ipynb delete mode 100644 universal_qe_to_pyiron_base.ipynb delete mode 100644 universal_qe_to_python.ipynb delete mode 100644 universal_simple_to_aiida.ipynb delete mode 100644 universal_simple_to_executorlib.ipynb delete mode 100644 universal_simple_to_jobflow.ipynb delete mode 100644 universal_simple_to_pyiron_base.ipynb delete mode 100644 universal_simple_to_python.ipynb create mode 100644 universal_workflow_qe.ipynb create mode 100644 universal_workflow_simple.ipynb diff --git a/.github/workflows/aiida.yml b/.github/workflows/aiida.yml index 45e698f..e269ed6 100644 --- a/.github/workflows/aiida.yml +++ b/.github/workflows/aiida.yml @@ -29,9 +29,5 @@ jobs: shell: bash -l {0} run: | export ESPRESSO_PSEUDO=$(pwd)/espresso/pseudo - - papermill universal_simple_to_aiida.ipynb universal_simple_to_aiida_out.ipynb -k "python3" - papermill universal_qe_to_aiida.ipynb universal_qe_to_aiida_out.ipynb -k "python3" - papermill aiida_simple.ipynb aiida_simple_out.ipynb -k "python3" papermill aiida_qe.ipynb aiida_qe_out.ipynb -k "python3" diff --git a/.github/workflows/jobflow.yml b/.github/workflows/jobflow.yml index a5123ed..bc9a53c 100644 --- a/.github/workflows/jobflow.yml +++ b/.github/workflows/jobflow.yml @@ -29,9 +29,5 @@ jobs: shell: bash -l {0} run: | export ESPRESSO_PSEUDO=$(pwd)/espresso/pseudo - - papermill universal_simple_to_jobflow.ipynb universal_simple_to_jobflow_out.ipynb -k "python3" - papermill universal_qe_to_jobflow.ipynb universal_qe_to_jobflow_out.ipynb -k "python3" - papermill jobflow_simple.ipynb jobflow_simple_out.ipynb -k "python3" papermill jobflow_qe.ipynb jobflow_qe_out.ipynb -k "python3" \ No newline at end of file diff --git a/.github/workflows/executorlib.yml b/.github/workflows/load.yml similarity index 64% rename from .github/workflows/executorlib.yml rename to .github/workflows/load.yml index b9eb80a..ab550cd 100644 --- a/.github/workflows/executorlib.yml +++ b/.github/workflows/load.yml @@ -1,4 +1,4 @@ -name: executorlib +name: universal on: push: @@ -18,12 +18,16 @@ jobs: python-version: "3.12" environment-file: environment.yml auto-activate-base: false - - name: Tests + - name: Installation and setup shell: bash -l {0} run: | pip install -e qe_xml_parser pip install -e python_workflow_definition conda install -c conda-forge jupyter papermill + verdi presto --profile-name pwd + - name: Tests + shell: bash -l {0} + run: | export ESPRESSO_PSEUDO=$(pwd)/espresso/pseudo - papermill universal_simple_to_executorlib.ipynb universal_simple_to_executorlib_out.ipynb -k "python3" - papermill universal_qe_to_executorlib.ipynb universal_qe_to_executorlib_out.ipynb -k "python3" + papermill universal_workflow_simple.ipynb universal_workflow_simple_out.ipynb -k "python3" + papermill universal_workflow_qe.ipynb universal_workflow_qe_out.ipynb -k "python3" diff --git a/.github/workflows/pyiron.yml b/.github/workflows/pyiron.yml index 79d3805..808e152 100644 --- a/.github/workflows/pyiron.yml +++ b/.github/workflows/pyiron.yml @@ -29,9 +29,5 @@ jobs: shell: bash -l {0} run: | export ESPRESSO_PSEUDO=$(pwd)/espresso/pseudo - - papermill universal_simple_to_pyiron_base.ipynb universal_simple_to_pyiron_base_out.ipynb -k "python3" - papermill universal_qe_to_pyiron_base.ipynb universal_qe_to_pyiron_base_out.ipynb -k "python3" - papermill pyiron_base_simple.ipynb pyiron_base_simple_out.ipynb -k "python3" papermill pyiron_base_qe.ipynb pyiron_base_qe_out.ipynb -k "python3" diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml deleted file mode 100644 index 9089187..0000000 --- a/.github/workflows/python.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: python - -on: - push: - branches: [ main ] - 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: environment.yml - auto-activate-base: false - - name: Tests - shell: bash -l {0} - run: | - pip install -e qe_xml_parser - pip install -e python_workflow_definition - conda install -c conda-forge jupyter papermill - export ESPRESSO_PSEUDO=$(pwd)/espresso/pseudo - papermill universal_simple_to_python.ipynb universal_simple_to_python_out.ipynb -k "python3" - papermill universal_qe_to_python.ipynb universal_qe_to_python_out.ipynb -k "python3" diff --git a/README.md b/README.md index 3aff042..a5c01fe 100644 --- a/README.md +++ b/README.md @@ -58,31 +58,23 @@ As the workflow does not require any additional resources, the `environment.yml` The corresponding Jupyter notebooks demonstrate this functionality: -| Example | Explanation | -|--------------------------------------------------------------------------------|------------------------------------------------------------------------------| -| [aiida_simple.ipynb](aiida_simple.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | -| [jobflow_simple.ipynb](jobflow_simple.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | -| [pyiron_base_simple.ipynb](pyiron_base_simple.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | -| [universal_simple_to_aiida.ipynb](universal_simple_to_aiida.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida. | -| [universal_simple_to_jobflow.ipynb](universal_simple_to_jobflow.ipynb) | Execute workflow defined in the Python Workflow Definition with jobflow. | -| [universal_simple_to_pyiron_base.ipynb](universal_simple_to_pyiron_base.ipynb) | Execute workflow defined in the Python Workflow Definition with pyrion_base. | -| [universal_simple_to_python.ipynb](universal_simple_to_python.ipynb) | Execute workflow defined in the Python Workflow Definition with Python. | -| [universal_simple_to_executorlib.ipynb](universal_simple_to_executorlib.ipynb) | Execute workflow defined in the Python Workflow Definition with executorlib. | +| Example | Explanation | +|--------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| +| [aiida_simple.ipynb](aiida_simple.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | +| [jobflow_simple.ipynb](jobflow_simple.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | +| [pyiron_base_simple.ipynb](pyiron_base_simple.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | +| [universal_workflow_simple.ipynb](universal_workflow_simple.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | ### Quantum Espresso Workflow The second workflow example is the calculation of an energy volume curve with Quantum Espresso. In the first step the -initial structure is relaxed, afterwards it is strained and the total energy is calculated. +initial structure is relaxed, afterward it is strained and the total energy is calculated. * [quantum_espresso_workflow.py](quantum_espresso_workflow.py) Python functions * [workflow_qe.json](workflow_qe.json) Workflow definition in the Python Workflow Definition. * [environment.yml](environment.yml) Conda environment -| Example | Explanation | -|------------------------------------------------------------------------|------------------------------------------------------------------------------| -| [aiida_qe.ipynb](aiida_qe.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | -| [jobflow_qe.ipynb](jobflow_qe.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | -| [pyiron_base_qe.ipynb](pyiron_base_qe.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | -| [universal_qe_to_aiida.ipynb](universal_qe_to_aiida.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida. | -| [universal_qe_to_jobflow.ipynb](universal_qe_to_jobflow.ipynb) | Execute workflow defined in the Python Workflow Definition with jobflow. | -| [universal_qe_to_pyiron_base.ipynb](universal_qe_to_pyiron_base.ipynb) | Execute workflow defined in the Python Workflow Definition with pyrion_base. | -| [universal_qe_to_python.ipynb](universal_qe_to_python.ipynb) | Execute workflow defined in the Python Workflow Definition with Python. | -| [universal_qe_to_executorlib.ipynb](universal_qe_to_executorlib.ipynb) | Execute workflow defined in the Python Workflow Definition with executorlib. | \ No newline at end of file +| Example | Explanation | +|------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| +| [aiida_qe.ipynb](aiida_qe.ipynb) | Define Workflow with aiida and execute it with jobflow and pyiron_base. | +| [jobflow_qe.ipynb](jobflow_qe.ipynb) | Define Workflow with jobflow and execute it with aiida and pyiron_base. | +| [pyiron_base_qe.ipynb](pyiron_base_qe.ipynb) | Define Workflow with pyiron_base and execute it with aiida and jobflow. | +| [universal_workflow_qe.ipynb](universal_workflow_qe.ipynb) | Execute workflow defined in the Python Workflow Definition with aiida, executorlib, jobflow, pyiron_base and pure Python. | \ No newline at end of file diff --git a/universal_qe_to_aiida.ipynb b/universal_qe_to_aiida.ipynb deleted file mode 100644 index d63d25f..0000000 --- a/universal_qe_to_aiida.ipynb +++ /dev/null @@ -1,675 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Profile" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from python_workflow_definition.aiida import load_workflow_json\n", - "from aiida import load_profile\n", - "load_profile()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wg = load_workflow_json(file_name='workflow_qe.json')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "392da344802a414b86a03e1fce82369c", - "version_major": 2, - "version_minor": 1 - }, - "text/plain": [ - "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wg" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:43:53 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:43:54 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: pickle_node10,pickle_node11,pickle_node12,pickle_node13,pickle_node15,pickle_node16,pickle_node17,pickle_node18,pickle_node19,pickle_node20,pickle_node22,pickle_node23,pickle_node25,pickle_node27,pickle_node29\n", - "03/21/2025 01:43:54 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node10, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 'Al'}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:43:56 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node11, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 4.05}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:43:58 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node12, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': True}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:43:59 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node13, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 'mini'}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:01 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node15, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:03 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node16, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': [3, 3, 3]}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:05 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node17, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 'vc-relax'}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:06 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node18, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 0.02}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:08 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node19, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': [0.9, 0.95, 1.0, 1.05, 1.1]}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:10 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node20, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 'strain_0'}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:11 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node22, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 'scf'}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:13 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node23, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 'strain_1'}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:15 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node25, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 'strain_2'}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:16 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node27, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 'strain_3'}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:18 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: pickle_node29, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'value': 'strain_4'}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:44:22 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14133, 14141, 14149, 14157, 14165, 14173, 14181, 14189, 14197, 14205, 14213, 14221, 14229, 14237, 14245\n", - "03/21/2025 01:44:47 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node10 finished.\n", - "03/21/2025 01:44:48 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node11 finished.\n", - "03/21/2025 01:44:49 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node12 finished.\n", - "03/21/2025 01:44:50 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node13 finished.\n", - "03/21/2025 01:44:51 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node15 finished.\n", - "03/21/2025 01:44:52 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node16 finished.\n", - "03/21/2025 01:44:53 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node17 finished.\n", - "03/21/2025 01:44:54 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node18 finished.\n", - "03/21/2025 01:44:54 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node19 finished.\n", - "03/21/2025 01:44:55 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node20 finished.\n", - "03/21/2025 01:44:56 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node22 finished.\n", - "03/21/2025 01:44:57 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node23 finished.\n", - "03/21/2025 01:44:58 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node25 finished.\n", - "03/21/2025 01:44:59 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node27 finished.\n", - "03/21/2025 01:45:00 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: pickle_node29 finished.\n", - "03/21/2025 01:45:05 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:45:07 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n", - "03/21/2025 01:45:07 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: get_bulk_structure1, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'a': , 'cubic': , 'element': , 'register_pickle_by_value': True}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:45:11 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14312\n", - "03/21/2025 01:45:25 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:45:27 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14\n", - "03/21/2025 01:45:27 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: get_dict14, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'calculation': , 'kpts': , 'pseudopotentials': , 'register_pickle_by_value': True, 'smearing': , 'structure': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:45:32 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14323\n", - "03/21/2025 01:45:44 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:45:46 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\n", - "03/21/2025 01:45:46 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: calculate_qe2, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'input_dict': , 'register_pickle_by_value': True, 'working_directory': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:45:51 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14334\n", - "03/21/2025 01:46:24 PM <3868876> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n", - "03/21/2025 01:46:30 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:46:32 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n", - "03/21/2025 01:46:32 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: generate_structures3, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'register_pickle_by_value': True, 'strain_lst': , 'structure': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:46:37 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14345\n", - "03/21/2025 01:46:51 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:46:53 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict21,get_dict24,get_dict26,get_dict28,get_dict30\n", - "03/21/2025 01:46:53 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: get_dict21, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'calculation': , 'kpts': , 'pseudopotentials': , 'register_pickle_by_value': True, 'smearing': , 'structure': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:46:55 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: get_dict24, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'calculation': , 'kpts': , 'pseudopotentials': , 'register_pickle_by_value': True, 'smearing': , 'structure': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:46:57 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: get_dict26, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'calculation': , 'kpts': , 'pseudopotentials': , 'register_pickle_by_value': True, 'smearing': , 'structure': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:46:59 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: get_dict28, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'calculation': , 'kpts': , 'pseudopotentials': , 'register_pickle_by_value': True, 'smearing': , 'structure': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:47:01 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: get_dict30, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'calculation': , 'kpts': , 'pseudopotentials': , 'register_pickle_by_value': True, 'smearing': , 'structure': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:47:06 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14360, 14367, 14374, 14381, 14388\n", - "03/21/2025 01:47:18 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: get_dict21 finished.\n", - "03/21/2025 01:47:19 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: get_dict24 finished.\n", - "03/21/2025 01:47:20 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: get_dict26 finished.\n", - "03/21/2025 01:47:21 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: get_dict28 finished.\n", - "03/21/2025 01:47:22 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|update_task_state]: Task: get_dict30 finished.\n", - "03/21/2025 01:47:27 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:47:29 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,calculate_qe5,calculate_qe6,calculate_qe7,calculate_qe8\n", - "03/21/2025 01:47:29 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: calculate_qe4, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'input_dict': , 'register_pickle_by_value': True, 'working_directory': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:47:31 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: calculate_qe5, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'input_dict': , 'register_pickle_by_value': True, 'working_directory': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:47:32 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: calculate_qe6, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'input_dict': , 'register_pickle_by_value': True, 'working_directory': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:47:34 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: calculate_qe7, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'input_dict': , 'register_pickle_by_value': True, 'working_directory': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:47:36 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: calculate_qe8, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'input_dict': , 'register_pickle_by_value': True, 'working_directory': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:47:41 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14415, 14422, 14429, 14436, 14443\n", - "03/21/2025 01:48:56 PM <3868876> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "03/21/2025 01:49:02 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:49:04 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", - "03/21/2025 01:49:07 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14415, 14429, 14436, 14443\n", - "03/21/2025 01:49:16 PM <3868876> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "03/21/2025 01:49:22 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:49:23 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", - "03/21/2025 01:49:27 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14429, 14436, 14443\n", - "03/21/2025 01:49:33 PM <3868876> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "03/21/2025 01:49:33 PM <3868876> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "03/21/2025 01:49:34 PM <3868876> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", - "03/21/2025 01:49:41 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:49:43 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list31,get_list32\n", - "03/21/2025 01:49:43 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: get_list31, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'0': , '1': , '2': , '3': , '4': , 'register_pickle_by_value': True}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:49:45 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: get_list32, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'0': , '1': , '2': , '3': , '4': , 'register_pickle_by_value': True}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:49:50 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14611, 14618\n", - "03/21/2025 01:50:05 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:50:06 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n", - "03/21/2025 01:50:06 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|run_tasks]: Run task: plot_energy_volume_curve9, type: PYTHONJOB\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------\n", - "kwargs: {'energy_lst': , 'register_pickle_by_value': True, 'volume_lst': }\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "03/21/2025 01:50:11 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 14633\n", - "03/21/2025 01:50:25 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: Continue workgraph.\n", - "03/21/2025 01:50:26 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", - "03/21/2025 01:50:30 PM <3868876> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [14125|WorkGraphEngine|finalize]: Finalize workgraph.\n" - ] - }, - { - "data": { - "text/plain": [ - "{'execution_count': }" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wg.run()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'wg' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[7], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mIPython\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdisplay\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Image, display\n\u001b[0;32m----> 3\u001b[0m plot_task \u001b[38;5;241m=\u001b[39m [t \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m \u001b[43mwg\u001b[49m\u001b[38;5;241m.\u001b[39mtasks \u001b[38;5;28;01mif\u001b[39;00m t\u001b[38;5;241m.\u001b[39mname\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mplot_energy_volume_curve\u001b[39m\u001b[38;5;124m'\u001b[39m)][\u001b[38;5;241m0\u001b[39m]\n\u001b[1;32m 4\u001b[0m plot_file \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mplot_task\u001b[38;5;241m.\u001b[39mnode\u001b[38;5;241m.\u001b[39mget_remote_workdir()\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m/evcurve.png\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 6\u001b[0m display(Image(filename\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mstr\u001b[39m(plot_file)))\n", - "\u001b[0;31mNameError\u001b[0m: name 'wg' is not defined" - ] - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "plot_task = [t for t in wg.tasks if t.name.startswith('plot_energy_volume_curve')][0]\n", - "plot_file = f\"{plot_task.node.get_remote_workdir()}/evcurve.png\"\n", - "\n", - "display(Image(filename=str(plot_file)))\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "ADIS", - "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.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/universal_qe_to_executorlib.ipynb b/universal_qe_to_executorlib.ipynb deleted file mode 100644 index 81ed777..0000000 --- a/universal_qe_to_executorlib.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"ae0b5775-fb9d-4150-be79-d48dfb0b2cf4","cell_type":"code","source":"from executorlib import SingleNodeExecutor","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"b0f920a2-c646-485b-af0f-48251e061163","cell_type":"code","source":"from python_workflow_definition.executorlib import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"46559120-d58a-492f-b734-db27424b5659","cell_type":"code","source":"with SingleNodeExecutor(max_workers=1) as exe:\n result = load_workflow_json(file_name=\"workflow_qe.json\", exe=exe).result()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"[jupyter-pyiron-dev-pyth-flow-definition-4gvxle22:01655] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-4gvxle22:01891] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-4gvxle22:01962] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-4gvxle22:02029] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-4gvxle22:02093] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-pyiron-dev-pyth-flow-definition-4gvxle22:02159] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"}],"execution_count":3},{"id":"b37f476d-b7f8-4400-8070-83f8f2eb8bf9","cell_type":"code","source":"result","metadata":{"trusted":true},"outputs":[],"execution_count":4},{"id":"336dfbea-7e5c-4950-a0b3-c027a2a8e935","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/universal_qe_to_jobflow.ipynb b/universal_qe_to_jobflow.ipynb deleted file mode 100644 index 9e9fc0e..0000000 --- a/universal_qe_to_jobflow.ipynb +++ /dev/null @@ -1,196 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "eab942d5-f3c5-47e9-8b3b-a7a5a8481aed", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/geiger_j/.aiida_venvs/adis/lib/python3.10/site-packages/paramiko/pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from this module in 48.0.0.\n", - " \"cipher\": algorithms.TripleDES,\n", - "/home/geiger_j/.aiida_venvs/adis/lib/python3.10/site-packages/paramiko/transport.py:253: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from this module in 48.0.0.\n", - " \"class\": algorithms.TripleDES,\n" - ] - } - ], - "source": [ - "from jobflow.managers.local import run_locally" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "f6f83a43-4d91-4028-9661-a4700509be1b", - "metadata": { - "trusted": true - }, - "outputs": [], - "source": [ - "from python_workflow_definition.jobflow import load_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "285ca46b-19e3-4870-9fd1-0c8ddbcf819c", - "metadata": { - "trusted": true - }, - "outputs": [], - "source": [ - "flow = load_workflow_json(file_name=\"workflow_qe.json\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "663ac4b3-dee8-474f-a9bc-089a89bde011", - "metadata": { - "trusted": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2025-03-21 12:30:25,947 INFO Started executing jobs locally\n", - "2025-03-21 12:30:26,026 INFO Starting job - get_bulk_structure (6bb65a41-b132-42c6-b93d-c8ed79f05f62)\n", - "2025-03-21 12:30:26,029 INFO Finished job - get_bulk_structure (6bb65a41-b132-42c6-b93d-c8ed79f05f62)\n", - "2025-03-21 12:30:26,029 INFO Starting job - get_dict (4c567a17-2eff-4500-8d8c-ed0708750a77)\n", - "2025-03-21 12:30:26,031 INFO Finished job - get_dict (4c567a17-2eff-4500-8d8c-ed0708750a77)\n", - "2025-03-21 12:30:26,031 INFO Starting job - calculate_qe (0ee942c4-626d-42cf-92b0-01e5ca09b966)\n", - "FROM ASE\n", - "Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])\n", - "['Al', 'Al', 'Al', 'Al']\n", - "{'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n", - "2025-03-21 12:30:52,792 INFO Finished job - calculate_qe (0ee942c4-626d-42cf-92b0-01e5ca09b966)\n", - "2025-03-21 12:30:52,793 INFO Starting job - generate_structures (7cd66f47-948e-4f7d-9f07-c9985097c0ac)\n", - "2025-03-21 12:30:52,798 INFO Finished job - generate_structures (7cd66f47-948e-4f7d-9f07-c9985097c0ac)\n", - "2025-03-21 12:30:52,799 INFO Starting job - get_dict (74b426c6-5457-4fed-a648-7eee9039adf2)\n", - "2025-03-21 12:30:52,800 INFO Finished job - get_dict (74b426c6-5457-4fed-a648-7eee9039adf2)\n", - "2025-03-21 12:30:52,801 INFO Starting job - get_dict (9969e3e6-8042-43e9-ab75-56c6f4e3ad35)\n", - "2025-03-21 12:30:52,802 INFO Finished job - get_dict (9969e3e6-8042-43e9-ab75-56c6f4e3ad35)\n", - "2025-03-21 12:30:52,803 INFO Starting job - get_dict (5ab08440-1c2d-49a8-9be6-847dd376916d)\n", - "2025-03-21 12:30:52,804 INFO Finished job - get_dict (5ab08440-1c2d-49a8-9be6-847dd376916d)\n", - "2025-03-21 12:30:52,805 INFO Starting job - get_dict (ead5a37c-36e8-4e68-8961-b3e7af73f988)\n", - "2025-03-21 12:30:52,806 INFO Finished job - get_dict (ead5a37c-36e8-4e68-8961-b3e7af73f988)\n", - "2025-03-21 12:30:52,807 INFO Starting job - get_dict (cf4395c0-b1dd-4236-b666-68399d1d4d30)\n", - "2025-03-21 12:30:52,808 INFO Finished job - get_dict (cf4395c0-b1dd-4236-b666-68399d1d4d30)\n", - "2025-03-21 12:30:52,809 INFO Starting job - calculate_qe (a4eef2f9-35db-44d4-9603-b6689ca96e9f)\n", - "FROM ASE\n", - "Atoms(symbols='Al4', pbc=True, cell=[3.906019955258404, 3.906019955258404, 3.906019955258404])\n", - "['Al', 'Al', 'Al', 'Al']\n", - "{'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n", - "2025-03-21 12:30:58,885 INFO Finished job - calculate_qe (a4eef2f9-35db-44d4-9603-b6689ca96e9f)\n", - "2025-03-21 12:30:58,886 INFO Starting job - calculate_qe (1b0c1d8e-36b1-4218-86c8-86434b535b77)\n", - "FROM ASE\n", - "Atoms(symbols='Al4', pbc=True, cell=[3.9770540166930908, 3.9770540166930908, 3.9770540166930908])\n", - "['Al', 'Al', 'Al', 'Al']\n", - "{'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n", - "2025-03-21 12:31:05,673 INFO Finished job - calculate_qe (1b0c1d8e-36b1-4218-86c8-86434b535b77)\n", - "2025-03-21 12:31:05,674 INFO Starting job - calculate_qe (04ea4a70-2b0a-4f08-9576-05569bb15cb7)\n", - "FROM ASE\n", - "Atoms(symbols='Al4', pbc=True, cell=[4.04563739129445, 4.04563739129445, 4.04563739129445])\n", - "['Al', 'Al', 'Al', 'Al']\n", - "{'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n", - "2025-03-21 12:31:13,911 INFO Finished job - calculate_qe (04ea4a70-2b0a-4f08-9576-05569bb15cb7)\n", - "2025-03-21 12:31:13,912 INFO Starting job - calculate_qe (a699a064-bdc2-4e08-aef5-f8c1ee3fe44a)\n", - "FROM ASE\n", - "Atoms(symbols='Al4', pbc=True, cell=[4.111971105505627, 4.111971105505627, 4.111971105505627])\n", - "['Al', 'Al', 'Al', 'Al']\n", - "{'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n", - "2025-03-21 12:31:22,707 INFO Finished job - calculate_qe (a699a064-bdc2-4e08-aef5-f8c1ee3fe44a)\n", - "2025-03-21 12:31:22,708 INFO Starting job - calculate_qe (7c3368c5-2cf8-439e-b1c3-ab805219db17)\n", - "FROM ASE\n", - "Atoms(symbols='Al4', pbc=True, cell=[4.176231033380032, 4.176231033380032, 4.176231033380032])\n", - "['Al', 'Al', 'Al', 'Al']\n", - "{'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}\n", - "2025-03-21 12:31:31,511 INFO Finished job - calculate_qe (7c3368c5-2cf8-439e-b1c3-ab805219db17)\n", - "2025-03-21 12:31:31,511 INFO Starting job - get_list (e32fd7b6-8050-4c3d-8fd7-3dfdd705ba63)\n", - "2025-03-21 12:31:31,515 INFO Finished job - get_list (e32fd7b6-8050-4c3d-8fd7-3dfdd705ba63)\n", - "2025-03-21 12:31:31,516 INFO Starting job - get_list (75a89955-d587-4078-8adf-4df3496161bc)\n", - "2025-03-21 12:31:31,519 INFO Finished job - get_list (75a89955-d587-4078-8adf-4df3496161bc)\n", - "2025-03-21 12:31:31,520 INFO Starting job - plot_energy_volume_curve (e3f23d35-fb56-43bd-99c6-ffa63f35414e)\n", - "2025-03-21 12:31:31,621 INFO Finished job - plot_energy_volume_curve (e3f23d35-fb56-43bd-99c6-ffa63f35414e)\n", - "2025-03-21 12:31:31,621 INFO Finished executing jobs locally\n" - ] - }, - { - "data": { - "text/plain": [ - "{'6bb65a41-b132-42c6-b93d-c8ed79f05f62': {1: Response(output='{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '4c567a17-2eff-4500-8d8c-ed0708750a77': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'vc-relax', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '0ee942c4-626d-42cf-92b0-01e5ca09b966': {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.04563739129445, 0.0, 0.0], [0.0, 4.04563739129445, 0.0], [0.0, 0.0, 4.04563739129445]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818695647225, 2.022818695647225], [2.022818695647225, 0.0, 2.022818695647225], [2.022818695647225, 2.022818695647225, 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.9365262239567, 'volume': 66.21568309220075}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '7cd66f47-948e-4f7d-9f07-c9985097c0ac': {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.906019955258404, 0.0, 0.0], [0.0, 3.906019955258404, 0.0], [0.0, 0.0, 3.906019955258404]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009977629202, 1.953009977629202], [1.953009977629202, 0.0, 1.953009977629202], [1.953009977629202, 1.953009977629202, 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.9770540166930908, 0.0, 0.0], [0.0, 3.9770540166930908, 0.0], [0.0, 0.0, 3.9770540166930908]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270083465454, 1.9885270083465454], [1.9885270083465454, 0.0, 1.9885270083465454], [1.9885270083465454, 1.9885270083465454, 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.04563739129445, 0.0, 0.0], [0.0, 4.04563739129445, 0.0], [0.0, 0.0, 4.04563739129445]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818695647225, 2.022818695647225], [2.022818695647225, 0.0, 2.022818695647225], [2.022818695647225, 2.022818695647225, 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.111971105505627, 0.0, 0.0], [0.0, 4.111971105505627, 0.0], [0.0, 0.0, 4.111971105505627]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559855527528135, 2.0559855527528135], [2.0559855527528135, 0.0, 2.0559855527528135], [2.0559855527528135, 2.0559855527528135, 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.176231033380032, 0.0, 0.0], [0.0, 4.176231033380032, 0.0], [0.0, 0.0, 4.176231033380032]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115516690016, 2.088115516690016], [2.088115516690016, 0.0, 2.088115516690016], [2.088115516690016, 2.088115516690016, 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/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '74b426c6-5457-4fed-a648-7eee9039adf2': {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.906019955258404, 0.0, 0.0], [0.0, 3.906019955258404, 0.0], [0.0, 0.0, 3.906019955258404]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009977629202, 1.953009977629202], [1.953009977629202, 0.0, 1.953009977629202], [1.953009977629202, 1.953009977629202, 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/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '9969e3e6-8042-43e9-ab75-56c6f4e3ad35': {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.9770540166930908, 0.0, 0.0], [0.0, 3.9770540166930908, 0.0], [0.0, 0.0, 3.9770540166930908]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885270083465454, 1.9885270083465454], [1.9885270083465454, 0.0, 1.9885270083465454], [1.9885270083465454, 1.9885270083465454, 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/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '5ab08440-1c2d-49a8-9be6-847dd376916d': {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.04563739129445, 0.0, 0.0], [0.0, 4.04563739129445, 0.0], [0.0, 0.0, 4.04563739129445]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818695647225, 2.022818695647225], [2.022818695647225, 0.0, 2.022818695647225], [2.022818695647225, 2.022818695647225, 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/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " 'ead5a37c-36e8-4e68-8961-b3e7af73f988': {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.111971105505627, 0.0, 0.0], [0.0, 4.111971105505627, 0.0], [0.0, 0.0, 4.111971105505627]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559855527528135, 2.0559855527528135], [2.0559855527528135, 0.0, 2.0559855527528135], [2.0559855527528135, 2.0559855527528135, 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/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " 'cf4395c0-b1dd-4236-b666-68399d1d4d30': {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.176231033380032, 0.0, 0.0], [0.0, 4.176231033380032, 0.0], [0.0, 0.0, 4.176231033380032]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115516690016, 2.088115516690016], [2.088115516690016, 0.0, 2.088115516690016], [2.088115516690016, 2.088115516690016, 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/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " 'a4eef2f9-35db-44d4-9603-b6689ca96e9f': {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.906019938185435, 0.0, 0.0], [0.0, 3.906019938185435, 0.0], [0.0, 0.0, 3.906019938185435]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530099690635172, 1.9530099690635172], [1.9530099690635172, 0.0, 1.9530099690635172], [1.9530099690635172, 1.9530099690635172, 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.8457448490626, 'volume': 59.594114001534216}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '1b0c1d8e-36b1-4218-86c8-86434b535b77': {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.9770539993096388, 0.0, 0.0], [0.0, 3.9770539993096388, 0.0], [0.0, 0.0, 3.9770539993096388]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269996082748, 1.9885269996082748], [1.9885269996082748, 0.0, 1.9885269996082748], [1.9885269996082748, 1.9885269996082748, 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.9161489649605, 'volume': 62.90489811273073}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '04ea4a70-2b0a-4f08-9576-05569bb15cb7': {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.045637373611226, 0.0, 0.0], [0.0, 4.045637373611226, 0.0], [0.0, 0.0, 4.045637373611226]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228186867583875, 2.0228186867583875], [2.0228186867583875, 0.0, 2.0228186867583875], [2.0228186867583875, 2.0228186867583875, 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.9365241649443, 'volume': 66.21568222392706}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " 'a699a064-bdc2-4e08-aef5-f8c1ee3fe44a': {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.111971087532464, 0.0, 0.0], [0.0, 4.111971087532464, 0.0], [0.0, 0.0, 4.111971087532464]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559855438134176, 2.0559855438134176], [2.0559855438134176, 0.0, 2.0559855438134176], [2.0559855438134176, 2.0559855438134176, 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.9192859118182, 'volume': 69.52646633512354}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '7c3368c5-2cf8-439e-b1c3-ab805219db17': {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.176231015125989, 0.0, 0.0], [0.0, 4.176231015125989, 0.0], [0.0, 0.0, 4.176231015125989]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881155075729794, 2.0881155075729794], [2.0881155075729794, 0.0, 2.0881155075729794], [2.0881155075729794, 2.0881155075729794, 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.8737903053714, 'volume': 72.83725044631976}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " 'e32fd7b6-8050-4c3d-8fd7-3dfdd705ba63': {1: Response(output=[59.594114001534216, 62.90489811273073, 66.21568222392706, 69.52646633512354, 72.83725044631976], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " '75a89955-d587-4078-8adf-4df3496161bc': {1: Response(output=[-1074.8457448490626, -1074.9161489649605, -1074.9365241649443, -1074.9192859118182, -1074.8737903053714], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))},\n", - " 'e3f23d35-fb56-43bd-99c6-ffa63f35414e': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/geiger_j/aiida_projects/adis/git-repos/python-workflow-definition'))}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcH0lEQVR4nO3dd3RUZeLG8e9MeiEFSAiBFHpClaJUKwiIgBTBgiCIuu4uriIioGJXsK4/XXfVXaUsuCpiQZAquGCINOmEAIEQSKOkJ6TO/f0RyBqBACGZm0mezzlzzmbm3skzd2Py8L73vtdiGIaBiIiIiFyQ1ewAIiIiIjWZypKIiIhIBVSWRERERCqgsiQiIiJSAZUlERERkQqoLImIiIhUQGVJREREpAIqSyIiIiIVUFkSERERqYDKkoiIiEgFVJZM8uqrr9KrVy88PT3x8/O7rH0Mw+C5556jcePGeHh40K9fPw4ePFj2+k8//YTFYrngY8uWLee936FDh6hXr95lf//fGjp0KKGhobi7u9O4cWPGjh1LUlLSFb+PiIhITaeyZJLCwkJGjRrFH//4x8ve54033uC9997jww8/ZNOmTXh5eTFgwADy8/MB6NWrF8nJyeUeDz74IM2aNaNbt27l3quoqIh77rmH66+/vlL5b775Zr788ktiY2NZvHgxcXFx3HnnnZV6LxERkZrMohvpmmvu3Lk8/vjjZGRkVLidYRgEBwczZcoUnnzySQAyMzNp1KgRc+fO5e677z5vn6KiIpo0acKjjz7KzJkzy702bdo0kpKS6Nu37wW//7/+9S/efvttjhw5Qnh4OH/5y1/405/+dNF8S5YsYdiwYRQUFODi4nJ5H15ERMQBaGTJQRw5coSUlBT69etX9pyvry/du3cnOjr6gvssWbKE06dPM2HChHLPr127lkWLFvHBBx9ccL+FCxfy3HPP8eqrrxITE8Nrr73GzJkzmTdv3gW3T0tLY+HChfTq1UtFSUREah2VJQeRkpICQKNGjco936hRo7LXfu+TTz5hwIABNG3atOy506dPM378eObOnYuPj88F93v++ed5++23GTFiBM2aNWPEiBFMnjyZjz76qNx206ZNw8vLiwYNGpCQkMB33313NR9RRESkRlJZqkLTp0+/6AnW5x779++3S5bjx4+zcuVKJk6cWO75hx56iHvvvZcbbrjh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RuV+AdbmsnSp45GYmGgAxj333FNumyFDhhh333233XLay+X8N/Pmm28arVu3NpYsWWLs3LnTeP/99w1vb29j9erV9o5rV/379zcGDx5c9nVdL0u/Px6/lZmZaVx33XXGwIEDjcLCQjsnsx9Nwzmoxo0b07Zt23LPRUZGll21ExQUBHDe1Rqpqallr9Umlzoe5xQVFTF69GiOHj3K6tWra8Udsy/mUsdkw4YNnDhxgtDQUJydnXF2dubo0aNMmTKF8PBwExJXr0sdj4YNG+Ls7HxZP0e1waWOx5kzZ3j66ad55513GDJkCB07dmTSpEncddddvPXWW2ZEtoujR4+yZs0aHnzwwbLngoKCKCwsJCMjo9y2tfX36W9d6Hick52dzcCBA6lXrx7ffPMNLi4uJiS0D5UlB9W7d29iY2PLPXfgwAHCwsIAaNasGUFBQfz4449lr2dlZbFp0yZ69uxp16z2cKnjAf8rSgcPHmTNmjU0aNDA3jHt6lLHZOzYsezatYsdO3aUPYKDg5k6dSorV640I3K1utTxcHV15dprr73kz1FtcanjUVRURFFREVZr+T8TTk5O2Gw2u+W0tzlz5hAYGMjtt99e9lzXrl1xcXEp9/s0NjaWhISEWvn79LcudDyg9O9J//79cXV1ZcmSJbXyitFyzB7aksrZvHmz4ezsbLz66qvGwYMHjYULFxqenp7GggULyraZPXu24efnZ3z33XfGrl27jDvuuMNo1qyZcebMGROTV49LHY/CwkJj6NChRtOmTY0dO3YYycnJZY+CggKT01ePy/kZ+b3aPA13Ocfj66+/NlxcXIyPP/7YOHjwoPH+++8bTk5OxoYNG0xMXj0u53jceOONRrt27Yx169YZhw8fNubMmWO4u7sbf//7301MXn1KSkqM0NBQY9q0aee99sgjjxihoaHG2rVrja1btxo9e/Y8bxqztrnY8cjMzDS6d+9udOjQwTh06FC536fFxcUmpa1eKksO7Pvvvzfat29vuLm5GREREcbHH39c7nWbzWbMnDnTaNSokeHm5mb07dvXiI2NNSlt9avoeBw5csQALvhYt26deaGr2aV+Rn6vNpclw7i84/HJJ58YLVu2NNzd3Y1OnToZ3377rQlJ7eNSxyM5OdkYP368ERwcbLi7uxtt2rQx3n777YtePu7oVq5caQAX/D155swZ409/+pPh7+9veHp6GsOHDzeSk5NNSGk/Fzse69atu+jv0yNHjpgTtppZDMMwzBjREhEREXEEOmdJREREpAIqSyIiIiIVUFkSERERqYDKkoiIiEgFVJZEREREKqCyJCIiIlIBlSURERGRCqgsiYiIiFRAZUlE6rTw8HDeffdds2OISA2msiQiDmvIkCEMHDjwgq9t2LABi8XCrl277JxKRGoblSURcVgTJ05k9erVHD9+/LzX5syZQ7du3ejYsaMJyUSkNlFZEhGHNXjwYAICApg7d26553Nycli0aBETJ05k8eLFtGvXDjc3N8LDw3n77bcv+n7x8fFYLBZ27NhR9lxGRgYWi4WffvoJgJ9++gmLxcLKlSvp3LkzHh4e3HLLLZw4cYLly5cTGRmJj48P9957L3l5eWXvY7PZmDVrFs2aNcPDw4NOnTrx1VdfVeXhEJFqorIkIg7L2dmZcePGMXfuXH57T/BFixZRUlJCZGQko0eP5u6772b37t288MILzJw587xyVRkvvPACf/vb39i4cSPHjh1j9OjRvPvuu3z22WcsW7aMVatW8f7775dtP2vWLObPn8+HH37I3r17mTx5Mvfddx///e9/rzqLiFQvi/Hb3zAiIg5m//79REZGsm7dOm666SYAbrjhBsLCwrDZbJw8eZJVq1aVbf/UU0+xbNky9u7dC5Se4P3444/z+OOPEx8fT7Nmzdi+fTvXXHMNUDqy5O/vX/b+P/30EzfffDNr1qyhb9++AMyePZsZM2YQFxdH8+bNAXjkkUeIj49nxYoVFBQUUL9+fdasWUPPnj3Lsjz44IPk5eXx2Wef2eFIiUhlaWRJRBxaREQEvXr14tNPPwXg0KFDbNiwgYkTJxITE0Pv3r3Lbd+7d28OHjxISUnJVX3f354L1ahRIzw9PcuK0rnnTpw4UZYpLy+PW2+9FW9v77LH/PnziYuLu6ocIlL9nM0OICJytSZOnMijjz7KBx98wJw5c2jRogU33njjFb+P1Vr678ffDrgXFRVdcFsXF5ey/22xWMp9fe45m80GlJ5DBbBs2TKaNGlSbjs3N7crziki9qWRJRFxeKNHj8ZqtfLZZ58xf/58HnjgASwWC5GRkURFRZXbNioqitatW+Pk5HTe+wQEBACQnJxc9txvT/aurLZt2+Lm5kZCQgItW7Ys9wgJCbnq9xeR6qWRJRFxeN7e3tx1113MmDGDrKwsxo8fD8CUKVO49tprefnll7nrrruIjo7mb3/7G3//+98v+D4eHh706NGD2bNn06xZM06cOMGzzz571fnq1avHk08+yeTJk7HZbPTp04fMzEyioqLw8fHh/vvvv+rvISLVRyNLIlIrTJw4kfT0dAYMGEBwcDAAXbp04csvv+Tzzz+nffv2PPfcc7z00ktlZepCPv30U4qLi+natSuPP/44r7zySpXke/nll5k5cyazZs0iMjKSgQMHsmzZMpo1a1Yl7y8i1UdXw4mIiIhUQCNLIiIiIhVQWRIRERGpgMqSiIiISAVUlkREREQqoLIkIiIiUgGVJREREZEKqCyJiIiIVEBlSURERKQCKksiIiIiFVBZEhEREamAypKIiIhIBVSWRERERCrw/29uUEcLUwOpAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "result = run_locally(flow)\n", - "result" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e9dd07e9", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "ADIS", - "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.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/universal_qe_to_pyiron_base.ipynb b/universal_qe_to_pyiron_base.ipynb deleted file mode 100644 index 184333e..0000000 --- a/universal_qe_to_pyiron_base.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"4eb91f39-a8ea-4eb8-839f-076accfcf394","cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"8200fd07-13a3-49a8-892d-2a4d906fc778","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"9907178d-8edd-478e-a6f7-f7ccd1c9441a","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":"bd070a78bbf5494ab7b897a398fed5e4"}},"metadata":{}}],"execution_count":3},{"id":"0c393ada-0eb9-4627-9f3a-25afdd30545e","cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=\"workflow_qe.json\")\ndelayed_object.draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_862be14fd9cab5fc3aabb761bc5a7e7e\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd159b20>\n\n\n\nvolume_lst_74a33bbe8538871b072f8e4324ac7b85\n\nvolume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd1597c0>\n\n\n\nvolume_lst_74a33bbe8538871b072f8e4324ac7b85->create_function_job_862be14fd9cab5fc3aabb761bc5a7e7e\n\n\n\n\n\n0_27d3db7d59eb1a48e0f492de59dadec3\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd159190>\n\n\n\n0_27d3db7d59eb1a48e0f492de59dadec3->volume_lst_74a33bbe8538871b072f8e4324ac7b85\n\n\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add\n\nworking_directory=strain_0\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_27d3db7d59eb1a48e0f492de59dadec3\n\n\n\n\n\n0_ce9337dde2aa0891165a1485e5796f51\n\n0=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd158d70>\n\n\n\nworking_directory_2e9abb255f1a31f7d29b4451ad422add->0_ce9337dde2aa0891165a1485e5796f51\n\n\n\n\n\nenergy_lst_e1bd60be583a391653a59a793309896d\n\nenergy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd159670>\n\n\n\n0_ce9337dde2aa0891165a1485e5796f51->energy_lst_e1bd60be583a391653a59a793309896d\n\n\n\n\n\ninput_dict_50563eef4ef90e35e26cd6a01209519e\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd122d20>\n\n\n\ninput_dict_50563eef4ef90e35e26cd6a01209519e->0_27d3db7d59eb1a48e0f492de59dadec3\n\n\n\n\n\ninput_dict_50563eef4ef90e35e26cd6a01209519e->0_ce9337dde2aa0891165a1485e5796f51\n\n\n\n\n\nstructure_787d4ff452f2045ee21a7dd34d486d21\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd158290>\n\n\n\nstructure_787d4ff452f2045ee21a7dd34d486d21->input_dict_50563eef4ef90e35e26cd6a01209519e\n\n\n\n\n\nstructure_ddca652705a39f2caae3608a0f941948\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd123230>\n\n\n\nstructure_ddca652705a39f2caae3608a0f941948->structure_787d4ff452f2045ee21a7dd34d486d21\n\n\n\n\n\nstructure_013017a0fa01e903fecb7e4c4853e8e3\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd123ef0>\n\n\n\nstructure_ddca652705a39f2caae3608a0f941948->structure_013017a0fa01e903fecb7e4c4853e8e3\n\n\n\n\n\nstructure_3516ab9ac6406876732e28b56f0974fb\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd123bc0>\n\n\n\nstructure_ddca652705a39f2caae3608a0f941948->structure_3516ab9ac6406876732e28b56f0974fb\n\n\n\n\n\nstructure_eb1be1e641b6c02024da92cc1fb87816\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd123890>\n\n\n\nstructure_ddca652705a39f2caae3608a0f941948->structure_eb1be1e641b6c02024da92cc1fb87816\n\n\n\n\n\nstructure_0ebb88b277b3cc0c38ba5c6c0e339d72\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd123560>\n\n\n\nstructure_ddca652705a39f2caae3608a0f941948->structure_0ebb88b277b3cc0c38ba5c6c0e339d72\n\n\n\n\n\ninput_dict_a5ec04a327ab2427b21b7756d70c75bb\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd123c50>\n\n\n\nstructure_013017a0fa01e903fecb7e4c4853e8e3->input_dict_a5ec04a327ab2427b21b7756d70c75bb\n\n\n\n\n\ninput_dict_1bd97d1b34574551c3fabc5d25943888\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd158c20>\n\n\n\nstructure_3516ab9ac6406876732e28b56f0974fb->input_dict_1bd97d1b34574551c3fabc5d25943888\n\n\n\n\n\ninput_dict_6eced990aeae4571f53702e133f246aa\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd1588f0>\n\n\n\nstructure_eb1be1e641b6c02024da92cc1fb87816->input_dict_6eced990aeae4571f53702e133f246aa\n\n\n\n\n\ninput_dict_bc120cfa29165de8311c044d2a2b7b20\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd1585c0>\n\n\n\nstructure_0ebb88b277b3cc0c38ba5c6c0e339d72->input_dict_bc120cfa29165de8311c044d2a2b7b20\n\n\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7\n\nworking_directory=mini\n\n\n\nworking_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_ddca652705a39f2caae3608a0f941948\n\n\n\n\n\ninput_dict_2662b1c341beb0518cc5d55d452c0b32\n\ninput_dict=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd122f00>\n\n\n\ninput_dict_2662b1c341beb0518cc5d55d452c0b32->structure_ddca652705a39f2caae3608a0f941948\n\n\n\n\n\nstructure_0a1277654a3dd8a8029784b7359713fc\n\nstructure=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd100320>\n\n\n\nstructure_0a1277654a3dd8a8029784b7359713fc->input_dict_2662b1c341beb0518cc5d55d452c0b32\n\n\n\n\n\nname_467734216d9bd2497ffd28d5cd6daba0\n\nname=Al\n\n\n\nname_467734216d9bd2497ffd28d5cd6daba0->structure_0a1277654a3dd8a8029784b7359713fc\n\n\n\n\n\na_aea0574e321c6f75f923c059730e9537\n\na=4.05\n\n\n\na_aea0574e321c6f75f923c059730e9537->structure_0a1277654a3dd8a8029784b7359713fc\n\n\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a\n\ncubic=True\n\n\n\ncubic_bad787c53fa02a5559fe570238fdb23a->structure_0a1277654a3dd8a8029784b7359713fc\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_50563eef4ef90e35e26cd6a01209519e\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_2662b1c341beb0518cc5d55d452c0b32\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_a5ec04a327ab2427b21b7756d70c75bb\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_1bd97d1b34574551c3fabc5d25943888\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_6eced990aeae4571f53702e133f246aa\n\n\n\n\n\npseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_bc120cfa29165de8311c044d2a2b7b20\n\n\n\n\n\n1_0d132798d5ce6231eef2e49a1f6a1079\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd159160>\n\n\n\ninput_dict_a5ec04a327ab2427b21b7756d70c75bb->1_0d132798d5ce6231eef2e49a1f6a1079\n\n\n\n\n\n1_edfea7f93db4c3fa5913c3c1c8d6af5b\n\n1=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd158ad0>\n\n\n\ninput_dict_a5ec04a327ab2427b21b7756d70c75bb->1_edfea7f93db4c3fa5913c3c1c8d6af5b\n\n\n\n\n\n2_fd2b845827bf18e6d21eb2142a18f5cb\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd158380>\n\n\n\ninput_dict_1bd97d1b34574551c3fabc5d25943888->2_fd2b845827bf18e6d21eb2142a18f5cb\n\n\n\n\n\n2_5cad2bac7c5d540ce15c120747a6205e\n\n2=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd158770>\n\n\n\ninput_dict_1bd97d1b34574551c3fabc5d25943888->2_5cad2bac7c5d540ce15c120747a6205e\n\n\n\n\n\n3_0183a93cfcf0395de4d61f71f74fac1b\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd1592b0>\n\n\n\ninput_dict_6eced990aeae4571f53702e133f246aa->3_0183a93cfcf0395de4d61f71f74fac1b\n\n\n\n\n\n3_5c9da80286167bb025d65eb396a25df0\n\n3=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd158c50>\n\n\n\ninput_dict_6eced990aeae4571f53702e133f246aa->3_5c9da80286167bb025d65eb396a25df0\n\n\n\n\n\n4_c8145c4182f92559d7334a2dd6d38449\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd1593a0>\n\n\n\ninput_dict_bc120cfa29165de8311c044d2a2b7b20->4_c8145c4182f92559d7334a2dd6d38449\n\n\n\n\n\n4_6656fd041c789dbf871c2abd343566fb\n\n4=<pyiron_base.project.delayed.DelayedObject object at 0x703ebd158920>\n\n\n\ninput_dict_bc120cfa29165de8311c044d2a2b7b20->4_6656fd041c789dbf871c2abd343566fb\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa\n\nkpts=[3, 3, 3]\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_50563eef4ef90e35e26cd6a01209519e\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_2662b1c341beb0518cc5d55d452c0b32\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_a5ec04a327ab2427b21b7756d70c75bb\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_1bd97d1b34574551c3fabc5d25943888\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_6eced990aeae4571f53702e133f246aa\n\n\n\n\n\nkpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_bc120cfa29165de8311c044d2a2b7b20\n\n\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34\n\ncalculation=vc-relax\n\n\n\ncalculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_2662b1c341beb0518cc5d55d452c0b32\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9\n\nsmearing=0.02\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_50563eef4ef90e35e26cd6a01209519e\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_2662b1c341beb0518cc5d55d452c0b32\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_a5ec04a327ab2427b21b7756d70c75bb\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_1bd97d1b34574551c3fabc5d25943888\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_6eced990aeae4571f53702e133f246aa\n\n\n\n\n\nsmearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_bc120cfa29165de8311c044d2a2b7b20\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_787d4ff452f2045ee21a7dd34d486d21\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_013017a0fa01e903fecb7e4c4853e8e3\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_3516ab9ac6406876732e28b56f0974fb\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_eb1be1e641b6c02024da92cc1fb87816\n\n\n\n\n\nstrain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_0ebb88b277b3cc0c38ba5c6c0e339d72\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83\n\ncalculation=scf\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_50563eef4ef90e35e26cd6a01209519e\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_a5ec04a327ab2427b21b7756d70c75bb\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_1bd97d1b34574551c3fabc5d25943888\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_6eced990aeae4571f53702e133f246aa\n\n\n\n\n\ncalculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_bc120cfa29165de8311c044d2a2b7b20\n\n\n\n\n\n1_0d132798d5ce6231eef2e49a1f6a1079->volume_lst_74a33bbe8538871b072f8e4324ac7b85\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd\n\nworking_directory=strain_1\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_0d132798d5ce6231eef2e49a1f6a1079\n\n\n\n\n\nworking_directory_5423d2cc67129a6d0383af6f347df5bd->1_edfea7f93db4c3fa5913c3c1c8d6af5b\n\n\n\n\n\n1_edfea7f93db4c3fa5913c3c1c8d6af5b->energy_lst_e1bd60be583a391653a59a793309896d\n\n\n\n\n\n2_fd2b845827bf18e6d21eb2142a18f5cb->volume_lst_74a33bbe8538871b072f8e4324ac7b85\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992\n\nworking_directory=strain_2\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_fd2b845827bf18e6d21eb2142a18f5cb\n\n\n\n\n\nworking_directory_cc646e064ddfc4b2811aba3d86d27992->2_5cad2bac7c5d540ce15c120747a6205e\n\n\n\n\n\n2_5cad2bac7c5d540ce15c120747a6205e->energy_lst_e1bd60be583a391653a59a793309896d\n\n\n\n\n\n3_0183a93cfcf0395de4d61f71f74fac1b->volume_lst_74a33bbe8538871b072f8e4324ac7b85\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f\n\nworking_directory=strain_3\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_0183a93cfcf0395de4d61f71f74fac1b\n\n\n\n\n\nworking_directory_e27768d53df6cd8dc245c52054ecf31f->3_5c9da80286167bb025d65eb396a25df0\n\n\n\n\n\n3_5c9da80286167bb025d65eb396a25df0->energy_lst_e1bd60be583a391653a59a793309896d\n\n\n\n\n\n4_c8145c4182f92559d7334a2dd6d38449->volume_lst_74a33bbe8538871b072f8e4324ac7b85\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7\n\nworking_directory=strain_4\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_c8145c4182f92559d7334a2dd6d38449\n\n\n\n\n\nworking_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_6656fd041c789dbf871c2abd343566fb\n\n\n\n\n\n4_6656fd041c789dbf871c2abd343566fb->energy_lst_e1bd60be583a391653a59a793309896d\n\n\n\n\n\nenergy_lst_e1bd60be583a391653a59a793309896d->create_function_job_862be14fd9cab5fc3aabb761bc5a7e7e\n\n\n\n\n"},"metadata":{}}],"execution_count":4},{"id":"006f309a-d82c-457d-a77a-8771a72dc6d3","cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"The job get_bulk_structure_40d4be995c851afca48e5650f5e2d787 was saved and received the ID: 1\nThe job get_dict_bccb1cf45d545b4187a57ac7e53a7f00 was saved and received the ID: 2\nThe job calculate_qe_1b41e67724a7f43d770185783035d160 was saved and received the ID: 3\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-jan-janssen-pyt-flow-definition-qinbp2b8:00189] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job generate_structures_4d1c642077aade979968c6a26b7282cb was saved and received the ID: 4\nThe job get_dict_dfd8d70c5af1189f6f78052595cf450e was saved and received the ID: 5\nThe job calculate_qe_e066a4b1a579b311063411694a31331c was saved and received the ID: 6\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-jan-janssen-pyt-flow-definition-qinbp2b8:00201] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_11cd633613014ecf2108aa23f9897350 was saved and received the ID: 7\nThe job calculate_qe_b2190abc0a1e16d1a47c05d0ea8c8674 was saved and received the ID: 8\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-jan-janssen-pyt-flow-definition-qinbp2b8:00211] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_a511a057e39eaf356b98a7d1b1ecdf3f was saved and received the ID: 9\nThe job calculate_qe_0465c89bf510cf25374997a5fb1033b8 was saved and received the ID: 10\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-jan-janssen-pyt-flow-definition-qinbp2b8:00221] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_10ab0c9e927741eb3948cb3a35cc90cc was saved and received the ID: 11\nThe job calculate_qe_96621a0614889d5a19b53c1e7f67b06e was saved and received the ID: 12\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-jan-janssen-pyt-flow-definition-qinbp2b8:00231] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_dict_17f50e68d128290a2119734cf04e045c was saved and received the ID: 13\nThe job calculate_qe_dcf6a099d5bd9dc0183c0de1c8ac0671 was saved and received the ID: 14\n"},{"name":"stderr","output_type":"stream","text":"[jupyter-jan-janssen-pyt-flow-definition-qinbp2b8:00242] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n"},{"name":"stdout","output_type":"stream","text":"The job get_list_c37b37b7f8c1f167f8fac22d85046d8b was saved and received the ID: 15\nThe job get_list_d1b58f3f2c80182ea50900bf545997b2 was saved and received the ID: 16\nThe job plot_energy_volume_curve_b91663564ad2009496e45d5ec42ea137 was saved and received the ID: 17\n"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII="},"metadata":{}}],"execution_count":5},{"id":"12a6e779-766b-442a-a800-8e4e91bc95d3","cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[{"execution_count":6,"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 \n6 7 finished None \n7 8 finished None \n8 9 finished None \n9 10 finished None \n10 11 finished None \n11 12 finished None \n12 13 finished None \n13 14 finished None \n14 15 finished None \n15 16 finished None \n16 17 finished None \n\n job \\\n0 get_bulk_structure_40d4be995c851afca48e5650f5e2d787 \n1 get_dict_bccb1cf45d545b4187a57ac7e53a7f00 \n2 calculate_qe_1b41e67724a7f43d770185783035d160 \n3 generate_structures_4d1c642077aade979968c6a26b7282cb \n4 get_dict_dfd8d70c5af1189f6f78052595cf450e \n5 calculate_qe_e066a4b1a579b311063411694a31331c \n6 get_dict_11cd633613014ecf2108aa23f9897350 \n7 calculate_qe_b2190abc0a1e16d1a47c05d0ea8c8674 \n8 get_dict_a511a057e39eaf356b98a7d1b1ecdf3f \n9 calculate_qe_0465c89bf510cf25374997a5fb1033b8 \n10 get_dict_10ab0c9e927741eb3948cb3a35cc90cc \n11 calculate_qe_96621a0614889d5a19b53c1e7f67b06e \n12 get_dict_17f50e68d128290a2119734cf04e045c \n13 calculate_qe_dcf6a099d5bd9dc0183c0de1c8ac0671 \n14 get_list_c37b37b7f8c1f167f8fac22d85046d8b \n15 get_list_d1b58f3f2c80182ea50900bf545997b2 \n16 plot_energy_volume_curve_b91663564ad2009496e45d5ec42ea137 \n\n subjob projectpath \\\n0 /get_bulk_structure_40d4be995c851afca48e5650f5e2d787 None \n1 /get_dict_bccb1cf45d545b4187a57ac7e53a7f00 None \n2 /calculate_qe_1b41e67724a7f43d770185783035d160 None \n3 /generate_structures_4d1c642077aade979968c6a26b7282cb None \n4 /get_dict_dfd8d70c5af1189f6f78052595cf450e None \n5 /calculate_qe_e066a4b1a579b311063411694a31331c None \n6 /get_dict_11cd633613014ecf2108aa23f9897350 None \n7 /calculate_qe_b2190abc0a1e16d1a47c05d0ea8c8674 None \n8 /get_dict_a511a057e39eaf356b98a7d1b1ecdf3f None \n9 /calculate_qe_0465c89bf510cf25374997a5fb1033b8 None \n10 /get_dict_10ab0c9e927741eb3948cb3a35cc90cc None \n11 /calculate_qe_96621a0614889d5a19b53c1e7f67b06e None \n12 /get_dict_17f50e68d128290a2119734cf04e045c None \n13 /calculate_qe_dcf6a099d5bd9dc0183c0de1c8ac0671 None \n14 /get_list_c37b37b7f8c1f167f8fac22d85046d8b None \n15 /get_list_d1b58f3f2c80182ea50900bf545997b2 None \n16 /plot_energy_volume_curve_b91663564ad2009496e45d5ec42ea137 None \n\n project timestart timestop totalcputime \\\n0 /home/jovyan/test/ 2025-03-10 11:52:12.028327 None None \n1 /home/jovyan/test/ 2025-03-10 11:52:12.124720 None None \n2 /home/jovyan/test/ 2025-03-10 11:52:12.237225 None None \n3 /home/jovyan/test/ 2025-03-10 11:53:07.023611 None None \n4 /home/jovyan/test/ 2025-03-10 11:53:07.158295 None None \n5 /home/jovyan/test/ 2025-03-10 11:53:07.266154 None None \n6 /home/jovyan/test/ 2025-03-10 11:53:17.308506 None None \n7 /home/jovyan/test/ 2025-03-10 11:53:17.397100 None None \n8 /home/jovyan/test/ 2025-03-10 11:53:28.561574 None None \n9 /home/jovyan/test/ 2025-03-10 11:53:28.650751 None None \n10 /home/jovyan/test/ 2025-03-10 11:53:40.508244 None None \n11 /home/jovyan/test/ 2025-03-10 11:53:40.598856 None None \n12 /home/jovyan/test/ 2025-03-10 11:53:54.557383 None None \n13 /home/jovyan/test/ 2025-03-10 11:53:54.800933 None None \n14 /home/jovyan/test/ 2025-03-10 11:54:09.777904 None None \n15 /home/jovyan/test/ 2025-03-10 11:54:10.088454 None None \n16 /home/jovyan/test/ 2025-03-10 11:54:10.273121 None None \n\n computer \\\n0 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n1 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n2 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n3 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n4 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n5 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n6 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n7 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n8 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n9 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n10 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n11 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n12 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n13 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n14 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n15 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1 \n16 pyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#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 \n6 PythonFunctionContainerJob 0.4 None None \n7 PythonFunctionContainerJob 0.4 None None \n8 PythonFunctionContainerJob 0.4 None None \n9 PythonFunctionContainerJob 0.4 None None \n10 PythonFunctionContainerJob 0.4 None None \n11 PythonFunctionContainerJob 0.4 None None \n12 PythonFunctionContainerJob 0.4 None None \n13 PythonFunctionContainerJob 0.4 None None \n14 PythonFunctionContainerJob 0.4 None None \n15 PythonFunctionContainerJob 0.4 None None \n16 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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
01finishedNoneget_bulk_structure_40d4be995c851afca48e5650f5e2d787/get_bulk_structure_40d4be995c851afca48e5650f5e2d787None/home/jovyan/test/2025-03-10 11:52:12.028327NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
12finishedNoneget_dict_bccb1cf45d545b4187a57ac7e53a7f00/get_dict_bccb1cf45d545b4187a57ac7e53a7f00None/home/jovyan/test/2025-03-10 11:52:12.124720NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
23finishedNonecalculate_qe_1b41e67724a7f43d770185783035d160/calculate_qe_1b41e67724a7f43d770185783035d160None/home/jovyan/test/2025-03-10 11:52:12.237225NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
34finishedNonegenerate_structures_4d1c642077aade979968c6a26b7282cb/generate_structures_4d1c642077aade979968c6a26b7282cbNone/home/jovyan/test/2025-03-10 11:53:07.023611NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
45finishedNoneget_dict_dfd8d70c5af1189f6f78052595cf450e/get_dict_dfd8d70c5af1189f6f78052595cf450eNone/home/jovyan/test/2025-03-10 11:53:07.158295NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
56finishedNonecalculate_qe_e066a4b1a579b311063411694a31331c/calculate_qe_e066a4b1a579b311063411694a31331cNone/home/jovyan/test/2025-03-10 11:53:07.266154NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
67finishedNoneget_dict_11cd633613014ecf2108aa23f9897350/get_dict_11cd633613014ecf2108aa23f9897350None/home/jovyan/test/2025-03-10 11:53:17.308506NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
78finishedNonecalculate_qe_b2190abc0a1e16d1a47c05d0ea8c8674/calculate_qe_b2190abc0a1e16d1a47c05d0ea8c8674None/home/jovyan/test/2025-03-10 11:53:17.397100NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
89finishedNoneget_dict_a511a057e39eaf356b98a7d1b1ecdf3f/get_dict_a511a057e39eaf356b98a7d1b1ecdf3fNone/home/jovyan/test/2025-03-10 11:53:28.561574NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
910finishedNonecalculate_qe_0465c89bf510cf25374997a5fb1033b8/calculate_qe_0465c89bf510cf25374997a5fb1033b8None/home/jovyan/test/2025-03-10 11:53:28.650751NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
1011finishedNoneget_dict_10ab0c9e927741eb3948cb3a35cc90cc/get_dict_10ab0c9e927741eb3948cb3a35cc90ccNone/home/jovyan/test/2025-03-10 11:53:40.508244NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
1112finishedNonecalculate_qe_96621a0614889d5a19b53c1e7f67b06e/calculate_qe_96621a0614889d5a19b53c1e7f67b06eNone/home/jovyan/test/2025-03-10 11:53:40.598856NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
1213finishedNoneget_dict_17f50e68d128290a2119734cf04e045c/get_dict_17f50e68d128290a2119734cf04e045cNone/home/jovyan/test/2025-03-10 11:53:54.557383NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
1314finishedNonecalculate_qe_dcf6a099d5bd9dc0183c0de1c8ac0671/calculate_qe_dcf6a099d5bd9dc0183c0de1c8ac0671None/home/jovyan/test/2025-03-10 11:53:54.800933NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
1415finishedNoneget_list_c37b37b7f8c1f167f8fac22d85046d8b/get_list_c37b37b7f8c1f167f8fac22d85046d8bNone/home/jovyan/test/2025-03-10 11:54:09.777904NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
1516finishedNoneget_list_d1b58f3f2c80182ea50900bf545997b2/get_list_d1b58f3f2c80182ea50900bf545997b2None/home/jovyan/test/2025-03-10 11:54:10.088454NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
1617finishedNoneplot_energy_volume_curve_b91663564ad2009496e45d5ec42ea137/plot_energy_volume_curve_b91663564ad2009496e45d5ec42ea137None/home/jovyan/test/2025-03-10 11:54:10.273121NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-qinbp2b8#1PythonFunctionContainerJob0.4NoneNone
\n
"},"metadata":{}}],"execution_count":6},{"id":"e59d8cff-e204-4202-a204-692e4fb66997","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/universal_qe_to_python.ipynb b/universal_qe_to_python.ipynb deleted file mode 100644 index e071776..0000000 --- a/universal_qe_to_python.ipynb +++ /dev/null @@ -1,45 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "b0f920a2-c646-485b-af0f-48251e061163", - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.purepython import load_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "46559120-d58a-492f-b734-db27424b5659", - "metadata": {}, - "outputs": [], - "source": [ - "load_workflow_json(file_name=\"workflow_qe.json\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/universal_simple_to_aiida.ipynb b/universal_simple_to_aiida.ipynb deleted file mode 100644 index fc0a509..0000000 --- a/universal_simple_to_aiida.ipynb +++ /dev/null @@ -1,119 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.aiida import load_workflow_json\n", - "\n", - "from aiida import load_profile\n", - "load_profile()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "workgraph = load_workflow_json(file_name='workflow_simple.json')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c6a84e8cd9c74e00a845cdc99646bb83", - "version_major": 2, - "version_minor": 1 - }, - "text/plain": [ - "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# TODO: Create inputs rather than tasks out of data nodes\n", - "workgraph" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Error in storing data builtins.int", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mConfigurationError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-pythonjob/src/aiida_pythonjob/data/serializer.py:123\u001b[0m, in \u001b[0;36mgeneral_serializer\u001b[0;34m(data, serializers, deserializers, check_value)\u001b[0m\n\u001b[1;32m 122\u001b[0m serializer \u001b[38;5;241m=\u001b[39m import_from_path(updated_serializers[ep_key])\n\u001b[0;32m--> 123\u001b[0m new_node \u001b[38;5;241m=\u001b[39m \u001b[43mserializer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 124\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.aiida_venvs/adis/lib/python3.10/site-packages/aiida/orm/nodes/data/base.py:42\u001b[0m, in \u001b[0;36mBaseType.__init__\u001b[0;34m(self, value, **kwargs)\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mDerived class must define the `_type` class member\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 42\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 44\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalue \u001b[38;5;241m=\u001b[39m value \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_type()\n", - "File \u001b[0;32m~/.aiida_venvs/adis/lib/python3.10/site-packages/aiida/orm/nodes/data/data.py:60\u001b[0m, in \u001b[0;36mData.__init__\u001b[0;34m(self, source, *args, **kwargs)\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Construct a new instance, setting the ``source`` attribute if provided as a keyword argument.\"\"\"\u001b[39;00m\n\u001b[0;32m---> 60\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 61\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m source \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", - "File \u001b[0;32m~/.aiida_venvs/adis/lib/python3.10/site-packages/aiida/orm/nodes/node.py:266\u001b[0m, in \u001b[0;36mNode.__init__\u001b[0;34m(self, backend, user, computer, **kwargs)\u001b[0m\n\u001b[1;32m 259\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 260\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 261\u001b[0m backend: Optional[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mStorageBackend\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 264\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 265\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 266\u001b[0m backend \u001b[38;5;241m=\u001b[39m backend \u001b[38;5;129;01mor\u001b[39;00m \u001b[43mget_manager\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_profile_storage\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 268\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m computer \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m computer\u001b[38;5;241m.\u001b[39mis_stored:\n", - "File \u001b[0;32m~/.aiida_venvs/adis/lib/python3.10/site-packages/aiida/manage/manager.py:257\u001b[0m, in \u001b[0;36mManager.get_profile_storage\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m profile \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 257\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ConfigurationError(\n\u001b[1;32m 258\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mCould not determine the current profile. Consider loading a profile using `aiida.load_profile()`.\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 259\u001b[0m )\n\u001b[1;32m 261\u001b[0m \u001b[38;5;66;03m# request access to the profile (for example, if it is being used by a maintenance operation)\u001b[39;00m\n", - "\u001b[0;31mConfigurationError\u001b[0m: Could not determine the current profile. Consider loading a profile using `aiida.load_profile()`.", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-pythonjob/src/aiida_pythonjob/data/serializer.py:125\u001b[0m, in \u001b[0;36mgeneral_serializer\u001b[0;34m(data, serializers, deserializers, check_value)\u001b[0m\n\u001b[1;32m 124\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 125\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mError in serializing \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mep_key\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 126\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 127\u001b[0m \u001b[38;5;66;03m# try to save the node to da\u001b[39;00m\n", - "\u001b[0;31mValueError\u001b[0m: Error in serializing builtins.int: Could not determine the current profile. Consider loading a profile using `aiida.load_profile()`.", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mUnboundLocalError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-pythonjob/src/aiida_pythonjob/data/serializer.py:129\u001b[0m, in \u001b[0;36mgeneral_serializer\u001b[0;34m(data, serializers, deserializers, check_value)\u001b[0m\n\u001b[1;32m 128\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 129\u001b[0m \u001b[43mnew_node\u001b[49m\u001b[38;5;241m.\u001b[39mstore()\n\u001b[1;32m 130\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_node\n", - "\u001b[0;31mUnboundLocalError\u001b[0m: local variable 'new_node' referenced before assignment", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[4], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mworkgraph\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-workgraph/src/aiida_workgraph/workgraph.py:109\u001b[0m, in \u001b[0;36mWorkGraph.run\u001b[0;34m(self, inputs, metadata)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcheck_before_run()\n\u001b[0;32m--> 109\u001b[0m inputs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprepare_inputs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmetadata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmetadata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 110\u001b[0m result, node \u001b[38;5;241m=\u001b[39m aiida\u001b[38;5;241m.\u001b[39mengine\u001b[38;5;241m.\u001b[39mrun_get_node(WorkGraphEngine, inputs\u001b[38;5;241m=\u001b[39minputs)\n\u001b[1;32m 111\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess \u001b[38;5;241m=\u001b[39m node\n", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-workgraph/src/aiida_workgraph/workgraph.py:75\u001b[0m, in \u001b[0;36mWorkGraph.prepare_inputs\u001b[0;34m(self, metadata)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mprepare_inputs\u001b[39m(\n\u001b[1;32m 72\u001b[0m \u001b[38;5;28mself\u001b[39m, metadata: Optional[Dict[\u001b[38;5;28mstr\u001b[39m, Any]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 73\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[0;32m---> 75\u001b[0m wgdata \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_dict\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 76\u001b[0m metadata \u001b[38;5;241m=\u001b[39m metadata \u001b[38;5;129;01mor\u001b[39;00m {}\n\u001b[1;32m 77\u001b[0m inputs \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mworkgraph_data\u001b[39m\u001b[38;5;124m\"\u001b[39m: wgdata, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmetadata\u001b[39m\u001b[38;5;124m\"\u001b[39m: metadata}\n", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-workgraph/src/aiida_workgraph/workgraph.py:199\u001b[0m, in \u001b[0;36mWorkGraph.to_dict\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mto_dict\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[1;32m 198\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Convert the workgraph to a dictionary.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 199\u001b[0m wgdata \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_dict\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 200\u001b[0m wgdata[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcontext\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mctx\u001b[38;5;241m.\u001b[39m_value\n\u001b[1;32m 201\u001b[0m \u001b[38;5;66;03m# separate the links connected to the context from the main links\u001b[39;00m\n", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/node-graph/src/node_graph/node_graph.py:154\u001b[0m, in \u001b[0;36mNodeGraph.to_dict\u001b[0;34m(self, short)\u001b[0m\n\u001b[1;32m 145\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Converts the node graph to a dictionary.\u001b[39;00m\n\u001b[1;32m 146\u001b[0m \n\u001b[1;32m 147\u001b[0m \u001b[38;5;124;03mArgs:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 151\u001b[0m \u001b[38;5;124;03m Dict[str, Any]: The node graph data.\u001b[39;00m\n\u001b[1;32m 152\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 153\u001b[0m metadata: Dict[\u001b[38;5;28mstr\u001b[39m, Any] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_metadata()\n\u001b[0;32m--> 154\u001b[0m nodes: Dict[\u001b[38;5;28mstr\u001b[39m, Any] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexport_nodes_to_dict\u001b[49m\u001b[43m(\u001b[49m\u001b[43mshort\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mshort\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 155\u001b[0m links: List[Dict[\u001b[38;5;28mstr\u001b[39m, Any]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlinks_to_dict()\n\u001b[1;32m 156\u001b[0m data: Dict[\u001b[38;5;28mstr\u001b[39m, Any] \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 157\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mplatform_version\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mplatform\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m@\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mplatform_version\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 158\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124muuid\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39muuid,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 166\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdescription\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdescription,\n\u001b[1;32m 167\u001b[0m }\n", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/node-graph/src/node_graph/node_graph.py:195\u001b[0m, in \u001b[0;36mNodeGraph.export_nodes_to_dict\u001b[0;34m(self, short)\u001b[0m\n\u001b[1;32m 193\u001b[0m nodes: Dict[\u001b[38;5;28mstr\u001b[39m, Any] \u001b[38;5;241m=\u001b[39m {}\n\u001b[1;32m 194\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m node \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnodes:\n\u001b[0;32m--> 195\u001b[0m nodes[node\u001b[38;5;241m.\u001b[39mname] \u001b[38;5;241m=\u001b[39m \u001b[43mnode\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_dict\u001b[49m\u001b[43m(\u001b[49m\u001b[43mshort\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mshort\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 196\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m nodes\n", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-workgraph/src/aiida_workgraph/tasks/factory/pythonjob_task.py:50\u001b[0m, in \u001b[0;36mPythonJobTask.to_dict\u001b[0;34m(self, short)\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Overwrite the to_dict method to handle the PythonJob data.\u001b[39;00m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;124;03mBecause the data will be passed as input of the WorkGraphEngine,\u001b[39;00m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;124;03mall raw data need to be serialized.\"\"\"\u001b[39;00m\n\u001b[1;32m 49\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mto_dict(short\u001b[38;5;241m=\u001b[39mshort)\n\u001b[0;32m---> 50\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mserialize_pythonjob_data\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minputs\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msockets\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m data\n", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-workgraph/src/aiida_workgraph/tasks/factory/pythonjob_task.py:68\u001b[0m, in \u001b[0;36mPythonJobTask.serialize_pythonjob_data\u001b[0;34m(cls, input_data)\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mserialize_pythonjob_data(\u001b[38;5;28minput\u001b[39m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msockets\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m 67\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28minput\u001b[39m\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mproperty\u001b[39m\u001b[38;5;124m\"\u001b[39m, {})\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 68\u001b[0m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mserialize_socket_data\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-workgraph/src/aiida_workgraph/tasks/factory/pythonjob_task.py:98\u001b[0m, in \u001b[0;36mPythonJobTask.serialize_socket_data\u001b[0;34m(cls, data)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m value \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(value, orm\u001b[38;5;241m.\u001b[39mData):\n\u001b[1;32m 97\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m---> 98\u001b[0m data[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mproperty\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[43mgeneral_serializer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/aiida_projects/adis/git-repos/aiida-pythonjob/src/aiida_pythonjob/data/serializer.py:132\u001b[0m, in \u001b[0;36mgeneral_serializer\u001b[0;34m(data, serializers, deserializers, check_value)\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_node\n\u001b[1;32m 131\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m--> 132\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mError in storing data \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mep_key\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 134\u001b[0m \u001b[38;5;66;03m# try to serialize the data as a PickledData\u001b[39;00m\n\u001b[1;32m 135\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", - "\u001b[0;31mValueError\u001b[0m: Error in storing data builtins.int" - ] - } - ], - "source": [ - "\n", - "workgraph.run()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "ADIS", - "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.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/universal_simple_to_executorlib.ipynb b/universal_simple_to_executorlib.ipynb deleted file mode 100644 index 5b0d6ee..0000000 --- a/universal_simple_to_executorlib.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"ae0b5775-fb9d-4150-be79-d48dfb0b2cf4","cell_type":"code","source":"from executorlib import SingleNodeExecutor","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"b0f920a2-c646-485b-af0f-48251e061163","cell_type":"code","source":"from python_workflow_definition.executorlib import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"46559120-d58a-492f-b734-db27424b5659","cell_type":"code","source":"with SingleNodeExecutor(max_workers=1) as exe:\n result = load_workflow_json(file_name=\"workflow_simple.json\", exe=exe).result()","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"b37f476d-b7f8-4400-8070-83f8f2eb8bf9","cell_type":"code","source":"result","metadata":{"trusted":true},"outputs":[{"execution_count":4,"output_type":"execute_result","data":{"text/plain":"6"},"metadata":{}}],"execution_count":4},{"id":"336dfbea-7e5c-4950-a0b3-c027a2a8e935","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/universal_simple_to_jobflow.ipynb b/universal_simple_to_jobflow.ipynb deleted file mode 100644 index 16e508e..0000000 --- a/universal_simple_to_jobflow.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"eab942d5-f3c5-47e9-8b3b-a7a5a8481aed","cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"f6f83a43-4d91-4028-9661-a4700509be1b","cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"285ca46b-19e3-4870-9fd1-0c8ddbcf819c","cell_type":"code","source":"flow = load_workflow_json(file_name=\"workflow_simple.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":3},{"id":"663ac4b3-dee8-474f-a9bc-089a89bde011","cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":"2025-03-10 17:08:14,056 INFO Started executing jobs locally\n2025-03-10 17:08:14,311 INFO Starting job - add_x_and_y (34bf39dd-ba8e-4989-b35e-19b7f75d4cb9)\n2025-03-10 17:08:14,312 INFO Finished job - add_x_and_y (34bf39dd-ba8e-4989-b35e-19b7f75d4cb9)\n2025-03-10 17:08:14,312 INFO Starting job - add_x_and_y (406dbc86-1767-488d-98e2-2b1a7ce0186d)\n2025-03-10 17:08:14,313 INFO Finished job - add_x_and_y (406dbc86-1767-488d-98e2-2b1a7ce0186d)\n2025-03-10 17:08:14,314 INFO Starting job - add_x_and_y (c78a4be7-63b2-4023-a0a4-64bdc712e1cb)\n2025-03-10 17:08:14,315 INFO Finished job - add_x_and_y (c78a4be7-63b2-4023-a0a4-64bdc712e1cb)\n2025-03-10 17:08:14,316 INFO Starting job - add_x_and_y_and_z (277b97ac-a5d7-4b8a-9a2e-d1fad9ba33f3)\n2025-03-10 17:08:14,320 INFO Finished job - add_x_and_y_and_z (277b97ac-a5d7-4b8a-9a2e-d1fad9ba33f3)\n2025-03-10 17:08:14,320 INFO Finished executing jobs locally\n"},{"execution_count":4,"output_type":"execute_result","data":{"text/plain":"{'34bf39dd-ba8e-4989-b35e-19b7f75d4cb9': {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 '406dbc86-1767-488d-98e2-2b1a7ce0186d': {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 'c78a4be7-63b2-4023-a0a4-64bdc712e1cb': {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 '277b97ac-a5d7-4b8a-9a2e-d1fad9ba33f3': {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":4}]} \ No newline at end of file diff --git a/universal_simple_to_pyiron_base.ipynb b/universal_simple_to_pyiron_base.ipynb deleted file mode 100644 index 004c5cc..0000000 --- a/universal_simple_to_pyiron_base.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.12.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"4eb91f39-a8ea-4eb8-839f-076accfcf394","cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":1},{"id":"8200fd07-13a3-49a8-892d-2a4d906fc778","cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"id":"9907178d-8edd-478e-a6f7-f7ccd1c9441a","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":"82ba857d123f4aa6b4dc3d5ba3c12212"}},"metadata":{}}],"execution_count":3},{"id":"0c393ada-0eb9-4627-9f3a-25afdd30545e","cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=\"workflow_simple.json\")\ndelayed_object.draw()","metadata":{"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"","image/svg+xml":"\n\n\n\n\ncreate_function_job_e374dff0ae780ab1e07b210f7f557021\n\ncreate_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x74cfa832c6e0>\n\n\n\nx_9535ed8e05c5e928ad78f0a00c64ef8e\n\nx=<pyiron_base.project.delayed.DelayedObject object at 0x74cfa830cf80>\n\n\n\nx_9535ed8e05c5e928ad78f0a00c64ef8e->create_function_job_e374dff0ae780ab1e07b210f7f557021\n\n\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce\n\nx=1\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->x_9535ed8e05c5e928ad78f0a00c64ef8e\n\n\n\n\n\ny_7b05a8d51a33db1f46a95615fa47192b\n\ny=<pyiron_base.project.delayed.DelayedObject object at 0x74cfa832c2f0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->y_7b05a8d51a33db1f46a95615fa47192b\n\n\n\n\n\nz_fd19fa8ccbba821a6d3084f1dbe98416\n\nz=<pyiron_base.project.delayed.DelayedObject object at 0x74cfa832c2c0>\n\n\n\nx_1d847da32ecaabf6731c38f798c3d4ce->z_fd19fa8ccbba821a6d3084f1dbe98416\n\n\n\n\n\ny_7b05a8d51a33db1f46a95615fa47192b->create_function_job_e374dff0ae780ab1e07b210f7f557021\n\n\n\n\n\nz_fd19fa8ccbba821a6d3084f1dbe98416->create_function_job_e374dff0ae780ab1e07b210f7f557021\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6\n\ny=2\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->x_9535ed8e05c5e928ad78f0a00c64ef8e\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->y_7b05a8d51a33db1f46a95615fa47192b\n\n\n\n\n\ny_a9ec4f5f33f0d64e74ed5d9900bceac6->z_fd19fa8ccbba821a6d3084f1dbe98416\n\n\n\n\n"},"metadata":{}}],"execution_count":4},{"id":"006f309a-d82c-457d-a77a-8771a72dc6d3","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":5,"output_type":"execute_result","data":{"text/plain":"6"},"metadata":{}}],"execution_count":5},{"id":"12a6e779-766b-442a-a800-8e4e91bc95d3","cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[{"execution_count":6,"output_type":"execute_result","data":{"text/plain":" id status chemicalformula \\\n0 1 finished None \n1 2 finished None \n\n job \\\n0 add_x_and_y_68901482a2c5221cc845f828aabebd27 \n1 add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d \n\n subjob projectpath \\\n0 /add_x_and_y_68901482a2c5221cc845f828aabebd27 None \n1 /add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d None \n\n project timestart timestop totalcputime \\\n0 /home/jovyan/test/ 2025-03-10 17:08:30.001309 None None \n1 /home/jovyan/test/ 2025-03-10 17:08:30.169487 None None \n\n computer \\\n0 pyiron@jupyter-jan-janssen-pyt-flow-definition-2h51dzgy#1 \n1 pyiron@jupyter-jan-janssen-pyt-flow-definition-2h51dzgy#1 \n\n hamilton hamversion parentid masterid \n0 PythonFunctionContainerJob 0.4 None None \n1 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
idstatuschemicalformulajobsubjobprojectpathprojecttimestarttimestoptotalcputimecomputerhamiltonhamversionparentidmasterid
01finishedNoneadd_x_and_y_68901482a2c5221cc845f828aabebd27/add_x_and_y_68901482a2c5221cc845f828aabebd27None/home/jovyan/test/2025-03-10 17:08:30.001309NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-2h51dzgy#1PythonFunctionContainerJob0.4NoneNone
12finishedNoneadd_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d/add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8dNone/home/jovyan/test/2025-03-10 17:08:30.169487NoneNonepyiron@jupyter-jan-janssen-pyt-flow-definition-2h51dzgy#1PythonFunctionContainerJob0.4NoneNone
\n
"},"metadata":{}}],"execution_count":6},{"id":"e59d8cff-e204-4202-a204-692e4fb66997","cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/universal_simple_to_python.ipynb b/universal_simple_to_python.ipynb deleted file mode 100644 index a81cd57..0000000 --- a/universal_simple_to_python.ipynb +++ /dev/null @@ -1,45 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "b0f920a2-c646-485b-af0f-48251e061163", - "metadata": {}, - "outputs": [], - "source": [ - "from python_workflow_definition.purepython import load_workflow_json" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "46559120-d58a-492f-b734-db27424b5659", - "metadata": {}, - "outputs": [], - "source": [ - "load_workflow_json(file_name=\"workflow_simple.json\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/universal_workflow_qe.ipynb b/universal_workflow_qe.ipynb new file mode 100644 index 0000000..97803b3 --- /dev/null +++ b/universal_workflow_qe.ipynb @@ -0,0 +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":"# Load Quantum Espresso Energy Volume Curve Workflow","metadata":{}},{"cell_type":"markdown","source":"## Aiida ","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json\nfrom aiida import load_profile\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":1,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":1},{"cell_type":"code","source":"wg = load_workflow_json(file_name='workflow_qe.json')","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"cell_type":"code","source":"wg","metadata":{"trusted":true},"outputs":[{"execution_count":3,"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":"739b6f08fe1c45b6afeb16f15d26fbed"}},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"wg.run()\n","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"03/24/2025 10:28:11 AM <774> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [38|WorkGraphEngine|continue_workgraph]: tasks ready to run: pickle_node10,pickle_node11,pickle_node12,pickle_node13,pickle_node15,pickle_node16,pickle_node17,pickle_node18,pickle_node19,pickle_node20,pickle_node22,pickle_node23,pickle_node25,pickle_node27,pickle_node29\n03/24/2025 10:28:27 AM <774> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [38|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 45, 52, 59, 66, 73, 80, 87, 94, 101, 108, 115, 122, 129, 136, 143\n03/24/2025 10:28:43 AM <774> aiida.scheduler.direct: [WARNING] Unrecognized job_state 'p' for job id Activating\n03/24/2025 10:28:43 AM <774> aiida.engine.transports: [ERROR] Exception whilst using transport:\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/transports.py\", line 106, in request_transport\n yield transport_request.future\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n\nTask exception was never retrieved\nfuture: .updating() done, defined at /srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py:179> exception=IndexError('list index out of range')>\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 314, in __step_run_and_handle_result\n result = coro.send(None)\n ^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 181, in updating\n await self._update_job_info()\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n"}],"execution_count":null},{"cell_type":"code","source":"from IPython.display import Image, display\n\nplot_task = [t for t in wg.tasks if t.name.startswith('plot_energy_volume_curve')][0]\nplot_file = f\"{plot_task.node.get_remote_workdir()}/evcurve.png\"\n\ndisplay(Image(filename=str(plot_file)))\n","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## executorlib","metadata":{}},{"cell_type":"code","source":"from executorlib import SingleNodeExecutor","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.executorlib import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"with SingleNodeExecutor(max_workers=1) as exe:\n result = load_workflow_json(file_name=\"workflow_qe.json\", exe=exe).result()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"result","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## jobflow","metadata":{}},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"flow = load_workflow_json(file_name=\"workflow_qe.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## pyiron_base","metadata":{}},{"cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=\"workflow_qe.json\")\ndelayed_object.draw()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Python","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.purepython import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"load_workflow_json(file_name=\"workflow_qe.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file diff --git a/universal_workflow_simple.ipynb b/universal_workflow_simple.ipynb new file mode 100644 index 0000000..1229ac5 --- /dev/null +++ b/universal_workflow_simple.ipynb @@ -0,0 +1 @@ +{"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":"# Load Simple Workflow","metadata":{}},{"cell_type":"markdown","source":"## Aiida ","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json\n\nfrom aiida import load_profile\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":1,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":1},{"cell_type":"code","source":"workgraph = load_workflow_json(file_name='workflow_simple.json')","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"cell_type":"code","source":"# TODO: Create inputs rather than tasks out of data nodes\nworkgraph","metadata":{"trusted":true},"outputs":[{"execution_count":3,"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":"f7e3c370d4dd46b1ac161756babc37c9"}},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"\nworkgraph.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"03/24/2025 10:22:48 AM <293> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: pickle_node3,pickle_node4\n03/24/2025 10:22:49 AM <293> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 11, 18\n03/24/2025 10:22:51 AM <293> aiida.scheduler.direct: [WARNING] Unrecognized job_state 'p' for job id Activating\n03/24/2025 10:22:51 AM <293> aiida.engine.transports: [ERROR] Exception whilst using transport:\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/transports.py\", line 106, in request_transport\n yield transport_request.future\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n\nTask exception was never retrieved\nfuture: .updating() done, defined at /srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py:179> exception=IndexError('list index out of range')>\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 314, in __step_run_and_handle_result\n result = coro.send(None)\n ^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 181, in updating\n await self._update_job_info()\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:22:51 AM <293> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:22:51 AM <293> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n"}],"execution_count":null},{"cell_type":"markdown","source":"## executorlib","metadata":{}},{"cell_type":"code","source":"from executorlib import SingleNodeExecutor","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.executorlib import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"with SingleNodeExecutor(max_workers=1) as exe:\n result = load_workflow_json(file_name=\"workflow_simple.json\", exe=exe).result()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"result","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Jobflow","metadata":{}},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"flow = load_workflow_json(file_name=\"workflow_simple.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## pyiron","metadata":{}},{"cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=\"workflow_simple.json\")\ndelayed_object.draw()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Python","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.purepython import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"load_workflow_json(file_name=\"workflow_simple.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file From bb1ad77b017910c134f1af6f4b80046ebb521d13 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Mon, 24 Mar 2025 12:39:16 +0100 Subject: [PATCH 2/2] Add files via upload --- universal_workflow_qe.ipynb | 2193 ++++++++++++++++++++++++++++++- universal_workflow_simple.ipynb | 628 ++++++++- 2 files changed, 2819 insertions(+), 2 deletions(-) diff --git a/universal_workflow_qe.ipynb b/universal_workflow_qe.ipynb index 97803b3..0367aa7 100644 --- a/universal_workflow_qe.ipynb +++ b/universal_workflow_qe.ipynb @@ -1 +1,2192 @@ -{"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":"# Load Quantum Espresso Energy Volume Curve Workflow","metadata":{}},{"cell_type":"markdown","source":"## Aiida ","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json\nfrom aiida import load_profile\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":1,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":1},{"cell_type":"code","source":"wg = load_workflow_json(file_name='workflow_qe.json')","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"cell_type":"code","source":"wg","metadata":{"trusted":true},"outputs":[{"execution_count":3,"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":"739b6f08fe1c45b6afeb16f15d26fbed"}},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"wg.run()\n","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"03/24/2025 10:28:11 AM <774> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [38|WorkGraphEngine|continue_workgraph]: tasks ready to run: pickle_node10,pickle_node11,pickle_node12,pickle_node13,pickle_node15,pickle_node16,pickle_node17,pickle_node18,pickle_node19,pickle_node20,pickle_node22,pickle_node23,pickle_node25,pickle_node27,pickle_node29\n03/24/2025 10:28:27 AM <774> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [38|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 45, 52, 59, 66, 73, 80, 87, 94, 101, 108, 115, 122, 129, 136, 143\n03/24/2025 10:28:43 AM <774> aiida.scheduler.direct: [WARNING] Unrecognized job_state 'p' for job id Activating\n03/24/2025 10:28:43 AM <774> aiida.engine.transports: [ERROR] Exception whilst using transport:\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/transports.py\", line 106, in request_transport\n yield transport_request.future\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n\nTask exception was never retrieved\nfuture: .updating() done, defined at /srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py:179> exception=IndexError('list index out of range')>\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 314, in __step_run_and_handle_result\n result = coro.send(None)\n ^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 181, in updating\n await self._update_job_info()\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:28:43 AM <774> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n"}],"execution_count":null},{"cell_type":"code","source":"from IPython.display import Image, display\n\nplot_task = [t for t in wg.tasks if t.name.startswith('plot_energy_volume_curve')][0]\nplot_file = f\"{plot_task.node.get_remote_workdir()}/evcurve.png\"\n\ndisplay(Image(filename=str(plot_file)))\n","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## executorlib","metadata":{}},{"cell_type":"code","source":"from executorlib import SingleNodeExecutor","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.executorlib import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"with SingleNodeExecutor(max_workers=1) as exe:\n result = load_workflow_json(file_name=\"workflow_qe.json\", exe=exe).result()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"result","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## jobflow","metadata":{}},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"flow = load_workflow_json(file_name=\"workflow_qe.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## pyiron_base","metadata":{}},{"cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=\"workflow_qe.json\")\ndelayed_object.draw()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Python","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.purepython import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"load_workflow_json(file_name=\"workflow_qe.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Load Quantum Espresso Energy Volume Curve Workflow" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aiida " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Profile" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from python_workflow_definition.aiida import load_workflow_json\n", + "from aiida import load_profile\n", + "load_profile()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "wg = load_workflow_json(file_name='workflow_qe.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a884a79ffbd548c79c0f67ebabd4a152", + "version_major": 2, + "version_minor": 1 + }, + "text/plain": [ + "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wg" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:18:59 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: pickle_node10,pickle_node11,pickle_node12,pickle_node13,pickle_node15,pickle_node16,pickle_node17,pickle_node18,pickle_node19,pickle_node20,pickle_node22,pickle_node23,pickle_node25,pickle_node27,pickle_node29\n", + "03/24/2025 12:20:42 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1138, 1145, 1152, 1159, 1166, 1173, 1180, 1187, 1194, 1201, 1208, 1215, 1222, 1229, 1236\n", + "03/24/2025 12:25:34 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node10, type: PYTHONJOB, finished.\n", + "03/24/2025 12:25:37 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node11, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:39 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node12, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:41 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node13, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:43 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node15, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:46 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node16, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:48 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node17, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:50 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node18, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:52 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node19, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:55 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node20, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:57 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node22, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:25:59 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node23, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:26:02 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node25, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:26:04 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node27, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:26:06 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: pickle_node29, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:26:12 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_bulk_structure1\n", + "03/24/2025 12:26:15 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1303\n", + "03/24/2025 12:26:30 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: get_bulk_structure1, type: PYTHONJOB, finished.\n", + "03/24/2025 12:26:36 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict14\n", + "03/24/2025 12:26:38 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1314\n", + "03/24/2025 12:26:49 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: get_dict14, type: PYTHONJOB, finished.\n", + "03/24/2025 12:26:55 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe2\n", + "03/24/2025 12:26:57 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1325\n", + "03/24/2025 12:27:34 PM <270803> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['energy', 'volume'])\n", + "03/24/2025 12:27:35 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: calculate_qe2, type: PYTHONJOB, finished.\n", + "03/24/2025 12:27:40 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_structures3\n", + "03/24/2025 12:27:43 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1336\n", + "03/24/2025 12:27:54 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: generate_structures3, type: PYTHONJOB, finished.\n", + "03/24/2025 12:27:59 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_dict21,get_dict24,get_dict26,get_dict28,get_dict30\n", + "03/24/2025 12:28:07 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1351, 1358, 1365, 1372, 1379\n", + "03/24/2025 12:28:34 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: get_dict21, type: PYTHONJOB, finished.\n", + "03/24/2025 12:28:35 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: get_dict24, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:28:35 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: get_dict26, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:28:36 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: get_dict28, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:28:36 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: get_dict30, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:28:41 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: calculate_qe4,calculate_qe5,calculate_qe6,calculate_qe7,calculate_qe8\n", + "03/24/2025 12:28:51 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1406, 1413, 1420, 1427, 1434\n", + "03/24/2025 12:29:22 PM <270803> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", + "03/24/2025 12:29:23 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: calculate_qe4, type: PYTHONJOB, finished.\n", + "03/24/2025 12:29:29 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", + "03/24/2025 12:29:30 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1413, 1420, 1427, 1434\n", + "03/24/2025 12:29:38 PM <270803> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", + "03/24/2025 12:29:39 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: calculate_qe5, type: PYTHONJOB, finished.\n", + "03/24/2025 12:29:45 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", + "03/24/2025 12:29:47 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1420, 1427, 1434\n", + "03/24/2025 12:29:55 PM <270803> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", + "03/24/2025 12:29:55 PM <270803> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", + "03/24/2025 12:29:56 PM <270803> aiida.parser.PythonJobParser: [WARNING] Found extra results that are not included in the output: dict_keys(['structure'])\n", + "03/24/2025 12:29:56 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: calculate_qe6, type: PYTHONJOB, finished.\n", + "03/24/2025 12:29:57 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: calculate_qe7, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:29:57 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: calculate_qe8, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:30:02 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: get_list31,get_list32\n", + "03/24/2025 12:30:07 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1466, 1473\n", + "03/24/2025 12:30:22 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: get_list31, type: PYTHONJOB, finished.\n", + "03/24/2025 12:30:23 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: get_list32, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:30:28 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: plot_energy_volume_curve9\n", + "03/24/2025 12:30:30 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1488\n", + "03/24/2025 12:30:42 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|update_task_state]: Task: plot_energy_volume_curve9, type: PYTHONJOB, finished.\n", + "03/24/2025 12:30:47 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", + "03/24/2025 12:30:48 PM <270803> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1131|WorkGraphEngine|finalize]: Finalize workgraph.\n" + ] + } + ], + "source": [ + "wg.run()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXgZJREFUeJzt3Xd0VGXixvHvpJNAhhKSEAgJNYVeBAKoqFRBbGAPgmV1d7GgoosrimsBxbauP13XVbCjNMVCEARUIKGHTkILCaTQwgQSUuf+/ghkjbSElDuTeT7nzNnN5E7yzD3X3If3vfcdi2EYBiIiIiLiMtzMDiAiIiIitUsFUERERMTFqACKiIiIuBgVQBEREREXowIoIiIi4mJUAEVERERcjAqgiIiIiItRARQRERFxMSqAIiIiIi5GBVBERETExagAioiIiLgYFUARERERF6MCKCIiIuJiVABFREREXIwKoIiIiIiLUQEUERERcTEqgCIiIiIuRgVQRERExMWoAIqIiIi4GBVAERERERejAigiIiLiYlQARURERFyMCqCIiIiIi1EBFBEREXExKoAiIiIiLkYFUERERMTFqACKiIiIuBgVQBEREREXowIoIiIi4mJUAEVERERcjAqgiIiIiItRARQRERFxMSqAIiIiIi5GBVBERETExagAioiIiLgYFUARERERF6MCKCIiIuJiVABFREREXIwKoIiIiIiLUQEUERERcTEqgCIiIiIuRgVQRERExMWoAJrgpZdeom/fvvj6+tKwYcMKvcYwDKZMmUJISAj16tVjwIABbNu2rez7KSkpWCyWcz5mz5591s8rKCiga9euWCwWEhMTK5X/vffeo3Pnzvj7++Pv709MTAwLFy6s1M8QERER86gAmqCwsJDRo0fz5z//ucKvefXVV3njjTd45513WLt2LcHBwQwaNIgTJ04AEBoaSkZGRrnH888/j5+fH8OGDTvr5z355JOEhIRcUv4WLVowbdo01q1bx7p167j66qu5/vrryxVSERERcWCGmGbGjBmG1Wq96HZ2u90IDg42pk2bVvZcfn6+YbVajX//+9/nfV3Xrl2Ne+6556znf/zxRyMyMtLYtm2bARgbN24s9/1t27YZw4YNM/z8/IzAwEDjrrvuMg4fPnzBjI0aNTL++9//XvS9iIiIiPk0AugE9u3bR2ZmJoMHDy57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wQvgjh07iIuL47///S8xMTHExMTwwQcf8P3335OUlHTe18XHx3P33XczYMAAwsPD+dOf/kSXLl1Yt25duW0eeughevXqRevWrXnmmWdo2LAhGzZsqI235nI83d2IjfnfkjCGYZicSEREatrB46d44fsdAEwcHEHbwPomJ5IzHLoAxsfHY7Va6d27d9lzffr0wWq1smrVqvO+rn///ixYsICDBw9iGAbLli0jOTmZIUOGlNvmq6++4tixY9jtdmbNmkVBQQEDBgw4788tKCggJyen3EMq7vZeLfH2cGPLQRvr92ebHUdERGqQYRj8be5mThYU0yOsEff0112/jsShC2BmZiaBgYFnPR8YGEhm5vk/WeLtt98mOjqaFi1a4OXlxdChQ3n33Xfp379/2TZfffUVxcXFNGnSBG9vbx544AHmz59Pmzbn/zDqqVOnll2LaLVaCQ0NrdobdDGN/by4oWtzQAtDi4jUdbPWpvHbriN4e7gxfVRnTf06GFMK4JQpU7BYLBd8nJmutVjOPmAMwzjn82e8/fbbJCQksGDBAtavX8/rr7/OX/7yF5YsWVK2zTPPPEN2djZLlixh3bp1PPbYY4wePZotW7ac9+dOmjQJm81W9khLS6vCXnBNY/uFAxC3LZP046fMDSMiIjXiQHYeL35fetfvxCERtG6qqV9HYzFMuBjryJEjHDly5ILbhIeH88UXX/DYY4+ddddvw4YNefPNNxk3btxZrzt16hRWq5X58+czfPjwsufvu+8+Dhw4QFxcHHv27KFt27Zs3bqVDh06lG0zcOBA2rZty7///e8KvY+cnBysVis2mw1/f/8KvUbgtv/Ek7D3GH8e0IanhkaaHUdERKqRYRjEfriGFbuP0DOsEV89EONwo386f4OHGb80ICCAgICAi24XExODzWZjzZo19OrVC4DVq1djs9no27fvOV9TVFREUVERbm7lBzfd3d2x2+0A5OXlAVxwG6k54/q1ImHvMb5ck8rDV7ejnpe72ZFERKSafLEmlRW7j+Dj6cb00brr11E59DWAUVFRDB06lPvvv5+EhAQSEhK4//77GTFiBBEREWXbRUZGMn/+fAD8/f258sormThxIsuXL2ffvn3MnDmTTz75hBtvvLFs+7Zt2/LAAw+wZs0a9uzZw+uvv87ixYu54YYbzHirLmVgVBAtGtXjeF4R3yQe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99i2bRsTJkzgrrvu4pdffqlyFhGRS2Uxfv/XU0TESezcuZOoqCiWLl3KVVddBcCVV15J8+bNsVgsHD58mJ9++qls+yeffJIffviBbdu2AaU3gTz66KM8+uijpKSk0KpVKzZu3EjXrl2B0hHARo0asWzZMgYMGMDy5cu56qqrWLJkCddccw0A06ZNY9KkSezZs4fWrVsD8OCDD5KSkkJcXBy5ubkEBASwdOlSYmJiyrLcd9995OXl8cUXX9TGrhIROYtGAEXEKUVGRtK3b18++ugjAPbs2cNvv/3GPffcw44dO+jXr1+57fv168euXbsoKSmp0u/t3Llz2f8PCgrC19e3rPydee7QoUMAbN++nfz8fAYNGkT9+vXLHp988gl79uypUg4RkarwMDuAiMiluvfeexk/fjz/93//x4wZMwgLC+Oaa67BMAwsFku5bS802eHm5nbWNkVFRefc1tPTs+z/WyyWcl+fec5utwOU/e8PP/xA8+bNy23n7e19sbcnIlJjNAIoIk7rlltuwd3dnS+++IKPP/6YcePGYbFYiI6OZsWKFeW2XbVqFe3bt8fd3f2sn9O0aVMAMjIyyp77/Q0hlyo6Ohpvb29SU1Np27ZtuUdoaGiVf76IyKXSCKCIOK369etz66238vTTT2Oz2Rg7diwAjz/+OJdddhkvvPACt956K/Hx8bzzzju8++675/w59erVo0+fPkybNo3w8HCOHDnCM888U+V8DRo04IknnmDChAnY7Xb69+9PTk4Oq1aton79+tx9991V/h0iIpdCI4Ai4tTuvfdesrOzGThwIC1btgSge/fufP3118yaNYuOHTvy7LPP8o9//KOsIJ7LRx99RFFRET179uSRRx7hxRdfrJZ8L7zwAs8++yxTp04lKiqKIUOG8N1339GqVatq+fkiIpdCdwGLiIiIuBiNAIqIiIi4GBVAERERERejAigiIiLiYlQARURERFyMCqCIiIiIi1EBFBEREXExKoAiIiIiLkYFUERERMTFqACKiIiIuBgVQBEREREXowIoIiIi4mJUAEVERERczP8DlapuQsP0WcUAAAAASUVORK5CYII=", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "plot_task = [t for t in wg.tasks if t.name.startswith('plot_energy_volume_curve')][0]\n", + "plot_file = f\"{plot_task.node.get_remote_workdir()}/evcurve.png\"\n", + "\n", + "display(Image(filename=str(plot_file)))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## executorlib" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from executorlib import SingleNodeExecutor" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.executorlib import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "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", + "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", + "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", + "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", + "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + ] + } + ], + "source": [ + "with SingleNodeExecutor(max_workers=1) as exe:\n", + " result = load_workflow_json(file_name=\"workflow_qe.json\", exe=exe).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## jobflow" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jan/mambaforge/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", + "/home/jan/mambaforge/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" + ] + } + ], + "source": [ + "from jobflow.managers.local import run_locally" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "flow = load_workflow_json(file_name=\"workflow_qe.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2025-03-24 12:32:15,747 INFO Started executing jobs locally\n", + "2025-03-24 12:32:16,046 INFO Starting job - get_bulk_structure (041f2e15-6338-4f68-91fb-122e458b20e8)\n", + "2025-03-24 12:32:16,053 INFO Finished job - get_bulk_structure (041f2e15-6338-4f68-91fb-122e458b20e8)\n", + "2025-03-24 12:32:16,054 INFO Starting job - get_dict (d25b2abe-3024-4121-af08-dea958eaee16)\n", + "2025-03-24 12:32:16,056 INFO Finished job - get_dict (d25b2abe-3024-4121-af08-dea958eaee16)\n", + "2025-03-24 12:32:16,057 INFO Starting job - calculate_qe (a78a5ae9-7635-4abf-ad2a-9b5377793e35)\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-03-24 12:32:41,924 INFO Finished job - calculate_qe (a78a5ae9-7635-4abf-ad2a-9b5377793e35)\n", + "2025-03-24 12:32:41,925 INFO Starting job - generate_structures (5669ec8d-9076-45cb-bb5c-ab6e207ee0ef)\n", + "2025-03-24 12:32:41,934 INFO Finished job - generate_structures (5669ec8d-9076-45cb-bb5c-ab6e207ee0ef)\n", + "2025-03-24 12:32:41,935 INFO Starting job - get_dict (9dadccbc-66b1-4416-a281-676b2a57609c)\n", + "2025-03-24 12:32:41,938 INFO Finished job - get_dict (9dadccbc-66b1-4416-a281-676b2a57609c)\n", + "2025-03-24 12:32:41,942 INFO Starting job - get_dict (dbfbc57f-2afd-415b-9e6d-131a6a4c22b2)\n", + "2025-03-24 12:32:41,947 INFO Finished job - get_dict (dbfbc57f-2afd-415b-9e6d-131a6a4c22b2)\n", + "2025-03-24 12:32:41,948 INFO Starting job - get_dict (f02ae3f7-caba-4339-bca3-6dd01bb5eb35)\n", + "2025-03-24 12:32:41,950 INFO Finished job - get_dict (f02ae3f7-caba-4339-bca3-6dd01bb5eb35)\n", + "2025-03-24 12:32:41,950 INFO Starting job - get_dict (ac13c131-a011-41c1-8a71-693259fea62c)\n", + "2025-03-24 12:32:41,953 INFO Finished job - get_dict (ac13c131-a011-41c1-8a71-693259fea62c)\n", + "2025-03-24 12:32:41,954 INFO Starting job - get_dict (71995870-6431-44ba-9e9d-b5a65ccffde4)\n", + "2025-03-24 12:32:41,957 INFO Finished job - get_dict (71995870-6431-44ba-9e9d-b5a65ccffde4)\n", + "2025-03-24 12:32:41,958 INFO Starting job - calculate_qe (ffc5f5ec-270b-4c87-ad03-ec87d2b546cb)\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-03-24 12:32:46,801 INFO Finished job - calculate_qe (ffc5f5ec-270b-4c87-ad03-ec87d2b546cb)\n", + "2025-03-24 12:32:46,801 INFO Starting job - calculate_qe (e5d3a837-2d19-47af-a4ff-f6d3ee5d77b7)\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-03-24 12:32:52,036 INFO Finished job - calculate_qe (e5d3a837-2d19-47af-a4ff-f6d3ee5d77b7)\n", + "2025-03-24 12:32:52,036 INFO Starting job - calculate_qe (d4200f87-6adc-4ad7-85aa-8c5e7a6c01b4)\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-03-24 12:32:57,695 INFO Finished job - calculate_qe (d4200f87-6adc-4ad7-85aa-8c5e7a6c01b4)\n", + "2025-03-24 12:32:57,696 INFO Starting job - calculate_qe (8d7b85d2-596a-49c7-82cd-bdbe6ed210cf)\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-03-24 12:33:04,198 INFO Finished job - calculate_qe (8d7b85d2-596a-49c7-82cd-bdbe6ed210cf)\n", + "2025-03-24 12:33:04,198 INFO Starting job - calculate_qe (ac1d8c62-5009-4eff-9da9-3d81e8fa3883)\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-03-24 12:33:10,842 INFO Finished job - calculate_qe (ac1d8c62-5009-4eff-9da9-3d81e8fa3883)\n", + "2025-03-24 12:33:10,843 INFO Starting job - get_list (5bd1c237-1811-492f-8a64-fff88854cfbf)\n", + "2025-03-24 12:33:10,849 INFO Finished job - get_list (5bd1c237-1811-492f-8a64-fff88854cfbf)\n", + "2025-03-24 12:33:10,851 INFO Starting job - get_list (25dc1025-ba8f-4621-ad3b-244f22db9d59)\n", + "2025-03-24 12:33:10,858 INFO Finished job - get_list (25dc1025-ba8f-4621-ad3b-244f22db9d59)\n", + "2025-03-24 12:33:10,859 INFO Starting job - plot_energy_volume_curve (4cd6c2ac-952a-4836-8694-7da9065a8782)\n", + "2025-03-24 12:33:10,985 INFO Finished job - plot_energy_volume_curve (4cd6c2ac-952a-4836-8694-7da9065a8782)\n", + "2025-03-24 12:33:10,985 INFO Finished executing jobs locally\n" + ] + }, + { + "data": { + "text/plain": [ + "{'041f2e15-6338-4f68-91fb-122e458b20e8': {1: Response(output='{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " 'd25b2abe-3024-4121-af08-dea958eaee16': {1: Response(output={'structure': '{\"immutable_id\": null, \"last_modified\": null, \"elements\": [\"Al\"], \"nelements\": 1, \"elements_ratios\": [1.0], \"chemical_formula_descriptive\": \"Al4\", \"chemical_formula_reduced\": \"Al\", \"chemical_formula_hill\": null, \"chemical_formula_anonymous\": \"A\", \"dimension_types\": [1, 1, 1], \"nperiodic_dimensions\": 3, \"lattice_vectors\": [[4.05, 0.0, 0.0], [0.0, 4.05, 0.0], [0.0, 0.0, 4.05]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.025, 2.025], [2.025, 0.0, 2.025], [2.025, 2.025, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'pseudopotentials': {'Al': 'Al.pbe-n-kjpaw_psl.1.0.0.UPF'}, 'kpts': [3, 3, 3], 'calculation': 'vc-relax', 'smearing': 0.02}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " 'a78a5ae9-7635-4abf-ad2a-9b5377793e35': {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.045637215947011, 0.0, 0.0], [0.0, 4.045637215947011, 0.0], [0.0, 0.0, 4.045637215947011]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818607973506, 2.022818607973506], [2.022818607973506, 0.0, 2.022818607973506], [2.022818607973506, 2.022818607973506, 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.9365262253552, 'volume': 66.21567448237082}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " '5669ec8d-9076-45cb-bb5c-ab6e207ee0ef': {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.9060197859623123, 0.0, 0.0], [0.0, 3.9060197859623123, 0.0], [0.0, 0.0, 3.9060197859623123]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981157, 1.953009892981157], [1.953009892981157, 0.0, 1.953009892981157], [1.953009892981157, 1.953009892981157, 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.977053844318216, 0.0, 0.0], [0.0, 3.977053844318216, 0.0], [0.0, 0.0, 3.977053844318216]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221591089, 1.9885269221591089], [1.9885269221591089, 0.0, 1.9885269221591089], [1.9885269221591089, 1.9885269221591089, 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.045637215947011, 0.0, 0.0], [0.0, 4.045637215947011, 0.0], [0.0, 0.0, 4.045637215947011]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818607973506, 2.022818607973506], [2.022818607973506, 0.0, 2.022818607973506], [2.022818607973506, 2.022818607973506, 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.111970927283129, 0.0, 0.0], [0.0, 4.111970927283129, 0.0], [0.0, 0.0, 4.111970927283129]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636415653, 2.0559854636415653], [2.0559854636415653, 0.0, 2.0559854636415653], [2.0559854636415653, 2.0559854636415653, 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.176230852372356, 0.0, 0.0], [0.0, 4.176230852372356, 0.0], [0.0, 0.0, 4.176230852372356]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115426186179, 2.088115426186179], [2.088115426186179, 0.0, 2.088115426186179], [2.088115426186179, 2.088115426186179, 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/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " '9dadccbc-66b1-4416-a281-676b2a57609c': {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.9060197859623123, 0.0, 0.0], [0.0, 3.9060197859623123, 0.0], [0.0, 0.0, 3.9060197859623123]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.953009892981157, 1.953009892981157], [1.953009892981157, 0.0, 1.953009892981157], [1.953009892981157, 1.953009892981157, 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/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " 'dbfbc57f-2afd-415b-9e6d-131a6a4c22b2': {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.977053844318216, 0.0, 0.0], [0.0, 3.977053844318216, 0.0], [0.0, 0.0, 3.977053844318216]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269221591089, 1.9885269221591089], [1.9885269221591089, 0.0, 1.9885269221591089], [1.9885269221591089, 1.9885269221591089, 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/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " 'f02ae3f7-caba-4339-bca3-6dd01bb5eb35': {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.045637215947011, 0.0, 0.0], [0.0, 4.045637215947011, 0.0], [0.0, 0.0, 4.045637215947011]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.022818607973506, 2.022818607973506], [2.022818607973506, 0.0, 2.022818607973506], [2.022818607973506, 2.022818607973506, 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/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " 'ac13c131-a011-41c1-8a71-693259fea62c': {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.111970927283129, 0.0, 0.0], [0.0, 4.111970927283129, 0.0], [0.0, 0.0, 4.111970927283129]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854636415653, 2.0559854636415653], [2.0559854636415653, 0.0, 2.0559854636415653], [2.0559854636415653, 2.0559854636415653, 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/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " '71995870-6431-44ba-9e9d-b5a65ccffde4': {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.176230852372356, 0.0, 0.0], [0.0, 4.176230852372356, 0.0], [0.0, 0.0, 4.176230852372356]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.088115426186179, 2.088115426186179], [2.088115426186179, 0.0, 2.088115426186179], [2.088115426186179, 2.088115426186179, 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/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " 'ffc5f5ec-270b-4c87-ad03-ec87d2b546cb': {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.906019768889345, 0.0, 0.0], [0.0, 3.906019768889345, 0.0], [0.0, 0.0, 3.906019768889345]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9530098844635175, 1.9530098844635175], [1.9530098844635175, 0.0, 1.9530098844635175], [1.9530098844635175, 1.9530098844635175, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.8457446150599, 'volume': 59.59410625268743}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " 'e5d3a837-2d19-47af-a4ff-f6d3ee5d77b7': {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.97705382693477, 0.0, 0.0], [0.0, 3.97705382693477, 0.0], [0.0, 0.0, 3.97705382693477]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 1.9885269135082746, 1.9885269135082746], [1.9885269135082746, 0.0, 1.9885269135082746], [1.9885269135082746, 1.9885269135082746, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9161488594557, 'volume': 62.904889933392624}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " 'd4200f87-6adc-4ad7-85aa-8c5e7a6c01b4': {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.045637198263786, 0.0, 0.0], [0.0, 4.045637198263786, 0.0], [0.0, 0.0, 4.045637198263786]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0228185991583887, 2.0228185991583887], [2.0228185991583887, 0.0, 2.0228185991583887], [2.0228185991583887, 2.0228185991583887, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9365241668331, 'volume': 66.21567361409724}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " '8d7b85d2-596a-49c7-82cd-bdbe6ed210cf': {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.1119709093099654, 0.0, 0.0], [0.0, 4.1119709093099654, 0.0], [0.0, 0.0, 4.1119709093099654]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0559854546134178, 2.0559854546134178], [2.0559854546134178, 0.0, 2.0559854546134178], [2.0559854546134178, 2.0559854546134178, 0.0]], \"nsites\": 4, \"species\": [{\"name\": \"Al\", \"chemical_symbols\": [\"Al\"], \"concentration\": [1.0], \"mass\": null, \"original_name\": null, \"attached\": null, \"nattached\": null}], \"species_at_sites\": [\"Al\", \"Al\", \"Al\", \"Al\"], \"assemblies\": null, \"structure_features\": []}', 'energy': -1074.9192860025823, 'volume': 69.52645729480223}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " 'ac1d8c62-5009-4eff-9da9-3d81e8fa3883': {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.17623083411832, 0.0, 0.0], [0.0, 4.17623083411832, 0.0], [0.0, 0.0, 4.17623083411832]], \"space_group_symmetry_operations_xyz\": null, \"space_group_symbol_hall\": null, \"space_group_symbol_hermann_mauguin\": null, \"space_group_symbol_hermann_mauguin_extended\": null, \"space_group_it_number\": null, \"cartesian_site_positions\": [[0.0, 0.0, 0.0], [0.0, 2.0881154170729803, 2.0881154170729803], [2.0881154170729803, 0.0, 2.0881154170729803], [2.0881154170729803, 2.0881154170729803, 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.8737904693426, 'volume': 72.83724097550721}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " '5bd1c237-1811-492f-8a64-fff88854cfbf': {1: Response(output=[59.59410625268743, 62.904889933392624, 66.21567361409724, 69.52645729480223, 72.83724097550721], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " '25dc1025-ba8f-4621-ad3b-244f22db9d59': {1: Response(output=[-1074.8457446150599, -1074.9161488594557, -1074.9365241668331, -1074.9192860025823, -1074.8737904693426], detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " '4cd6c2ac-952a-4836-8694-7da9065a8782': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))}}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "result = run_locally(flow)\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## pyiron_base" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from pyiron_base import Project" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "990e86745ff24446bfd76f3551e33851", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2 [00:00\n", + "\n", + "\n", + "\n", + "\n", + "create_function_job_cb6eaf1a0ab35ca3708f9ef60ed5c9f8\n", + "\n", + "create_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c39340>\n", + "\n", + "\n", + "\n", + "volume_lst_c9068430454016103f60651b43b4dcc8\n", + "\n", + "volume_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c39940>\n", + "\n", + "\n", + "\n", + "volume_lst_c9068430454016103f60651b43b4dcc8->create_function_job_cb6eaf1a0ab35ca3708f9ef60ed5c9f8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "0_bedf407c5223f06b0f239a97793af58c\n", + "\n", + "0=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70440>\n", + "\n", + "\n", + "\n", + "0_bedf407c5223f06b0f239a97793af58c->volume_lst_c9068430454016103f60651b43b4dcc8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_2e9abb255f1a31f7d29b4451ad422add\n", + "\n", + "working_directory=strain_0\n", + "\n", + "\n", + "\n", + "working_directory_2e9abb255f1a31f7d29b4451ad422add->0_bedf407c5223f06b0f239a97793af58c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "0_8ed9c437a14f78e689be64f3c715fbe7\n", + "\n", + "0=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70a70>\n", + "\n", + "\n", + "\n", + "working_directory_2e9abb255f1a31f7d29b4451ad422add->0_8ed9c437a14f78e689be64f3c715fbe7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "energy_lst_bf96bef3f1b94b55769a6a2811b37329\n", + "\n", + "energy_lst=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c39580>\n", + "\n", + "\n", + "\n", + "0_8ed9c437a14f78e689be64f3c715fbe7->energy_lst_bf96bef3f1b94b55769a6a2811b37329\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "input_dict_0e29c6e3788b7229650c4c3d33a354df\n", + "\n", + "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c72240>\n", + "\n", + "\n", + "\n", + "input_dict_0e29c6e3788b7229650c4c3d33a354df->0_bedf407c5223f06b0f239a97793af58c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "input_dict_0e29c6e3788b7229650c4c3d33a354df->0_8ed9c437a14f78e689be64f3c715fbe7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "structure_511e535413e225fce7fecd801ec3f7a4\n", + "\n", + "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70fb0>\n", + "\n", + "\n", + "\n", + "structure_511e535413e225fce7fecd801ec3f7a4->input_dict_0e29c6e3788b7229650c4c3d33a354df\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "structure_d3fbe157b5f95ba04ef3e62a8bdf9412\n", + "\n", + "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c71fa0>\n", + "\n", + "\n", + "\n", + "structure_d3fbe157b5f95ba04ef3e62a8bdf9412->structure_511e535413e225fce7fecd801ec3f7a4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "structure_9b1652254f90cf3728e21985e05fe93c\n", + "\n", + "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c71310>\n", + "\n", + "\n", + "\n", + "structure_d3fbe157b5f95ba04ef3e62a8bdf9412->structure_9b1652254f90cf3728e21985e05fe93c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "structure_f7ed58b2036dba82dce228ab668cd069\n", + "\n", + "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c71640>\n", + "\n", + "\n", + "\n", + "structure_d3fbe157b5f95ba04ef3e62a8bdf9412->structure_f7ed58b2036dba82dce228ab668cd069\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "structure_8bbfce94a024aaccd7c61f2059dd56c1\n", + "\n", + "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c71940>\n", + "\n", + "\n", + "\n", + "structure_d3fbe157b5f95ba04ef3e62a8bdf9412->structure_8bbfce94a024aaccd7c61f2059dd56c1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "structure_c20c092ff65943df5133c532761d47ea\n", + "\n", + "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c71c70>\n", + "\n", + "\n", + "\n", + "structure_d3fbe157b5f95ba04ef3e62a8bdf9412->structure_c20c092ff65943df5133c532761d47ea\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "input_dict_859a03a589974a375b43b1cffd8aa940\n", + "\n", + "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c71880>\n", + "\n", + "\n", + "\n", + "structure_9b1652254f90cf3728e21985e05fe93c->input_dict_859a03a589974a375b43b1cffd8aa940\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "input_dict_b09fd69c34df64b86140c92b6d7607a2\n", + "\n", + "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70f80>\n", + "\n", + "\n", + "\n", + "structure_f7ed58b2036dba82dce228ab668cd069->input_dict_b09fd69c34df64b86140c92b6d7607a2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "input_dict_5d9d6d6520afd84bb5b182c4dd21a9a9\n", + "\n", + "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997ca4b60>\n", + "\n", + "\n", + "\n", + "structure_8bbfce94a024aaccd7c61f2059dd56c1->input_dict_5d9d6d6520afd84bb5b182c4dd21a9a9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "input_dict_b6e42db435fc0e2f737d5ef212f69e4d\n", + "\n", + "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997ca43b0>\n", + "\n", + "\n", + "\n", + "structure_c20c092ff65943df5133c532761d47ea->input_dict_b6e42db435fc0e2f737d5ef212f69e4d\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_a17ade9a563d8dcadb655fb2e1c743a7\n", + "\n", + "working_directory=mini\n", + "\n", + "\n", + "\n", + "working_directory_a17ade9a563d8dcadb655fb2e1c743a7->structure_d3fbe157b5f95ba04ef3e62a8bdf9412\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "input_dict_972e7e91f3308c74276cd42fbf65abce\n", + "\n", + "input_dict=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c722d0>\n", + "\n", + "\n", + "\n", + "input_dict_972e7e91f3308c74276cd42fbf65abce->structure_d3fbe157b5f95ba04ef3e62a8bdf9412\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "structure_23007ba7c90b693e769d865e21be273c\n", + "\n", + "structure=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c73890>\n", + "\n", + "\n", + "\n", + "structure_23007ba7c90b693e769d865e21be273c->input_dict_972e7e91f3308c74276cd42fbf65abce\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "element_467734216d9bd2497ffd28d5cd6daba0\n", + "\n", + "element=Al\n", + "\n", + "\n", + "\n", + "element_467734216d9bd2497ffd28d5cd6daba0->structure_23007ba7c90b693e769d865e21be273c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "a_aea0574e321c6f75f923c059730e9537\n", + "\n", + "a=4.05\n", + "\n", + "\n", + "\n", + "a_aea0574e321c6f75f923c059730e9537->structure_23007ba7c90b693e769d865e21be273c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "cubic_bad787c53fa02a5559fe570238fdb23a\n", + "\n", + "cubic=True\n", + "\n", + "\n", + "\n", + "cubic_bad787c53fa02a5559fe570238fdb23a->structure_23007ba7c90b693e769d865e21be273c\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_0e29c6e3788b7229650c4c3d33a354df\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_972e7e91f3308c74276cd42fbf65abce\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_859a03a589974a375b43b1cffd8aa940\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_b09fd69c34df64b86140c92b6d7607a2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_5d9d6d6520afd84bb5b182c4dd21a9a9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pseudopotentials_453cdcc0d627a851e196cd899d956d10->input_dict_b6e42db435fc0e2f737d5ef212f69e4d\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "1_952b7a638cb23d6447a64859b972b3a4\n", + "\n", + "1=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70470>\n", + "\n", + "\n", + "\n", + "input_dict_859a03a589974a375b43b1cffd8aa940->1_952b7a638cb23d6447a64859b972b3a4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "1_036efb9215b713e958b8dd85057d753e\n", + "\n", + "1=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70aa0>\n", + "\n", + "\n", + "\n", + "input_dict_859a03a589974a375b43b1cffd8aa940->1_036efb9215b713e958b8dd85057d753e\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "2_d09fd8e70a244d2db99603fd8e6e890a\n", + "\n", + "2=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70650>\n", + "\n", + "\n", + "\n", + "input_dict_b09fd69c34df64b86140c92b6d7607a2->2_d09fd8e70a244d2db99603fd8e6e890a\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "2_51fa8d960c548facc3b09033f35bfb12\n", + "\n", + "2=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c73e30>\n", + "\n", + "\n", + "\n", + "input_dict_b09fd69c34df64b86140c92b6d7607a2->2_51fa8d960c548facc3b09033f35bfb12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "3_1b60c9537e89a6513560adde34dc9d92\n", + "\n", + "3=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c702f0>\n", + "\n", + "\n", + "\n", + "input_dict_5d9d6d6520afd84bb5b182c4dd21a9a9->3_1b60c9537e89a6513560adde34dc9d92\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "3_f404f07b1a30b4c702dedeb519ad4dd4\n", + "\n", + "3=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70920>\n", + "\n", + "\n", + "\n", + "input_dict_5d9d6d6520afd84bb5b182c4dd21a9a9->3_f404f07b1a30b4c702dedeb519ad4dd4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4_ec51012e6cf2dd3415feca7f1eaffa89\n", + "\n", + "4=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70230>\n", + "\n", + "\n", + "\n", + "input_dict_b6e42db435fc0e2f737d5ef212f69e4d->4_ec51012e6cf2dd3415feca7f1eaffa89\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4_23143b92edf0e6dd5e7807fcd5e79202\n", + "\n", + "4=<pyiron_base.project.delayed.DelayedObject object at 0x7f5997c70890>\n", + "\n", + "\n", + "\n", + "input_dict_b6e42db435fc0e2f737d5ef212f69e4d->4_23143b92edf0e6dd5e7807fcd5e79202\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpts_e961a9390797b0f6f8887a402ea3e9aa\n", + "\n", + "kpts=[3, 3, 3]\n", + "\n", + "\n", + "\n", + "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_0e29c6e3788b7229650c4c3d33a354df\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_972e7e91f3308c74276cd42fbf65abce\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_859a03a589974a375b43b1cffd8aa940\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b09fd69c34df64b86140c92b6d7607a2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_5d9d6d6520afd84bb5b182c4dd21a9a9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpts_e961a9390797b0f6f8887a402ea3e9aa->input_dict_b6e42db435fc0e2f737d5ef212f69e4d\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "calculation_77b75a01e65d83962d14fa8a882d6c34\n", + "\n", + "calculation=vc-relax\n", + "\n", + "\n", + "\n", + "calculation_77b75a01e65d83962d14fa8a882d6c34->input_dict_972e7e91f3308c74276cd42fbf65abce\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "smearing_64a632a7e5bfbb7d0c6face9b82082a9\n", + "\n", + "smearing=0.02\n", + "\n", + "\n", + "\n", + "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_0e29c6e3788b7229650c4c3d33a354df\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_972e7e91f3308c74276cd42fbf65abce\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_859a03a589974a375b43b1cffd8aa940\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b09fd69c34df64b86140c92b6d7607a2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_5d9d6d6520afd84bb5b182c4dd21a9a9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "smearing_64a632a7e5bfbb7d0c6face9b82082a9->input_dict_b6e42db435fc0e2f737d5ef212f69e4d\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_511e535413e225fce7fecd801ec3f7a4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_9b1652254f90cf3728e21985e05fe93c\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_f7ed58b2036dba82dce228ab668cd069\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_8bbfce94a024aaccd7c61f2059dd56c1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "strain_lst_2d8c38dac8f1aeeeecfa3c0b1cc8a781->structure_c20c092ff65943df5133c532761d47ea\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "calculation_bc91e0ce7227762f507f47b85f2f0a83\n", + "\n", + "calculation=scf\n", + "\n", + "\n", + "\n", + "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_0e29c6e3788b7229650c4c3d33a354df\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_859a03a589974a375b43b1cffd8aa940\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b09fd69c34df64b86140c92b6d7607a2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_5d9d6d6520afd84bb5b182c4dd21a9a9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "calculation_bc91e0ce7227762f507f47b85f2f0a83->input_dict_b6e42db435fc0e2f737d5ef212f69e4d\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "1_952b7a638cb23d6447a64859b972b3a4->volume_lst_c9068430454016103f60651b43b4dcc8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_5423d2cc67129a6d0383af6f347df5bd\n", + "\n", + "working_directory=strain_1\n", + "\n", + "\n", + "\n", + "working_directory_5423d2cc67129a6d0383af6f347df5bd->1_952b7a638cb23d6447a64859b972b3a4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_5423d2cc67129a6d0383af6f347df5bd->1_036efb9215b713e958b8dd85057d753e\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "1_036efb9215b713e958b8dd85057d753e->energy_lst_bf96bef3f1b94b55769a6a2811b37329\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "2_d09fd8e70a244d2db99603fd8e6e890a->volume_lst_c9068430454016103f60651b43b4dcc8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_cc646e064ddfc4b2811aba3d86d27992\n", + "\n", + "working_directory=strain_2\n", + "\n", + "\n", + "\n", + "working_directory_cc646e064ddfc4b2811aba3d86d27992->2_d09fd8e70a244d2db99603fd8e6e890a\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_cc646e064ddfc4b2811aba3d86d27992->2_51fa8d960c548facc3b09033f35bfb12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "2_51fa8d960c548facc3b09033f35bfb12->energy_lst_bf96bef3f1b94b55769a6a2811b37329\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "3_1b60c9537e89a6513560adde34dc9d92->volume_lst_c9068430454016103f60651b43b4dcc8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_e27768d53df6cd8dc245c52054ecf31f\n", + "\n", + "working_directory=strain_3\n", + "\n", + "\n", + "\n", + "working_directory_e27768d53df6cd8dc245c52054ecf31f->3_1b60c9537e89a6513560adde34dc9d92\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_e27768d53df6cd8dc245c52054ecf31f->3_f404f07b1a30b4c702dedeb519ad4dd4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "3_f404f07b1a30b4c702dedeb519ad4dd4->energy_lst_bf96bef3f1b94b55769a6a2811b37329\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4_ec51012e6cf2dd3415feca7f1eaffa89->volume_lst_c9068430454016103f60651b43b4dcc8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_72bba39b22d2b7ce154d37c7e8c658b7\n", + "\n", + "working_directory=strain_4\n", + "\n", + "\n", + "\n", + "working_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_ec51012e6cf2dd3415feca7f1eaffa89\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "working_directory_72bba39b22d2b7ce154d37c7e8c658b7->4_23143b92edf0e6dd5e7807fcd5e79202\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4_23143b92edf0e6dd5e7807fcd5e79202->energy_lst_bf96bef3f1b94b55769a6a2811b37329\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "energy_lst_bf96bef3f1b94b55769a6a2811b37329->create_function_job_cb6eaf1a0ab35ca3708f9ef60ed5c9f8\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "delayed_object = load_workflow_json(project=pr, file_name=\"workflow_qe.json\")\n", + "delayed_object.draw()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The job get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f was saved and received the ID: 8\n", + "The job get_dict_1e47509b88d63a21fd421686554c8f4a was saved and received the ID: 9\n", + "The job calculate_qe_e3c0bf43f7edf24d215901bf93271e87 was saved and received the ID: 10\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_4f19b30f71f1958da8dbd3a89753da5d was saved and received the ID: 11\n", + "The job get_dict_13e432fdcf23d1fa277df2f0a8fdd0eb was saved and received the ID: 12\n", + "The job calculate_qe_936c506dc0da610ea26659ab1a1ff5e7 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_eab85cbca6391480353d104f46660ea0 was saved and received the ID: 14\n", + "The job calculate_qe_e8256936e58b4db30b0eb588c966b5fb 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_b75a4287000474f9abe3bb080edb15c6 was saved and received the ID: 16\n", + "The job calculate_qe_c1ba1aad76f28e1763f1f3aad86c3ac2 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_dict_f676b23e7feba42ed75061c1a43ee669 was saved and received the ID: 18\n", + "The job calculate_qe_58ae4770d2bd3904dee9a5a268621254 was saved and received the ID: 19\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_a4ae30e61c1e61b3dd6b6f1a94cdb1e9 was saved and received the ID: 20\n", + "The job calculate_qe_e45155c3ed670f48efe449544b1d3cf5 was saved and received the ID: 21\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_be666759994036119e95398e7f2b8bce was saved and received the ID: 22\n", + "The job get_list_c06fe3108c8f15278a0857a288d83e09 was saved and received the ID: 23\n", + "The job plot_energy_volume_curve_18ffc37f2b5436578a3e562f03613e43 was saved and received the ID: 24\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "delayed_object.pull()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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
08finishedNoneget_bulk_structure_f1e730ed97e30e5439e855d2ac41396f/get_bulk_structure_f1e730ed97e30e5439e855d2ac41396fNone/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:12.350506NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
19finishedNoneget_dict_1e47509b88d63a21fd421686554c8f4a/get_dict_1e47509b88d63a21fd421686554c8f4aNone/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:12.520232NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
210finishedNonecalculate_qe_e3c0bf43f7edf24d215901bf93271e87/calculate_qe_e3c0bf43f7edf24d215901bf93271e87None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:12.715777NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
311finishedNonegenerate_structures_4f19b30f71f1958da8dbd3a89753da5d/generate_structures_4f19b30f71f1958da8dbd3a89753da5dNone/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:39.244095NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
412finishedNoneget_dict_13e432fdcf23d1fa277df2f0a8fdd0eb/get_dict_13e432fdcf23d1fa277df2f0a8fdd0ebNone/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:39.464450NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
513finishedNonecalculate_qe_936c506dc0da610ea26659ab1a1ff5e7/calculate_qe_936c506dc0da610ea26659ab1a1ff5e7None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:39.604777NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
614finishedNoneget_dict_eab85cbca6391480353d104f46660ea0/get_dict_eab85cbca6391480353d104f46660ea0None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:46.045978NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
715finishedNonecalculate_qe_e8256936e58b4db30b0eb588c966b5fb/calculate_qe_e8256936e58b4db30b0eb588c966b5fbNone/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:46.427849NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
816finishedNoneget_dict_b75a4287000474f9abe3bb080edb15c6/get_dict_b75a4287000474f9abe3bb080edb15c6None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:52.460128NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
917finishedNonecalculate_qe_c1ba1aad76f28e1763f1f3aad86c3ac2/calculate_qe_c1ba1aad76f28e1763f1f3aad86c3ac2None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:52.598890NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
1018finishedNoneget_dict_f676b23e7feba42ed75061c1a43ee669/get_dict_f676b23e7feba42ed75061c1a43ee669None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:58.613473NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
1119finishedNonecalculate_qe_58ae4770d2bd3904dee9a5a268621254/calculate_qe_58ae4770d2bd3904dee9a5a268621254None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:33:58.758885NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
1220finishedNoneget_dict_a4ae30e61c1e61b3dd6b6f1a94cdb1e9/get_dict_a4ae30e61c1e61b3dd6b6f1a94cdb1e9None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:34:05.587973NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
1321finishedNonecalculate_qe_e45155c3ed670f48efe449544b1d3cf5/calculate_qe_e45155c3ed670f48efe449544b1d3cf5None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:34:05.729420NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
1422finishedNoneget_list_be666759994036119e95398e7f2b8bce/get_list_be666759994036119e95398e7f2b8bceNone/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:34:12.578239NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
1523finishedNoneget_list_c06fe3108c8f15278a0857a288d83e09/get_list_c06fe3108c8f15278a0857a288d83e09None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:34:12.984644NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
1624finishedNoneplot_energy_volume_curve_18ffc37f2b5436578a3e562f03613e43/plot_energy_volume_curve_18ffc37f2b5436578a3e562f03613e43None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:34:13.125200NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
\n", + "
" + ], + "text/plain": [ + " id status chemicalformula \\\n", + "0 8 finished None \n", + "1 9 finished None \n", + "2 10 finished None \n", + "3 11 finished None \n", + "4 12 finished None \n", + "5 13 finished None \n", + "6 14 finished None \n", + "7 15 finished None \n", + "8 16 finished None \n", + "9 17 finished None \n", + "10 18 finished None \n", + "11 19 finished None \n", + "12 20 finished None \n", + "13 21 finished None \n", + "14 22 finished None \n", + "15 23 finished None \n", + "16 24 finished None \n", + "\n", + " job \\\n", + "0 get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f \n", + "1 get_dict_1e47509b88d63a21fd421686554c8f4a \n", + "2 calculate_qe_e3c0bf43f7edf24d215901bf93271e87 \n", + "3 generate_structures_4f19b30f71f1958da8dbd3a89753da5d \n", + "4 get_dict_13e432fdcf23d1fa277df2f0a8fdd0eb \n", + "5 calculate_qe_936c506dc0da610ea26659ab1a1ff5e7 \n", + "6 get_dict_eab85cbca6391480353d104f46660ea0 \n", + "7 calculate_qe_e8256936e58b4db30b0eb588c966b5fb \n", + "8 get_dict_b75a4287000474f9abe3bb080edb15c6 \n", + "9 calculate_qe_c1ba1aad76f28e1763f1f3aad86c3ac2 \n", + "10 get_dict_f676b23e7feba42ed75061c1a43ee669 \n", + "11 calculate_qe_58ae4770d2bd3904dee9a5a268621254 \n", + "12 get_dict_a4ae30e61c1e61b3dd6b6f1a94cdb1e9 \n", + "13 calculate_qe_e45155c3ed670f48efe449544b1d3cf5 \n", + "14 get_list_be666759994036119e95398e7f2b8bce \n", + "15 get_list_c06fe3108c8f15278a0857a288d83e09 \n", + "16 plot_energy_volume_curve_18ffc37f2b5436578a3e562f03613e43 \n", + "\n", + " subjob projectpath \\\n", + "0 /get_bulk_structure_f1e730ed97e30e5439e855d2ac41396f None \n", + "1 /get_dict_1e47509b88d63a21fd421686554c8f4a None \n", + "2 /calculate_qe_e3c0bf43f7edf24d215901bf93271e87 None \n", + "3 /generate_structures_4f19b30f71f1958da8dbd3a89753da5d None \n", + "4 /get_dict_13e432fdcf23d1fa277df2f0a8fdd0eb None \n", + "5 /calculate_qe_936c506dc0da610ea26659ab1a1ff5e7 None \n", + "6 /get_dict_eab85cbca6391480353d104f46660ea0 None \n", + "7 /calculate_qe_e8256936e58b4db30b0eb588c966b5fb None \n", + "8 /get_dict_b75a4287000474f9abe3bb080edb15c6 None \n", + "9 /calculate_qe_c1ba1aad76f28e1763f1f3aad86c3ac2 None \n", + "10 /get_dict_f676b23e7feba42ed75061c1a43ee669 None \n", + "11 /calculate_qe_58ae4770d2bd3904dee9a5a268621254 None \n", + "12 /get_dict_a4ae30e61c1e61b3dd6b6f1a94cdb1e9 None \n", + "13 /calculate_qe_e45155c3ed670f48efe449544b1d3cf5 None \n", + "14 /get_list_be666759994036119e95398e7f2b8bce None \n", + "15 /get_list_c06fe3108c8f15278a0857a288d83e09 None \n", + "16 /plot_energy_volume_curve_18ffc37f2b5436578a3e562f03613e43 None \n", + "\n", + " project \\\n", + "0 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "1 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "2 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "3 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "4 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "5 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "6 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "7 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "8 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "9 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "10 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "11 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "12 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "13 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "14 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "15 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "16 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "\n", + " timestart timestop totalcputime \\\n", + "0 2025-03-24 12:33:12.350506 None None \n", + "1 2025-03-24 12:33:12.520232 None None \n", + "2 2025-03-24 12:33:12.715777 None None \n", + "3 2025-03-24 12:33:39.244095 None None \n", + "4 2025-03-24 12:33:39.464450 None None \n", + "5 2025-03-24 12:33:39.604777 None None \n", + "6 2025-03-24 12:33:46.045978 None None \n", + "7 2025-03-24 12:33:46.427849 None None \n", + "8 2025-03-24 12:33:52.460128 None None \n", + "9 2025-03-24 12:33:52.598890 None None \n", + "10 2025-03-24 12:33:58.613473 None None \n", + "11 2025-03-24 12:33:58.758885 None None \n", + "12 2025-03-24 12:34:05.587973 None None \n", + "13 2025-03-24 12:34:05.729420 None None \n", + "14 2025-03-24 12:34:12.578239 None None \n", + "15 2025-03-24 12:34:12.984644 None None \n", + "16 2025-03-24 12:34:13.125200 None None \n", + "\n", + " computer \\\n", + "0 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "1 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "2 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "3 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "4 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "5 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "6 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "7 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "8 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "9 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "10 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "11 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "12 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "13 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "14 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "15 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "16 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "\n", + " hamilton hamversion parentid masterid \n", + "0 PythonFunctionContainerJob 0.4 None None \n", + "1 PythonFunctionContainerJob 0.4 None None \n", + "2 PythonFunctionContainerJob 0.4 None None \n", + "3 PythonFunctionContainerJob 0.4 None None \n", + "4 PythonFunctionContainerJob 0.4 None None \n", + "5 PythonFunctionContainerJob 0.4 None None \n", + "6 PythonFunctionContainerJob 0.4 None None \n", + "7 PythonFunctionContainerJob 0.4 None None \n", + "8 PythonFunctionContainerJob 0.4 None None \n", + "9 PythonFunctionContainerJob 0.4 None None \n", + "10 PythonFunctionContainerJob 0.4 None None \n", + "11 PythonFunctionContainerJob 0.4 None None \n", + "12 PythonFunctionContainerJob 0.4 None None \n", + "13 PythonFunctionContainerJob 0.4 None None \n", + "14 PythonFunctionContainerJob 0.4 None None \n", + "15 PythonFunctionContainerJob 0.4 None None \n", + "16 PythonFunctionContainerJob 0.4 None None " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pr.job_table()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Python" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.purepython import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "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", + "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", + "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", + "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n", + "Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAW/BJREFUeJzt3XlcVXXCx/HPZReUi8omgqC5AO5LKmZp5ZpLWpltmFZOzYwtVlb2tDht2t6UbdOUtttoWrZRmtrkgjuuCLjgwubKIsh6z/MHwkQiKsI9XPi+X6/7eh4u51y+98Rcvv5+5/yOxTAMAxERERGplJPZAURERETqMpUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsmeT555+nX79+eHp64uPjc177GIbBjBkzCAoKolGjRgwcOJAdO3aUfz85ORmLxVLpY/78+We8XkFBAd26dcNisRAXF3dB+d999126dOmCt7c33t7eREVF8dNPP13Qa4iIiDgClSWTFBYWMm7cOP7617+e9z4vvfQSr732GrNnz2b9+vUEBgYyePBgcnJyAAgJCSEtLa3C4x//+AdeXl4MHz78jNd75JFHCAoKqlb+4OBgZs2axYYNG9iwYQNXXXUV1157bYXyJiIiUi8YYqo5c+YYVqv1nNvZbDYjMDDQmDVrVvlz+fn5htVqNd57772z7tetWzfjjjvuOOP5H3/80QgPDzd27NhhAMbmzZsrfH/Hjh3G8OHDDS8vL8Pf39+47bbbjCNHjlSZsWnTpsa///3vc74XERERR6KRJQexb98+0tPTGTJkSPlz7u7uDBgwgNWrV1e6z8aNG4mLi+POO++s8HxGRgaTJ0/m008/xdPT84z90tLSGDBgAN26dWPDhg3ExMSQkZHBjTfeWOnPKSkpYd68eeTm5hIVFXUR71JERKTucTE7gJyf9PR0AAICAio8HxAQwP79+yvd58MPPyQiIoJ+/fqVP2cYBhMnTuSee+6hV69eJCcnn7Hfu+++S48ePXjhhRfKn/voo48ICQkhMTGR9u3bA7Bt2zaioqLIz8+ncePGLFq0iMjIyIt9qyIiInWKRpZq0IwZM856gnXZY8OGDRf1MywWS4WvDcM44zmAU6dO8cUXX5wxqvTWW2+RnZ3N9OnTz/ozNm7cyPLly2ncuHH5Izw8HIA9e/aUb9ehQwfi4uKIjY3lr3/9K7fffjs7d+68mLcnIiJS52hkqQZNmTKFm266qcptwsLCqvXagYGBQOkIU4sWLcqfP3z48BmjTQALFiwgLy+PCRMmVHh+2bJlxMbG4u7uXuH5Xr16ceutt/Lxxx9js9kYNWoUL7744hmv+8ef7ebmRtu2bcv3X79+Pf/85z95//33q/UeRURE6iKVpRrk6+uLr69vrbx269atCQwMZMmSJXTv3h0ovaLut99+q7TUfPjhh4wePRo/P78Kz7/55ps899xz5V+npqYydOhQvvrqK/r06QNAjx49+PrrrwkLC8PF5fx/RQzDoKCgoDpvT0REpM5SWTLJgQMHOH78OAcOHKCkpKR8naO2bdvSuHFjAMLDw5k5cyZjx47FYrHwwAMP8MILL9CuXTvatWvHCy+8gKenJ7fcckuF1969ezf//e9/+fHHH8/4ua1atarwddnPuuSSSwgODgbg73//Ox988AE333wz06ZNw9fXl927dzNv3jw++OADnJ2defzxxxk+fDghISHk5OQwb948VqxYQUxMTE0fKhEREVOpLJnkqaee4uOPPy7/umy0aPny5QwcOBCAhIQEsrKyyrd55JFHOHXqFH/72984ceIEffr04ZdffqFJkyYVXvujjz6iZcuWFa6cuxBBQUGsWrWKRx99lKFDh1JQUEBoaCjDhg3Dyan0NLeMjAyio6NJS0vDarXSpUsXYmJiGDx4cLV+poiISF1lMQzDMDuEiIiISF2lq+FEREREqqCyJCIiIlIFnbNUA2w2G6mpqTRp0qTSNY9ERESk7jEMg5ycHIKCgsrPya2MylINSE1NJSQkxOwYIiIiUg0HDx4svyK8MipLNaDsarSDBw/i7e1tchoRERE5H9nZ2YSEhJxxVfmfqSzVgLKpN29vb5UlERERB3OuU2h0greIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgs1WGGYbBu33HyCovNjiIiItJgqSzVYX/9bBM3vr+GRZtTzI4iIiLSYKks1WG9wpoCMHdVMoZhmJxGRESkYVJZqsNuvDQELzdnkg6fZNXu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Z2z/xhtvYLHo/k4iIiJSkUOs4B0fH09MTAyxsbH06dMHgA8++ICoqCgSEhLo0KHDGfskJSURGxvL9u3b6dixIwDvvPMO/v7+fPnll9x1113l227ZsoXXXnuN9evX06JFC/u8KREREXEIDjGytGbNGqxWa3lRAujbty9Wq5XVq1dXuk9BQQEAHh4e5c85Ozvj5ubGypUry5/Ly8vj5ptvZvbs2QQGBtbSOxARERFH5RBlKT09HX9//zOe9/f3Jz09vdJ9wsPDCQ0NZfr06Zw4cYLCwkJmzZpFeno6aWlp5dtNnTqVfv36ce211553noKCArKzsys8REREpH4ytSzNmDEDi8VS5WPDhg0AlZ5PZBjGWc8zcnV15euvvyYxMZFmzZrh6enJihUrGD58OM7OzgAsXryYZcuW8cYbb1xQ7pkzZ5afaG61WgkJCbmwNy4iIiIOw9RzlqZMmcJNN91U5TZhYWFs3bqVjIyMM7535MgRAgICzrpvz549iYuLIysri8LCQvz8/OjTpw+9evUCYNmyZezZswcfH58K+11//fVcfvnlrFixotLXnT59Og8++GD519nZ2SpMIiIi9ZTFMAzD7BDnEh8fT2RkJGvXrqV3794ArF27lr59+7Jr165KT/CuTFJSEuHh4fz0008MGTKE9PR0jh49WmGbzp07889//pNRo0bRunXr83rd871rsYiIiNQd5/v32yGuhouIiGDYsGFMnjyZ999/H4C//OUvjBw5skJRCg8PZ+bMmYwdOxaA+fPn4+fnR6tWrdi2bRv3338/Y8aMYciQIQAEBgZWelJ3q1atzrsoQel0IKBzl0RERBxI2d/tc40bOURZAvj888+57777yovO6NGjmT17doVtEhISyMrKKv86LS2NBx98kIyMDFq0aMGECRN48sknazxbTk4OgKbiREREHFBOTg5Wq/Ws33eIabi6zmazkZqaSpMmTerEwpZl51AdPHhQ04LoePyZjseZdEwq0vGoSMejovp0PAzDICcnh6CgIJyczn7Nm8OMLNVlTk5OBAcHmx3jDN7e3g7/i1yTdDwq0vE4k45JRToeFel4VFRfjkdVI0plHGKdJRERERGzqCyJiIiIVEFlqR5yd3fn6aefxt3d3ewodYKOR0U6HmfSMalIx6MiHY+KGuLx0AneIiIiIlXQyJKIiIhIFVSWRERERKqg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WRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyJiIiIVEFlSUQatLCwMN544w2zY4hIHaayJCIOa9SoUQwaNKjS761ZswaLxcKmTZvsnEpE6huVJRFxWHfeeSfLli1j//79Z3zvo48+olu3bvTo0cOEZCJSn6gsiYjDGjlyJP7+/sydO7fC83l5eXz11VfceeedfP3113Ts2BF3d3fCwsJ49dVXz/p6ycnJWCwW4uLiyp/LzMzEYrGwYsUKAFasWIHFYuHnn3+me/fuNGrUiKuuuorDhw/z008/ERERgbe3NzfffDN5eXnlr2MYBi+99BJt2rShUaNGdO3alQULFtTk4RCRWqKyJCIOy8XFhQkTJjB37lz+eE/w+fPnU1hYSFRUFDfeeCM33XQT27ZtY8aMGTz55JNnlKvqmDFjBrNnz2b16tUcPHiQG2+8kTfeeIMvvviCH374gSVLlvDWW2+Vb//EE08wZ84c3n33XXbs2MHUqVO57bbb+O233y46i4jULovxx08YEREHs2vXLiIiIli2bBlXXnklAAMGDKBly5ZYLBaOHDnCL7/8Ur79I488wg8//MCOHTuA0hO8H3jgAR544AGSk5Np3bo1mzdvplu3bkDpyFLTpk1Zvnw5AwcOZMWKFVx55ZUsXbqUq6++GoBZs2Yxffp09uzZQ5s2bQC45557SE5OJiYmhtzcXHx9fVm2bBlRUVHlWe666y7y8vL44osv7HGoRKSaNLIkIg4tPDycfv368dFHHwGwZ88efv/9d+644w7i4+O57LLLKmx/2WWXkZSURElJyUX93C5dupT//wEBAXh6epYXpbLnDh8+DMDOnTvJz89n8ODBNG7cuPzxySefsGfPnovKISK1z8XsACIiF+vOO+9kypQpvP3228yZM4fQ0FCuvvpqDMPAYrFU2LaqwXQnJ6cztikqKqp0W1dX1/L/32KxVPi67DmbzQZQ/n9/+OEHWrZsWWE7d3f3c709ETGZRpZExOHdeOONODs788UXX/Dxxx8zadIkLBYLkZGRrFy5ssK2q1evpn379jg7O5/xOn5+fgCkpaWVP/fHk72rKzIyEnd3dw4cOEDbtm0rPEJCQi769UWkdmlkSUQcXuPGjRk/fjyPP/44WVlZTJw4EYCHHnqISy+9lGeffZbx48ezZs0aZs+ezTvvvFPp6zRq1Ii+ffsya9YswsLCOHr0KE888cRF52vSpAkPP/wwU6dOxWaz0b9/f7Kzs1m9ejWNGzfm9ttvv+ifISK1RyNLIlIv3HnnnZw4cYJBgwbRqlUrAHr06MF//vMf5s2bR6dOnXjqqad45plnystUZT766COKioro1asX999/P88991yN5Hv22Wd56qmnmDlzJhEREQwdOpTvvvuO1q1b18jri0jt0dVwIiIiIlXQyJKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJREREpAoqSyIiIiJVUFkSERERqYLKkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKvw/FsCLm/9axZsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "load_workflow_json(file_name=\"workflow_qe.json\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/universal_workflow_simple.ipynb b/universal_workflow_simple.ipynb index 1229ac5..5e011c3 100644 --- a/universal_workflow_simple.ipynb +++ b/universal_workflow_simple.ipynb @@ -1 +1,627 @@ -{"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":"# Load Simple Workflow","metadata":{}},{"cell_type":"markdown","source":"## Aiida ","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.aiida import load_workflow_json\n\nfrom aiida import load_profile\nload_profile()","metadata":{"trusted":true},"outputs":[{"execution_count":1,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}],"execution_count":1},{"cell_type":"code","source":"workgraph = load_workflow_json(file_name='workflow_simple.json')","metadata":{"trusted":true},"outputs":[],"execution_count":2},{"cell_type":"code","source":"# TODO: Create inputs rather than tasks out of data nodes\nworkgraph","metadata":{"trusted":true},"outputs":[{"execution_count":3,"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":"f7e3c370d4dd46b1ac161756babc37c9"}},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"\nworkgraph.run()","metadata":{"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":"03/24/2025 10:22:48 AM <293> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|continue_workgraph]: tasks ready to run: pickle_node3,pickle_node4\n03/24/2025 10:22:49 AM <293> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [3|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 11, 18\n03/24/2025 10:22:51 AM <293> aiida.scheduler.direct: [WARNING] Unrecognized job_state 'p' for job id Activating\n03/24/2025 10:22:51 AM <293> aiida.engine.transports: [ERROR] Exception whilst using transport:\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/transports.py\", line 106, in request_transport\n yield transport_request.future\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n\nTask exception was never retrieved\nfuture: .updating() done, defined at /srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py:179> exception=IndexError('list index out of range')>\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 314, in __step_run_and_handle_result\n result = coro.send(None)\n ^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 181, in updating\n await self._update_job_info()\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:22:51 AM <293> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n03/24/2025 10:22:51 AM <293> aiida.orm.nodes.process.calculation.calcjob.CalcJobNode: [ERROR] iteration 1 of do_update excepted, retrying after 20 seconds\nTraceback (most recent call last):\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 205, in exponential_backoff_retry\n result = await coro()\n ^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/tasks.py\", line 195, in do_update\n job_info = await cancellable.with_interrupt(update_request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/utils.py\", line 115, in with_interrupt\n result = await next(wait_iter)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/tasks.py\", line 631, in _wait_for_one\n return f.result() # May raise f.exception().\n ^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/asyncio/futures.py\", line 202, in result\n raise self._exception.with_traceback(self._exception_tb)\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 132, in _update_job_info\n self._jobs_cache = await self._get_jobs_from_scheduler()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/engine/processes/calcjobs/manager.py\", line 109, in _get_jobs_from_scheduler\n scheduler_response = scheduler.get_jobs(**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 269, in get_jobs\n job_stats = super().get_jobs(jobs=jobs, user=user, as_dict=as_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/scheduler.py\", line 361, in get_jobs\n joblist = self._parse_joblist_output(retval, stdout, stderr)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/srv/conda/envs/notebook/lib/python3.12/site-packages/aiida/schedulers/plugins/direct.py\", line 253, in _parse_joblist_output\n this_job.wallclock_time_seconds = self._convert_time(job[3])\n ~~~^^^\nIndexError: list index out of range\n"}],"execution_count":null},{"cell_type":"markdown","source":"## executorlib","metadata":{}},{"cell_type":"code","source":"from executorlib import SingleNodeExecutor","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.executorlib import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"with SingleNodeExecutor(max_workers=1) as exe:\n result = load_workflow_json(file_name=\"workflow_simple.json\", exe=exe).result()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"result","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Jobflow","metadata":{}},{"cell_type":"code","source":"from jobflow.managers.local import run_locally","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.jobflow import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"flow = load_workflow_json(file_name=\"workflow_simple.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"result = run_locally(flow)\nresult","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## pyiron","metadata":{}},{"cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from python_workflow_definition.pyiron_base import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"delayed_object = load_workflow_json(project=pr, file_name=\"workflow_simple.json\")\ndelayed_object.draw()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"delayed_object.pull()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Python","metadata":{}},{"cell_type":"code","source":"from python_workflow_definition.purepython import load_workflow_json","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"load_workflow_json(file_name=\"workflow_simple.json\")","metadata":{"trusted":true},"outputs":[],"execution_count":null}]} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Load Simple Workflow" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aiida " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Profile" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from python_workflow_definition.aiida import load_workflow_json\n", + "\n", + "from aiida import load_profile\n", + "load_profile()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "workgraph = load_workflow_json(file_name='workflow_simple.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c1671fb385e3469ea269044a47160225", + "version_major": 2, + "version_minor": 1 + }, + "text/plain": [ + "NodeGraphWidget(settings={'minimap': True}, style={'width': '90%', 'height': '600px'}, value={'name': 'WorkGra…" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# TODO: Create inputs rather than tasks out of data nodes\n", + "workgraph" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:15:40 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|continue_workgraph]: tasks ready to run: pickle_node3,pickle_node4\n", + "03/24/2025 12:15:49 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1076, 1083\n", + "03/24/2025 12:16:27 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|update_task_state]: Task: pickle_node3, type: PYTHONJOB, finished.\n", + "03/24/2025 12:16:28 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|update_task_state]: Task: pickle_node4, type: PYTHONJOB, finished.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invalid state\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "03/24/2025 12:16:29 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y1\n", + "03/24/2025 12:16:35 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1098\n", + "03/24/2025 12:16:58 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|update_task_state]: Task: add_x_and_y1, type: PYTHONJOB, finished.\n", + "03/24/2025 12:16:59 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|continue_workgraph]: tasks ready to run: add_x_and_y_and_z2\n", + "03/24/2025 12:17:04 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 1111\n", + "03/24/2025 12:17:23 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|update_task_state]: Task: add_x_and_y_and_z2, type: PYTHONJOB, finished.\n", + "03/24/2025 12:17:25 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", + "03/24/2025 12:17:25 PM <259264> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [1069|WorkGraphEngine|finalize]: Finalize workgraph.\n" + ] + } + ], + "source": [ + "\n", + "workgraph.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## executorlib" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from executorlib import SingleNodeExecutor" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.executorlib import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "with SingleNodeExecutor(max_workers=1) as exe:\n", + " result = load_workflow_json(file_name=\"workflow_simple.json\", exe=exe).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jobflow" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jan/mambaforge/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", + "/home/jan/mambaforge/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" + ] + } + ], + "source": [ + "from jobflow.managers.local import run_locally" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.jobflow import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "flow = load_workflow_json(file_name=\"workflow_simple.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2025-03-24 12:17:31,659 INFO Started executing jobs locally\n", + "2025-03-24 12:17:33,059 INFO Starting job - add_x_and_y (a8004d81-a7b8-41f1-a673-17b4d6e90ebf)\n", + "2025-03-24 12:17:33,061 INFO Finished job - add_x_and_y (a8004d81-a7b8-41f1-a673-17b4d6e90ebf)\n", + "2025-03-24 12:17:33,062 INFO Starting job - add_x_and_y_and_z (26ddcedb-34b3-4b09-883d-311b2689d870)\n", + "2025-03-24 12:17:33,066 INFO Finished job - add_x_and_y_and_z (26ddcedb-34b3-4b09-883d-311b2689d870)\n", + "2025-03-24 12:17:33,070 INFO Finished executing jobs locally\n" + ] + }, + { + "data": { + "text/plain": [ + "{'a8004d81-a7b8-41f1-a673-17b4d6e90ebf': {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/jan/notebooks/2025/2025-03-22-compare-workflows'))},\n", + " '26ddcedb-34b3-4b09-883d-311b2689d870': {1: Response(output=6, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False, job_dir=PosixPath('/home/jan/notebooks/2025/2025-03-22-compare-workflows'))}}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result = run_locally(flow)\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## pyiron" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from pyiron_base import Project" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.pyiron_base import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c62706b413eb44a391d2a24366c8ef82", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "0it [00:00, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pr = Project(\"test\")\n", + "pr.remove_jobs(recursive=True, silently=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "create_function_job_64c8e93072cd8858b5acc14f0b6a1345\n", + "\n", + "create_function_job=<pyiron_base.project.delayed.DelayedObject object at 0x7f6346efa3f0>\n", + "\n", + "\n", + "\n", + "x_66de6656099aebbaa5cdc840b1bf9733\n", + "\n", + "x=<pyiron_base.project.delayed.DelayedObject object at 0x7f6346efa030>\n", + "\n", + "\n", + "\n", + "x_66de6656099aebbaa5cdc840b1bf9733->create_function_job_64c8e93072cd8858b5acc14f0b6a1345\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_1d847da32ecaabf6731c38f798c3d4ce\n", + "\n", + "x=1\n", + "\n", + "\n", + "\n", + "x_1d847da32ecaabf6731c38f798c3d4ce->x_66de6656099aebbaa5cdc840b1bf9733\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "y_12cc51ee4250f1b82f9bc22e047ad944\n", + "\n", + "y=<pyiron_base.project.delayed.DelayedObject object at 0x7f6346efa000>\n", + "\n", + "\n", + "\n", + "x_1d847da32ecaabf6731c38f798c3d4ce->y_12cc51ee4250f1b82f9bc22e047ad944\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "z_91b561a78a57aad1d943f498a3c737ed\n", + "\n", + "z=<pyiron_base.project.delayed.DelayedObject object at 0x7f6346ef9ee0>\n", + "\n", + "\n", + "\n", + "x_1d847da32ecaabf6731c38f798c3d4ce->z_91b561a78a57aad1d943f498a3c737ed\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "y_12cc51ee4250f1b82f9bc22e047ad944->create_function_job_64c8e93072cd8858b5acc14f0b6a1345\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "z_91b561a78a57aad1d943f498a3c737ed->create_function_job_64c8e93072cd8858b5acc14f0b6a1345\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "y_a9ec4f5f33f0d64e74ed5d9900bceac6\n", + "\n", + "y=2\n", + "\n", + "\n", + "\n", + "y_a9ec4f5f33f0d64e74ed5d9900bceac6->x_66de6656099aebbaa5cdc840b1bf9733\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "y_a9ec4f5f33f0d64e74ed5d9900bceac6->y_12cc51ee4250f1b82f9bc22e047ad944\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "y_a9ec4f5f33f0d64e74ed5d9900bceac6->z_91b561a78a57aad1d943f498a3c737ed\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "delayed_object = load_workflow_json(project=pr, file_name=\"workflow_simple.json\")\n", + "delayed_object.draw()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The job add_x_and_y_68901482a2c5221cc845f828aabebd27 was saved and received the ID: 8\n", + "The job add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d was saved and received the ID: 9\n" + ] + }, + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "delayed_object.pull()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "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", + "
idstatuschemicalformulajobsubjobprojectpathprojecttimestarttimestoptotalcputimecomputerhamiltonhamversionparentidmasterid
08finishedNoneadd_x_and_y_68901482a2c5221cc845f828aabebd27/add_x_and_y_68901482a2c5221cc845f828aabebd27None/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:17:37.412001NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
19finishedNoneadd_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d/add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8dNone/home/jan/notebooks/2025/2025-03-22-compare-workflows/test/2025-03-24 12:17:39.161717NoneNonepyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1PythonFunctionContainerJob0.4NoneNone
\n", + "
" + ], + "text/plain": [ + " id status chemicalformula \\\n", + "0 8 finished None \n", + "1 9 finished None \n", + "\n", + " job \\\n", + "0 add_x_and_y_68901482a2c5221cc845f828aabebd27 \n", + "1 add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d \n", + "\n", + " subjob projectpath \\\n", + "0 /add_x_and_y_68901482a2c5221cc845f828aabebd27 None \n", + "1 /add_x_and_y_and_z_b671e81aaa4670d81d7eee509650af8d None \n", + "\n", + " project \\\n", + "0 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "1 /home/jan/notebooks/2025/2025-03-22-compare-workflows/test/ \n", + "\n", + " timestart timestop totalcputime \\\n", + "0 2025-03-24 12:17:37.412001 None None \n", + "1 2025-03-24 12:17:39.161717 None None \n", + "\n", + " computer \\\n", + "0 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "1 pyiron@p200300e77f488c66bae2561c878c14a2.dip0.t-ipconnect.de#1 \n", + "\n", + " hamilton hamversion parentid masterid \n", + "0 PythonFunctionContainerJob 0.4 None None \n", + "1 PythonFunctionContainerJob 0.4 None None " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pr.job_table()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Python" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "from python_workflow_definition.purepython import load_workflow_json" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "load_workflow_json(file_name=\"workflow_simple.json\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}