You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It would be nice if we, eventually, could make it possible to execute a workflow defined through our PWD via CWL. 1 We think this shouldn't be too difficult, and a possible approach could look like this:
Having a converter from the PWD graph representation to CWL
All processes of the workflow (executions of python code) are achieved via CWL’s CommandLineTool
This CommandLineTool runs a python script (we provide) that takes inputs as pickled objects, unpickles them, runs the python code (our workflow functions, also pickled), and pickles the resulting outputs
To achieve this, all pickled python objects could live in one directory and are named based on the respective IDs in the PWD (or similar identifiers that map the objects to the graph), such that the Python script can do the execution
This is more of a long-term vision, but we should at least add a section on comparison to CWL, or this proposed approach, in the paper.
Footnotes
Naturally, the other direction, CWL -> PWD would be too complicated, as we would need to support all features of CWL ↩
I had a discussion with @elinscott in MADICES/MADICES-2025#16 about this topic. As you already pointed out the challenging part is the data transfer between the individual tasks. Still I think this is fine as the Python Workflow Definition and CWL address two rather different challenges, CWL is for interoperability of file-based workflow engines and PWD for interoperability of Python based workflow engines. So I would add a comment in the supplementary material but would not make it a part of the main manuscript.
Activity
jan-janssen commentedon May 2, 2025
I had a discussion with @elinscott in MADICES/MADICES-2025#16 about this topic. As you already pointed out the challenging part is the data transfer between the individual tasks. Still I think this is fine as the Python Workflow Definition and CWL address two rather different challenges, CWL is for interoperability of file-based workflow engines and PWD for interoperability of Python based workflow engines. So I would add a comment in the supplementary material but would not make it a part of the main manuscript.
GeigerJ2 commentedon May 2, 2025
Given by Gemini from JSON:
{ "nodes": [ { "id": 0, "type": "function", "value": "workflow.get_prod_and_div" }, { "id": 1, "type": "function", "value": "workflow.get_sum" }, { "id": 2, "type": "input", "name": "a", "defaultValue": 1 }, { "id": 3, "type": "input", "name": "b", "defaultValue": 2 }, { "id": 4, "type": "output", "name": "c" } ], "edges": [ { "target": 0, "targetPort": "x", "source": 2, "sourcePort": null }, { "target": 0, "targetPort": "y", "source": 3, "sourcePort": null }, { "target": 1, "targetPort": "x", "source": 0, "sourcePort": "prod" }, { "target": 1, "targetPort": "y", "source": 0, "sourcePort": "div" }, { "target": 4, "targetPort": null, "source": 1, "sourcePort": "result" } ] }to CWL:
jan-janssen commentedon May 15, 2025
I close this issue as this was implemented in #98