Skip to content

szhorvat/IGraphM

Repository files navigation

Discourse topics GitHub (pre-)release GitHub All Releases Contributions welcome DOI

The IGraph/M package provides a Wolfram Language interface to the popular igraph network analysis and graph theory library, as well as many other useful functions for working with graphs in Mathematica. Check out the blog post for an overview.

📦 Installation

The system requirements are Mathematica 11.0 or later, 64-bit Windows/macOS/Linux, or Raspberry Pi. Note that currently the Wolfram Cloud does not support LibraryLink, therefore IGraph/M does not run on the Wolfram Cloud.

To install the package automatically, simply evaluate the following in Mathematica:

Get["https://raw.githubusercontent.com/szhorvat/IGraphM/master/IGInstaller.m"]

IGraph/M can also be installed manually in the same way as any Mathematica application distributed as a paclet.

Download the .paclet file from the GitHub releases page, and install it using the PacletInstall function in Mathematica. For example, assuming that the file IGraphM-0.6.5.paclet was downloaded into the directory ~/Downloads, evaluate:

Needs["PacletManager`"]
PacletInstall["~/Downloads/IGraphM-0.6.5.paclet"]

After installation, the package can now be loaded with:

Needs["IGraphM`"]

Verify that it works by evaluating IGVersion[], then continue to the documentation with the IGDocumentation[] command.

To uninstall all currently installed versions of IGraph/M, evaluate PacletUninstall["IGraphM"]. This will remove all traces of IGraph/M from your system.

📖 Documentation

To open the documentation notebook, evaluate:

Needs["IGraphM`"]
IGDocumentation[]

Alternatively, search for "igraphm" in Mathematica's Documentation Center.

A web-based preview is also available.

The documentation is not yet complete and contributions are very welcome. If you would like to help out with expanding the documentation, send me an email.

For additional details about functions, also check the igraph documentation pages.

🛠️ Contributions

Help wanted with editing documentation and writing unit tests! Only basic Mathematica knowledge is required for this.

Contributions to IGraph/M are very welcome! Mathematica programmers of all levels of expertise can contribute.

In order of increasing difficulty, help is needed with the following tasks:

  • Just play with the package, read the documentation, and try to find problems.
  • Create examples for the documentation or edit the documentation.
  • Write formal unit tests.
  • Implement new functions in pure Wolfram Language code.
  • Expose more igraph library functions to IGraph/M (C++ knowledge required).
  • Implement entirely new functions in C++.

If you are interested in contributing, send me an email for guidance. Evaluate the following in Mathematica to get my email address:

Uncompress["1:eJxTTMoPChZiYGAorsrILypLLHFIz03MzNFLzs8FAG/xCOI="]

C++ programmers should look at Development.md for additional information.

💡Additional information

🎓 Citing

If you use IGraph/M in any academic publications, please cite:

  • Sz. Horvát, J. Podkalicki, G. Csárdi, T. Nepusz, V. Traag, F. Zanini, D. Noom, IGraph/M: graph theory and network analysis for Mathematica, Journal of Open Source Software, 8(81), 4899 (2023). https://doi.org/10.21105/joss.04899

⚖️ License

IGraph/M is licensed under the GNU GPLv3. See LICENSE.txt for details.