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++.
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.
IGRAPH_OPENMP_SUPPORT=OFF
at configuration time to disable this.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_INSTALL_LIBDIR
. This only affected Linux distributions which install into lib64
or other locations instead of lib
.libm
) when this is not necessary._CRT_SECURE_NO_WARNINGS
is now defined during compilation to enable compatibility with UWP.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.igraph_rng_min()
is now deprecated; assume a constant zero as its return value if you used this function in your own code.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.
find_package(igraph)
to find igraph and detect the appropriate compilation options for projects that link to it.CMAKE_INSTALL_<dir>
variables were absolute paths.libigraph.so.0.0.0
, as it used to be for igraph 0.8 and earlier.igraph_get_shortest_paths_dijkstra()
and igraph_get_shortest_paths_bellman_ford()
that returned incorrect results for unreachable vertices.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, 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.
igraph_vector_lex_cmp()
and igrapg_vector_colex_cmp()
for lexicographic
and colexicographic comparison of vectors. These functions may also be used
for sorting.igraph_community_multilevel()
is now randomized (thanks to Daniel Noom).CMAKE_INSTALL_LIBDIR
, were not respected.igraph_subcomponent()
, igraph_stack_ptr_free_all()
, igraph_stack_ptr_destroy_all()
, igraph_status_handler_stderr()
, igraph_progress_handler_stderr()
.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.PATH
was sometimes not set correctly, causing the tests to fail.bison
and flex
.arith.h
header for f2c when cross-compiling; see the Installation section of the documentation.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
.igraph_grg_game()
, igraph_sbm_game()
, igraph_barabasi_game()
, igraph_barabasi_aging_game()
.igraph_feedback_arc_set()
and igraph_community_optimal_modularity()
are now interruptible.-Wno-varargs
flag.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.
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.
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.igraph_layout_davidson_harel()
was not interruptible; now it is.igraph_i_cattribute_combine_vertices()
.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.
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 prototypeigraph_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.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.
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
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.
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.
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, 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.
igraph_vector_binsearch_slice()
performs binary search on a sorted slice of a vector.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.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.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.igraph_degree_sequence_game()
: improved performance with IGRAPH_DEGSEQ_SIMPLE_NO_MULTIPLE_UNIFORM
method.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.