Skip to main content

Graph invariants in Python.

Project description

CircleCI Documentation Status BCH compliance codecov Code style: black PyPI version


A NetworkX extension for calculating graph invariants.

What is it?

GrinPy is an extension for NetworkX used for calculating graph invariants of simple graphs.

NP-hard invariants included are:

  • Chromatic number
  • Clique number
  • Independence number
  • Domination number
  • Total domination number
  • Connected domination number
  • Independent domination number
  • Power domination number
  • Zero forcing number
  • Total zero forcing number
  • Connected zero forcing number
  • Minimum maximal matching number
  • Generalized k versions of almost all of the above invariants

Other invariants included are:

  • Annihilation number
  • Matching number
  • Residue
  • Slater number
  • Sub-k-domination number
  • Topological indices, like the Randić and Zagreb indices

In addition to the graph invariants listed above, we have included some simple checks for structural properties of a graph:

  • is_triangle_free
  • is_bull_free
  • is_claw_free

How do I use it?

Full documentation is available at

You can install GrinPy from the command line with pip:

pip install grinpy

Here is a sample of how to calculate the independence number:

>>> import grinpy as gp
>>> G = gp.petersen_graph()
>>> gp.independence_number(G)

GrinPy automatically imports NetworkX and provides all of the NetworkX classes and methods in the same interface.

Why does it exist?

The motivation for this project is to filter a database of graphs into an ordered tree of subsets. This database will be used in an experimental automated conjecturing program. In creating the required packages for this database, we realized that a Python package for calculating graph invariants would be useful for professional research and for graph theory education.


Released under the 3-Clause BSD license (see LICENSE.txt):

Copyright (C) 2017-2019 GrinPy Developers
David Amos <>
Randy Davila <>

Project details

Download files

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

Files for grinpy, version 19.7a0
Filename, size File type Python version Upload date Hashes
Filename, size grinpy-19.7a0-py3-none-any.whl (46.4 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size grinpy-19.7a0.tar.gz (27.0 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page