Py-grandalf

Jul 20, 2023

Graph experimentation and drawing algorithms framework

Grandalf is a python package made for experimentations with graphs and drawing algorithms. It is written in pure python, and implements two layouts the Sugiyama hierarchical layout and the force-driven or energy minimization approach. While not as fast or featured as graphviz or other libraries like OGDF C++, GDToolkit C, tulip Java, it provides a way to draw and navigate graphs no larger than thousands of nodes, while keeping the source code simple enough to make it possible to easily tweak and hack any part of it for experimental purpose. With a total of about 1500 lines of python, the code involved in drawing the Sugiyama dot layout fits in less than 600 lines. The energy minimization approach is comprised of only 250 lines!

Grandalf does only two not-so-simple things

  • computing the nodes x,y coordinates based on provided nodes dimensions, and a chosen layout
  • routing the edges with lines or nurbs


Checkout these related ports:
  • Zn_poly - C library for polynomial arithmetic
  • Zimpl - Language to translate the LP models into .lp or .mps
  • Zegrapher - Software for plotting mathematical objects
  • Zarray - Dynamically typed N-D expression system based on xtensor
  • Z3 - Z3 Theorem Prover
  • Yices - SMT solver
  • Yacas - Yet Another Computer Algebra System
  • Xtensor - Multi-dimensional arrays with broadcasting and lazy computing
  • Xtensor-python - Python bindings for xtensor
  • Xtensor-io - Xtensor plugin to read/write images, audio files, numpy npz and HDF5
  • Xtensor-blas - BLAS extension to xtensor
  • Xspread - Spreadsheet program for X and terminals
  • Xppaut - Graphical tool for solving differential equations, etc
  • Xplot - X11 plotting package
  • Xlife++ - XLiFE++ eXtended Library of Finite Elements in C++