Skip to main content

CWL2Nx

Lightweight python module to load, validate and visualize CWL (Common Workflow Language) files through networkx graphs. It uses cwl_utils for parsing and validation. It also contains a CLI app to quickly visualize cwl files.

Installation

pip install cwl2nx

Note : to use cwl2nx as a CLI app only, you may prefer to use pipx :

pip install pipx
pipx install cwl2nx

CLI app

Just run :

cwl2nx <path_to_cwl>

run cwl2nx --help to get full documentation

colored_term

  • green: WorkflowInputParameter
  • yellow: WorkflowStep
  • blue: WorkflowStepInput
  • pink / magenta : WorkflowStepOutput which are not WorkflowStepInput
  • red : WorkflowOutputParameter

Example Usage

You will find an example of workflow in the GitHub repository : workflow_example.cwl.yaml. Other examples can be found here : https://workflowhub.org

Straightforward conversion

from cwl2nx import CWLToNetworkxConnector

dir = "workflow_example.cwl.yaml"
dag = CWLToNetworkxConnector(dir).convert_to_networkx() # dag is networkx.DiGraph
print(dag.nodes, dag.edges)

Using dagviz

You'll need to install dagviz before

/!\ you need to run the code below in a jupyter notebook

from cwl2nx import CWLToNetworkxConnector
import networkx as nx
import dagviz

dir = "workflow_example.cwl.yaml"
connector = CWLToNetworkxConnector(dir)
dag = connector.convert_to_networkx()


dagviz.Dagre(dag)

dagviz.Metro(dag) # github tree dag style

Dagre

Metro

Visualization in the terminal

To get a string representing the graph (code from: https://github.com/ctongfei/py-dagviz):

from cwl2nx import cwl_to_str

dir = "workflow_example.cwl.yaml"
print(cwl_to_str(dir))

output :

• input_file_1.json
│ • parameter.py
│ │ • config.yaml
╰─│─┴─• init_task
  │   ╰─• init_task/initialized_dataset.json
  ├─────┼─• inter_task_1
  │     ├─│─• inter_task_2
  │     │ ╰─│─• inter_task_1/output_inter_1
  │     │   ╰─│─• inter_task_2/output_inter_2
  ╰─────│─────┴─┴─• end_task
        │         ╰─• end_task/output.csv
        │           ╰─• wf_output
        ╰─• wf_output_2

Link with cwl-utils

Each node of the parsed networkx graph object has an attribute cwl_utils_object containing the cwl_utils object, among the following :

  • WorkflowStep
  • WorkflowStepInput
  • WorkflowStepOutput
  • WorkflowInputParameter
  • WorkflowOutputParameter

The type of the node (one of the above in string) is accessible through the parameter node_type of each node.

License

Apache 2.0

Metadata

Release files for cwl2nx 0.0.15

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cwl2nx 0.0.15
File Size Uploaded
cwl2nx-0.0.15.tar.gz 13.4 kB Details

Release files / cwl2nx-0.0.15.tar.gz

Download URL cwl2nx-0.0.15.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
cbda8fcbe57555dac48f5ee5099b22a2be946c9620bb05ff0b9485db0f1d6f45
BLAKE2b-256 checksum
How to use checksums
f4a632da178344692192e653244e063663917186f1ab45e94a84aa0209ef95e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.0.15 This release

1 release file

0.0.14

1 release file

0.0.13

1 release file

0.0.12

1 release file

0.0.11

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page