Description
At our workflow hackathons at the ADIS meeting, we had some interesting discussions including a wish list from the user perspective. I am also thinking a lot about features that we need in the pyiron_workflow module to realize a syntax and functionality that is close to that of pyiron_base and pyiron_atomistic, but that contains all the nice architectural features that we get with the node-based approach. Below is a likely rather incomplete list of features, modules, etc. that in my opinion are crucial. It would be helpful if we could extend and prioritize this list. Also, it would be helpful if volunteers adopt the specifications and developments of these features.
- Use ironflow's graphical user interface and connect it to the workflow model. @samwaseda mentioned that he would be interested in looking into this development. (cf. https://github.com/pyiron/pyiron-xyflow)
- Provide functionality present in ironflow: e.g.
batch
(ideally in connection with executors) andshow
to access and process node data - Provide functionality for *saving and loading workflows:
wf.save('my_workflow')
andwf.save('my_workflow')
- Provide functions to (optionally) store node input and output data in hdf5. Provide filters to define which data objects should be stored or not stored together with logging levels.
- Same as above for storing/loading node and data objects into/from databases
- Add ontologic typing
- Provide easy access to executors and efficient and automatic distribution of the node-generated tasks
- Provide drawing tools to show the provenance of an executed workflow, i.e., similar to the graphs produced by AIIDA
As overarching guiding principles of the required functionality we should test and benchmark against pyiron_base/atomistics and ironflow. The new pyiron_workflow class should provide an easy approach to realize the same functionality. As an example see the https://github.com/pyiron/pyiron_workflow/tree/JNmpi_lammps_nodes branch where I tried to construct lammps-based workflows that closely mimic our pyiron syntax (see e.g. the jupyter notebook in this branch: pyiron_like_workflows.ipynb).
### Tasks