Skip to main content

a package for computing the edge- and node-scanwidth of a directed acyclic graph (DAG)

Project description

PyPI License Docs JCSS DOI

scanwidth

scanwidth is a Python package for computing edge-scanwidth and node-scanwidth of directed acyclic graphs (DAGs). It provides exact and heuristic algorithms, plus reduction pipelines that make practical computation on larger instances more tractable.

Key Features

  • Tree-extension and Extension classess: classes that support (tree-)extensions of DAGs, provide computations for scanwidth-bags and converting to canonical tree-extenions
  • Exact and heuristic solvers: XP, brute-force, partition-based exact methods (edge), ILP backend selection (node), and multiple heuristics for edge- and node-scanwidth.
  • Reduction framework: configurable ReducerConfig/Reducer pipelines for edge and node scanwidth, including optional parallel s-block solving.

Installation

Install the base package:

pip install scanwidth

Install optional ILP dependencies:

# SciPy backend for node_scanwidth(..., algorithm="ilp", backend="scipy")
pip install scanwidth[scipy]

# Gurobi backend for node_scanwidth(..., algorithm="ilp", backend="gurobi")
pip install scanwidth[gurobi]

# Both ILP backends
pip install scanwidth[ilp]

gurobipy requires a working Gurobi installation and a valid Gurobi license (commercial or academic, depending on your setup).

Version requirements for optional ILP backends:

  • scipy>=1.9.0
  • gurobipy>=10.0.0

Documentation

For installation instructions, quickstart examples, and full API reference, see the scanwidth docs.

Citation

If you use scanwidth in your research, please cite the corresponding paper:

Niels Holtgrefe, Leo van Iersel, and Mark Jones. Exact and heuristic computation of the scanwidth of directed acyclic graphs. Journal of Computer and System Sciences, 160:103802, 2026. doi: 10.1016/j.jcss.2026.103802

If your work builds specifically on the node-scanwidth algorithms, please also cite the following paper describing them:

Niels Holtgrefe and Jannik Schestag. Tractable Optimization of Budgeted Phylogenetic Diversity on Networks Utilizing Node-Scanwidth. arXiv:2605.23319, 2026.

To view the experimental materials of the first paper, go to the folder experiments.

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

scanwidth-0.2.6.tar.gz (43.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scanwidth-0.2.6-py3-none-any.whl (49.9 kB view details)

Uploaded Python 3

File details

Details for the file scanwidth-0.2.6.tar.gz.

File metadata

  • Download URL: scanwidth-0.2.6.tar.gz
  • Upload date:
  • Size: 43.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scanwidth-0.2.6.tar.gz
Algorithm Hash digest
SHA256 ca6802d38564f48b8be33854052da65c174d84e794d45ab49a6050c0fad418dc
MD5 57b87e9f7598c4c31707ba3b5f95cb4b
BLAKE2b-256 7a12b23dbc6eb65ddef437064b0fce312ce6083e232af2074c5779d65133a6a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for scanwidth-0.2.6.tar.gz:

Publisher: release.yml on nholtgrefe/scanwidth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scanwidth-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: scanwidth-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 49.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scanwidth-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 cb35ef5128bc0ee5b7e89e822a8c3b0ad942fd4e00df960ceecf9d7bc594af90
MD5 942ec4a30c5df702328d57bb0d28af6b
BLAKE2b-256 093ad5cc2064db15cfd3dcc954260fd5c48662f5059b616f35e1ef02bd285970

See more details on using hashes here.

Provenance

The following attestation bundles were made for scanwidth-0.2.6-py3-none-any.whl:

Publisher: release.yml on nholtgrefe/scanwidth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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