igraph – The network analysis package

igraph is a collection of network analysis tools with the emphasis on efficiency, portability and ease of use. igraph is open source and free. igraph can be programmed in R, Python, Mathematica and C/C++.


igraph R package python-igraph IGraph/M igraph C library

  Additional funding for igraph

The igraph project is proud to announce that the Chan Zuckerberg Initiative continues to fund the project in their program on Essential Open Source Software for Science. The project will receive two grants of $400,000 over the course of the next two years. One grant will help to further develop and maintain the igraph project. The other grant will help to diversify the pool of contributors and maintainers of the project, which is jointly coordinated with Women in Network Science, and will be led by Brooke Foucault Welles.

Last year, the core library of igraph was enormously improved, making the library easier to build, easier to maintain and easier to use. However, most users are not using the C core directly, but are using it through one of the interfaces: Python, R or Mathematica. The CZI grant will support the igraph development team on improving these interfaces, by making them more intuitive to use and by integrating them more closely in the host language. Additionally, development efforts will be aimed at making the library and the interfaces easier to maintain, focusing on long-term sustainability. This ensures that igraph continues to be a useful tool for network scientists from various disciplines across the globe.

Having people committed to maintain and further develop igraph is critical to ensure its long-term viability. We made steps towards building a more inclusive and engaged community by opening a forum dedicated to igraph. We aim to enlarge and diversify the team of contributors and maintainers of the project. Making it easier to start using igraph and contributing to igraph is an important step. Improving documentation and tutorials helps achieve that goal, but we will also actively organize workshops for users and contributors, with a specific focus on women and non-binary people, and engage more actively on the community forum. Additionally, a mentorship programme will be setup specifically to facilitate women and non-binary people to use and contribute to igraph, paving the way for them to become maintainers of igraph. The CZI grant will enable us to engage more people in achieving these objectives.


  python-igraph 0.9.6

python-igraph 0.9.6, the fourth bugfix release of the 0.9 series, has arrived.

The preferred way of installing the Python interface is via pip; typing pip install python-igraph should install a pre-compiled Python wheel on most supported platforms (Windows, Linux and macOS). The pre-compiled wheels and the source code are also available from the Python Package Index page.

This release provides a fix for a single plotting issue with the Matplotlib backend that was accidentally introduced in 0.9.5. See the changelog on Github for more details:

This release also provides experimental native Python wheels for Apple Silicon CPUs. Note that the Apple Silicon wheels are not tested in a CI environment yet; this will hopefully change in the near future when Github Actions starts supporting Apple Silicon. Until then, feel free to report any issues that you find with Apple Silicon wheels (or any other wheel) in the issue tracker on Github.


  python-igraph 0.9.5

python-igraph 0.9.5, the third bugfix release of the 0.9 series, has arrived.

The preferred way of installing the Python interface is via pip; typing pip install python-igraph should install a pre-compiled Python wheel on most supported platforms (Windows, Linux and macOS). The pre-compiled wheels and the source code are also available from the Python Package Index page.

See the changelogs on Github for relevant changes in 0.9.5:

This release also provides experimental native Python wheels for Apple Silicon CPUs. Note that the Apple Silicon wheels are not tested in a CI environment yet; this will hopefully change in the near future when Github Actions starts supporting Apple Silicon. Until then, feel free to report any issues that you find with Apple Silicon wheels (or any other wheel) in the issue tracker on Github.


  python-igraph 0.9.4

python-igraph 0.9.4, the second bugfix release of the 0.9 series, has arrived. (Yes, we skipped 0.9.2 and 0.9.3).

The preferred way of installing the Python interface is via pip; typing pip install python-igraph should install a pre-compiled Python wheel on most supported platforms (Windows, Linux and macOS). The pre-compiled wheels and the source code are also available from the Python Package Index page.

This release brings python-igraph up-to-date with igraph 0.9.4. See the changelogs on Github for relevant changes in 0.9.4:

This release is also the first one that provides experimental native Python wheels for Apple Silicon CPUs. Note that the Apple Silicon wheels are not tested in a CI environment yet; this will hopefully change in the near future when Github Actions starts supporting Apple Silicon. Until then, feel free to report any issues that you find with Apple Silicon wheels (or any other wheel) in the issue tracker on Github.


  C/igraph 0.9.4

C/igraph 0.9.4, the fourth bugfix release of the 0.9 series, has arrived.

The source can be obtained from the GitHub releases page.

This release includes bug fixes only.

Changed

  • Unweighted transitivity (i.e. clustering coefficient) calculations now ignore multi-edges and edge directions instead of rejecting multigraphs and directed graphs.
  • igraph_transitivity_barrat() now returns an error code if the input graph has multiple edges (which is not handled correctly by the implementation yet).

Fixed

  • igraph_local_scan_k_ecount() now handles loops correctly.
  • igraph_transitivity_avglocal_undirected() is no longer slower than igraph_transitivity_local_undirected().
  • Worked around an invalid warning issued by Clang 9.0 when compiling with OpenMP.

Other

  • Documentation improvements.

  C/igraph 0.9.3

C/igraph 0.9.3, the third bugfix release of the 0.9 series, has arrived.

The source can be obtained from the GitHub releases page.

This release includes bug fixes only.

Added

  • OpenMP is now enabled and used by certain functions (notably PageRank calculation) when the compiler supports it. Set IGRAPH_OPENMP_SUPPORT=OFF at configuration time to disable this.

Fixed

  • igraph_get_incidence() no longer reads and writes out of bounds when given a non-bipartite graph, but gives a warning and ignores edges within a part.
  • igraph_dyad_census() no longer reports an overflow on singleton graphs, and handles loops and multigraphs correctly. Undirected graphs are handled consistently and will no longer give a warning.
  • igraph_vector_lex_cmp() and igraph_vector_colex_cmp() dereferenced their arguments only once instead of twice, and therefore did not work with igraph_vector_ptr_sort().
  • igraph_maximal_cliques_subset() and igraph_transitivity_barrat() corrupted the error handling stack (“finally stack”) under some circumstances.
  • CMake package files did not respect CMAKE_INSTALL_LIBDIR. This only affected Linux distributions which install into lib64 or other locations instead of lib.
  • The parser sources could not be generated when igraph was in a location that contained spaces in its path.
  • igraph no longer links to the math library (libm) when this is not necessary.
  • _CRT_SECURE_NO_WARNINGS is now defined during compilation to enable compatibility with UWP.
  • Fixed a compilation issue on MSYS / MinGW when link-time optimization was enabled and the MSYS Makefiles CMake generator was used. Some source files in igraph were renamed as a consequence, but these should not affect users of the library.

Deprecated

  • igraph_rng_min() is now deprecated; assume a constant zero as its return value if you used this function in your own code.

Other

  • Updated the vendored CXSparse library to version 3.2.0

  C/igraph 0.9.2

C/igraph 0.9.2, the second bugfix release of the 0.9 series, has arrived.

The source can be obtained from the GitHub releases page.

This release includes bug fixes only. We have also added support for CMake package files, making it easier to use igraph in CMake-based projects.

Added

  • CMake package files are now installed with igraph. This allows find_package(igraph) to find igraph and detect the appropriate compilation options for projects that link to it.

Fixed

  • igraph can now be used as a CMake subproject in other CMake-based projects.
  • The documentaton can now be built from the release tarball.
  • Configuration will no longer fail when the release tarball is extracted into a subdirectory of an unrelated git repository.
  • The generated pkg-config file was incorrect when CMAKE_INSTALL_<dir> variables were absolute paths.
  • On Unix-like systems, the library name is now libigraph.so.0.0.0, as it used to be for igraph 0.8 and earlier.
  • Fixed a return type mismatch in parser sources, and fixed some warnings with recent versions of gcc.
  • Fixed a bug in igraph_get_shortest_paths_dijkstra() and igraph_get_shortest_paths_bellman_ford() that returned incorrect results for unreachable vertices.

Other

  • Improved installation instructions and tutorial.

  python-igraph 0.9.1

python-igraph 0.9.1, the first bugfix release of the 0.9 series, has arrived.

The preferred way of installing the Python interface is via pip; typing pip install python-igraph should install a pre-compiled Python wheel on most supported platforms (Windows, Linux and macOS). The pre-compiled wheels and the source code are also available from the Python Package Index page.

This release brings python-igraph up-to-date with igraph 0.9.1. See the changelogs on Github for relevant changes in 0.9.0 and 0.9.1:


  C/igraph 0.9.1

C/igraph 0.9.1, the first bugfix release of the 0.9 series, has arrived.

The source can be obtained from the GitHub releases page.

This release includes bug fixes only, apart from a minor addition concerning lexicographic ordering of vectors, which was not substantial enough for a minor version bump. The changelog is below.

Added

  • igraph_vector_lex_cmp() and igrapg_vector_colex_cmp() for lexicographic and colexicographic comparison of vectors. These functions may also be used for sorting.

Changed

  • igraph_community_multilevel() is now randomized (thanks to Daniel Noom).

Fixed

  • CMake settings that controlled the library installation directory name, such as CMAKE_INSTALL_LIBDIR, were not respected.
  • Under some conditions, the generated pkg-config file contained an incorrect include directory path.
  • The following functions were not exported from the shared library: igraph_subcomponent(), igraph_stack_ptr_free_all(), igraph_stack_ptr_destroy_all(), igraph_status_handler_stderr(), igraph_progress_handler_stderr().
  • Built-in random number generators (igraph_rngtype_mt19937, igraph_rngtype_rand, igraph_rngtype_glibc2) were not exported from the shared library.
  • igraph_layout_graphopt() no longer rounds the spring_length parameter to an integer.
  • igraph_get_all_shortest_paths_dijkstra() no longer modifies the res vector’s item destructor.
  • igraph_get_shortest_path_bellman_ford() did not work correctly when calculating paths to all vertices.
  • igraph_arpack_rnsolve() checks its parameters more carefully.
  • igraph_community_to_membership() does not crash anymore when csize is requested but membership is not.
  • igraph_citing_cited_type_game(): fixed memory leaks (thanks to Daniel Noom.
  • igraph_transitivity_undirected(), igraph_transitivity_avglocal_undirected() and igraph_transitivity_barrat() no longer trigger an assertion failure when used with the null graph.
  • igraph_(personalized_)pagerank() would return incorrect results for weighted multigraphs with fewer than 128 vertices when using IGRAPH_PAGERANK_ALGO_PRPACK.
  • igraph_diversity() now checks its input more carefully, and throws an error when the input graph has multi-edges or is directed.
  • igraph_shortest_paths_johnson() would return incorrect results when the to argument differed from from (thanks to Daniel Noom).
  • igraph_is_graphical() would fail to set the result variable for certain special degree sequences in the undirected simple graph case.
  • Non-maximal clique finding functions would sometimes return incomplete results when finding more than 2147483647 (i.e. 2^31 - 1) cliques.
  • GLPK internal errors no longer crash igraph.
  • Fixed some potential memory leaks that could happen on error conditions or when certain functions were interrupted.
  • When testing a DLL build on Windows, the PATH was sometimes not set correctly, causing the tests to fail.
  • When compiling from the git repository (as opposed to the release tarball), the build would fail with recent versions of bison and flex.

Other

  • Documentation improvements.
  • Much faster documentation builds.
  • Allow using a pre-generated arith.h header for f2c when cross-compiling; see the Installation section of the documentation.
  • The IGRAPH_ENABLE_LTO build option now supports the AUTO value, which uses LTO only if the compiler supports it. Warning: CMake may not always be able to detect that LTO is not fully supported. Therefore, the default setting is OFF.
  • The following functions are now interruptible: igraph_grg_game(), igraph_sbm_game(), igraph_barabasi_game(), igraph_barabasi_aging_game().
  • Functions that use GLPK, such as igraph_feedback_arc_set() and igraph_community_optimal_modularity() are now interruptible.
  • Add support for older versions of Clang that do not recognize the -Wno-varargs flag.

Acknowledgments

  • Big thanks to Daniel Noom for continuing to expand the test suite and discovering and fixing several bugs in the process!

  C/igraph 0.9.0

Release 0.9.0 of igraph’s C core has arrived, almost exactly one year after the latest minor release, 0.8.0. This release brings several new features and improvements, and also a complete switch from the old autotools-based build system to a new one based on CMake. This results in faster build times and the opportunity to use alternative build tools instead of make; in particular, igraph now support ninja and can also make use of a locally installed ccache compiler cache for even faster builds.

We gratefully acknowledge support from CZI for the development of igraph. In addition, we would like to thank everyone who reported issues, contributed features or fixes, or edited the documentation. igraph is an open-source project run by volunteers. As always, your contributions are very welcome!

Most people use igraph through its high-level interfaces for R, Python or Mathematica. A new release of the Python interface, based on 0.9.0, is expected to be released in a few days. The R and Mathematica interfaces already include some of the improvements, and will continue to integrate more.

The sources and the changelog can be obtained from the GitHub releases page.


All news →