Metadata-Version: 2.4
Name: ilayoutx
Version: 0.1.2
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: License :: OSI Approved :: MIT License
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: System :: Networking
Classifier: Typing :: Typed
Requires-Dist: numpy>=2.0.0
Requires-Dist: pandas>=2.0.0
Requires-Dist: scipy>=1.11.0
Requires-Dist: rectangle-packer>=2.0.0
Requires-Dist: circlify>=0.15.0
Requires-Dist: grandalf>=0.8
Summary: Universal library for network node layout and edge routing.
Keywords: network,graph,layout,routing
Author-email: Fabio Zanini <fabio.zanini@unsw.edu.au>
Maintainer-email: Fabio Zanini <fabio.zanini@unsw.edu.au>
License: MIT
Requires-Python: >=3.11
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://github.com/fabilab/ilayoutx
Project-URL: Documentation, https://readthedocs.org/ilayoutx
Project-URL: Repository, https://github.com/fabilab/ilayoutx.git
Project-URL: Bug Tracker, https://github.com/fabilab/ilayoutx/issues
Project-URL: Changelog, https://github.com/fabilab/ilayoutx/blob/main/CHANGELOG.md

# ilayoutx

Compute fast network layouts. Intended as the upstream companion for [iplotx](https://github.com/fabilab/iplotx).

**NOTE**: This software is pre-alpha quality. The API is very much in flux, and the documentation is sparse. Use at your own risk.

## Installation
```bash
pip install ilayoutx
```

(not working yet)

## Layouts
- **Geometric**:
  - line
  - circle (supports vertex sizes)
  - shell
  - spiral (WIP)

- **Grid or lattice**:
  - square
  - triangular

- **Force-directed**:
  - spring aka Fruchterman-Reingold
  - ARF
  - Forceatlas2
  - Kamada-Kawai
  - GEM (graph embedder)
  - LGL (buggy)

- **Machine learning**:
  - UMAP: probably somewhat buggy

- **Tree-like**:
  - (TODO: Reingold-Tilford)
  - (TODO: Sugiyama)

- **Other**:
  - bipartite
  - random (supports vertex sizes)
  - multidimensional scaling (MDS)



## Rationale
The layout code is in Rust and exposed to Python via the amazing [PyO3](https://pyo3.rs/), with the goal to combine speed (by the machine) with comfort (for the user).

I'm a rust beginner, please be kind when judging this codebase. Feel free to open an [issue](https://github.com/fabilab/ilayoutx/issues) if you have questions.

## Authors
Fabio Zanini (https://fabilab.org)

