Skip to content

mariusgarenaux/cwl2nx

Repository files navigation

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.eu

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

About

Loads Common Workflow Language (CWL) files in a networkx graph

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors