Skip to main content

Lightweight python module to load, validate and visualize CWL (Common Workflow Language) files through networkx graphs.

Project description

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.

Installation

pip install cwl2nx

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 light visualization of the workflow in the terminal, just use the code from this GitHub repo https://github.com/ctongfei/py-dagviz/blob/main/dagviz.py and import visualize_dag function :

from cwl2nx import CWLToNetworkxConnector
import networkx as nx

dir = "workflow_example.cwl.yaml"
dag = CWLToNetworkxConnector(dir).convert_to_networkx(datasets_as_node=True)
print(visualization_function(dag))

output :

• #nsbas.proc
│ • #nsbas_config.json
│ │ • #parameter.py
╰─┴─│─• #tache_init
    │ ╰─• ivwgayim.dep
    ╰───┼─• #tache_inter1
        ╰─│─• #tache_inter2
          │ ╰─• azbouvks2.dep
          ╰───│─• azbouvks1.dep
              ╰─┴─• #tache_end
                  ╰─• agxlvirt.dep

Basic networkx display

from cwl2nx import CWLToNetworkxConnector
import networkx as nx
import matplotlib.pyplot as plt

dir = "workflow_example.cwl.yaml"
connector = CWLToNetworkxConnector(dir)
dag = connector.convert_to_networkx(datasets_as_nodes=True)
nx.draw_networkx(dag)
plt.show()

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cwl2nx-0.0.7.tar.gz (9.1 kB view details)

Uploaded Source

File details

Details for the file cwl2nx-0.0.7.tar.gz.

File metadata

  • Download URL: cwl2nx-0.0.7.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for cwl2nx-0.0.7.tar.gz
Algorithm Hash digest
SHA256 cc673b8f639fb5f76eb6e2c18bf0fb22fa1aabfab871e9183988181653a5a7fe
MD5 6d7bde19b78d1c7b20960611ccd88ad9
BLAKE2b-256 39b36324491e20727a0f9c15b7636b920dcae4cd2e6bb0c0d22ed539a1a2dff4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page