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

  C/igraph 0.8.5

C/igraph 0.8.5, the fifth bugfix release of the 0.8 series, has arrived.

The sources can be obtained from the GitHub releases page.

This release includes bug fixes only. The changelog is below.

Changed

  • igraph_write_graph_pajek(): the function now always uses the platform-native line endings (CRLF on Windows, LF on Unix and macOS). Earlier versions tried to enforce Windows line endings, but this was error-prone, and since all recent versions of Pajek support both line endings, enforcing Windows line endings is not necessary any more.

Fixed

  • Fixed several compilation issues with MINGW32/64, thanks to @jannick0
  • igraph_layout_davidson_harel() was not interruptible; now it is.
  • Added a missing memory cleanup call in igraph_i_cattribute_combine_vertices().
  • Fixed a few memory leaks in test cases.

  C/igraph 0.8.4

C/igraph 0.8.4, the fourth bugfix release of the 0.8 series, has arrived.

The sources can be obtained from the GitHub releases page.

This release includes bug fixes and documentation improvements. The changelog is below.

Fixed

  • igraph_i_cattribute_combine_vertices(): fixed invalid cleanup code that eventually filled up the "finally" stack when combining vertices with attributes extensively.
  • igraph_hrg_sample(): fixed incorrect function prototype
  • igraph_is_posinf() and igraph_is_neginf(): fixed incorrect result on platforms where the sign of the result of isinf() is not indicative of the sign of the input.
  • Fixed building with vendored LAPACK and external BLAS
  • Fixed building with XCode 12.2 on macOS

Other

  • Documentation improvements
  • General code cleanup to reduce the number of compiler warnings

  python-igraph 0.8.3

python-igraph 0.8.3, the third bugfix release of the 0.8 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.8.3, and it also contains bug fixes and performance improvements. This release will also be the last one whose version number is deliberately in sync with the version number of the C core. The changelog is below.

Added

  • Graph.community_leiden() now supports a negative number of iterations; it will keep on iterating until the algorithm reaches a stable partition.

  • Graph.Incidence() now supports weighted graphs, thanks to @PuneethaPai

  • You can now create a Graph object from a pandas dataframe with Graph.DataFrame, thanks to @iosonofabio

  • Added conversion to/from networkx and graph-tool with Graph.{to,from}_{networkx,graph_tool}, thanks to @iosonofabio

  • Graph.add_edges() and Graph.add_vertices() now supports specifying attributes for the newly added vertices and edges, thanks to @iosonofabio

  • Added Graph.dfs() and Graph.dfsiter(), thanks to @iosonofabio

  • Added Graph.bridges() to get the bridges of a graph.

  • Added Graph.clear() to remove all edges, vertices and graph attributes in a single call, thanks to @iosonofabio

Changed

  • Upgraded igraph C library to 0.8.3.

  • Graph union and intersection now supports graphs with vertex names, thanks to @iosonofabio

  • Graph.delete_vertices(None) and Graph.delete_edges(None) are now deprecated; use Graph.delete_vertices() and Graph.delete_edges() (without a positional argument) instead to delete all vertices or edges. The old syntax will be removed in 0.9.

Fixed

  • setup.py now works on Windows with MinGW, thanks to @Parakoopa

  • Graph.difference() now treats loop edges correctly

  • summary() does not fail with non-string vertex names any more, thanks to @deeenes

  • The Reingold-Tilford layout should not produce edge crossings on tree graphs any more.

  • The postprocessing step of Graph.biconnected_components() is much faster now (#281); the earlier version was responsible for a significant speed difference between the C core and the Python interface.

Other

  • Various documentation improvements, thanks to @chrisfalter, @iosonofabio, @kmankinen, @remysucre, @szhorvat

  • Graph.complementer() now allows keyword arguments (it used to support positional arguments only).

  • Dropped support for Python 3.5, added support for Python 3.9.


  C/igraph 0.8.3

C/igraph 0.8.3, the third bugfix release of the 0.8 series, has arrived.

The sources can be obtained from the GitHub releases page.

This release includes bug fixes and performance improvements. The changelog is below.

Added

  • igraph_vector_binsearch_slice() performs binary search on a sorted slice of a vector.

Changed

  • igraph_eigenvector_centrality() assumes the adjacency matrix of undirected graphs to have twice the number of self-loops for each vertex on the diagonal. This makes the results consistent between an undirected graph and its directed equivalent when each edge is replaced by a mutual edge pair.

Fixed

  • igraph_isomorphic() now verifies that the input graphs have no multi-edges.
  • igraph_difference() was creating superfluous self loops.
  • igraph_count_multiple() was giving incorrect results for self-loops in directed graph.
  • igraph_betweenness_estimate(): fixed incorrect results with finite cutoff.
  • igraph_eigen_matrix_symmetric(): fixed incorrect matrix multiplication.
  • Corrected several issues that could arise during an error condition.
  • igraph_realize_degree_sequence() did not correctly detect some non-graphical inputs.
  • igraph_is_graphical_degree_sequence(): fixed incorrect results in undirected case.
  • igraph_community_leiden(): fixed incorrect result when self-loops are present.
  • igraph_eigenvector_centrality(): fixed incorrect value for isolated vertices in weighted graphs.
  • igraph_eigenvector_centrality(): corrected the handling of self-loops.
  • igraph_layout_reingold_tilford(): fixed an issue where branches of the tree would sometimes overlap.

Other

  • igraph_degree_sequence_game(): improved performance with IGRAPH_DEGSEQ_SIMPLE_NO_MULTIPLE_UNIFORM method.
  • Improved the robustness of the test suite.
  • Documentation improvements.
  • Improved error and warning messages.
  • Improved compatibility with recent versions of Microsoft Visual C.

  Funding from CZI

We are excited to announce that the igraph project will be supported with a grant of $180,000 from the Chan Zuckerberg Initiative in the Essential Open Source Software for Science program. It was recognized that igraph fulfills a critical role for providing network analysis in a variety of scientific domains, including biomedical research. The funding will expedite ongoing development efforts, and should result in a 1.0 release of igraph’s C core with a stable, well-documented and supported API.

For years, the development of igraph was done on a voluntary basis. With funding available, we can make sure developers have more time available to dedicate to igraph. In particular, the funding will support Gábor Csárdi, Tamás Nepusz, Szabolcs Horvát, Vincent Traag and Fabio Zanini.

The core of igraph is written in C, but most people use igraph through its high-level interfaces for R, Python or Mathematica. Much of the development effort will be concentrated on the core of igraph, but the high-level interfaces will not be overlooked.

Even though we will dedicate more time to igraph, the project cannot survive without a vibrant community of users and contributors. Whether you reported issues, contributed code or improved the documentation, your contributions remain vital to the project. We hope that our new community forum will enable us to form a tighter and more supportive community, where you can ask questions, support others, or discuss recent advances in network analysis or graph theory.

The project will start from the 1st of September onwards, and will last for a year. The 1.0 version is planned to be released towards the end of the project.


  C/igraph 0.8.2

C/igraph 0.8.2, the second bugfix release of the 0.8 series, has arrived.

The sources can be obtained from the GitHub releases page.

This release includes no new features, only bug fixes and reliability improvements. The changelog is below.

Changed

  • Improved argument checking: igraph_all_st_mincuts() and igraph_sir()
  • Improved interruptibility: igraph_sir()

Fixed

  • igraph_community_leiden(): fixed crash when interrupting
  • The tests are now more robust. Some incorrect test failures were fixed when running on i386 architecture, or when using different versions of external dependencies.

Others

  • Improved error messages from igraph_sir().
  • Improved compatibility with more recent versions of Microsoft Visual C.

  C/igraph 0.8.1

We are happy to announce the first bugfix release of the 0.8 series of igraph's C core!

The sources can be obtained from the GitHub releases page.

This release includes no new features, only bug fixes and reliability improvements. The changelog is below.

Changed

  • Improved interruptability: igraph_degree_sequence_game()
  • Improved argument checking: igraph_forest_fire_game()
  • Updated the plfit library to version 0.8.1

Fixed

  • igraph_community_edge_betweenness(): fix for graphs with no edges (PR #1312)
  • igraph_bridges() now handles multigraphs correctly (PR #1335)
  • igraph_avg_nearest_neighbor_degree(): fix for memory leak in weighted case (PR #1339)
  • igraph_community_leiden(): fix crash bug (PR #1357)

Other

  • Included ACKOWLEDGEMENTS.md
  • Documentation improvements

  python-igraph 0.8.0

Release 0.8.0 of igraph's Python interface follows the recent release of version 0.8.0 of the C core with many bug fixes that have accumulated over the last five years, and an improved build process that does not require the C core of igraph to be downloaded at the time when python-igraph is installed; the tarball of python-igraph already bundles the appropriate version of the C core in it.

Including the C core directly in the source tarball also allows us to decouple python-igraph's version number from the version number of the C core in the future. This means that we no longer have to wait for a release of the C core in order to fix some bugs in the Python interface.

Precompiled Python wheels

Starting from this release, we will also aim to provide pre-compiled Python wheels for most platforms. The current release includes Python wheels for Python 2.7, 3.5, 3.6, 3.7 and 3.8 on Windows, macOS and Linux, so most users will not have to compile anything when installing python-igraph from pip. Currently the only limitation is that the Windows wheels do not support GraphML import; this will be fixed in the next patch release (0.8.1).

End of support for Python 2.7

python-igraph 0.8.x will also be the last version that supports Python 2.7. Since Python 2 has reached its end of life, we will drop support for Python 2 before python-igraph 0.9 so we can simplify some parts of the codebase where we needed to introduce additional code to support both Python versions.

As for Python 3, we are committing ourselves to supporting at least the last three minor releases of Python 3.

Although we are not suporting PyPy officially, python-igraph will also be tested with PyPy regularly in a CI environment, and we will strive to fix any issues that arise with PyPy. If you use python-igraph with PyPy and you are willing to become an official maintainer responsible for PyPy compatibility, please let us know in the community forum.

New community forum

Concurrently with the release of igraph 0.8, we have launched a new community forum, which replaces the mailing list as the main support channel. The community forum is also meant for users of python-igraph, so If you are a current python-igraph user or just interested in the project, please join!

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!


  C/igraph 0.8.0

Release 0.8.0 of igraph's C core, coming almost five years after 0.7.1, is a major improvement with several new features, performance and robustness improvements, and many bug fixes. New functionality includes additional graph generators, functions for handling trees, new community detection methods, improved clique finding, spectral graph embedding, as well as several other features. Please see the changelog for more details.

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, incorporating all these improvements, is expected to be released in a few weeks. The R and Mathematica interfaces already include some of the improvements, and will continue to integrate more.

Concurrently with the release of igraph 0.8, we are launching a new community forum, which will replace the mailing list as the main support channel. If you are a current igraph user or just interested in the project, please join!


  IGraph/M 0.3.103

IGraph/M, a Mathematica interface for igraph is now officially one of the supported higher-level interfaces for igraph. We would like to thank Szabolcs Horvát for all his efforts dedicated to supporting igraph from Mathematica!

New releases of IGraph/M will be published on the GitHub page of the project.


All news →