Skip to content

Releases: igraph/python-igraph

igraph 0.11.5

07 May 17:45
8e7179c
Compare
Choose a tag to compare

Added

  • Added a prefixattr=... keyword argument to Graph.write_graphml() that allows the user to strip the g_, v_ and e_ prefixes from GraphML files written by igraph.

Changed

  • Graph.are_connected() has now been renamed to Graph.are_adjacent(), following up a similar change in the C core. The old name of the function is deprecated but will be kept around until at least 0.12.0.

  • The C core of igraph was updated to version 0.10.12.

  • Deprecated PyCObject API calls in the C code were replaced by calls to PyCapsule, thanks to @DavidRConnell in #763

  • get_shortest_path() documentation was clarified by @JDPowell648 in #764

  • It is now possible to link to an existing igraph C core on MSYS2, thanks to @Kreijstal in #770

Fixed

  • Bugfix in the NetworkX graph conversion code by @rmmaf in #767

New Contributors

Full Changelog: 0.11.4...0.11.5

igraph 0.11.4

13 Feb 22:29
e594422
Compare
Choose a tag to compare

Added

  • Added Graph.Prufer() to construct a graph from a Prüfer sequence.

  • Added Graph.Bipartite_Degree_Sequence() to construct a bipartite graph from a bidegree sequence.

Fixed

  • Fixed import of graph-tool graphs for vertex properties where each property has a vector value.

  • Graph.Adjacency() now accepts Matrix instances and other sequences as an input, it is not limited to lists-of-lists-of-ints any more.

igraph 0.11.3

20 Nov 11:06
ecace80
Compare
Choose a tag to compare

Added

  • Added Graph.__invalidate_cache() for debugging and benchmarking purposes.

Changed

  • The C core of igraph was updated to version 0.10.8.

Fixed

  • Removed incorrectly added loops=... argument of Graph.is_bigraphical().
  • Fixed a bug in the Matplotlib graph drawing backend that filled the interior of undirected curved edges.

igraph 0.11.2

12 Oct 21:28
a249b9a
Compare
Choose a tag to compare

Added

  • python-igraph is now tested in Python 3.12.

  • Added weights=... keyword argument to Graph.layout_kamada_kawai().

Changed

  • The matplotlib plotting infrastructure underwent major surgery and is now able to show consistent vertex and edge drawings at any level of zoom, including with animations, and for any aspect ratio.
  • As a consequence of the restructuring at the previous point, vertex sizes are now specified in figure points and are not affected by axis limits or zoom. With the current conventions, vertex_size=25 is a reasonable size for igraph.plot.
  • As another consequence of the above, vertex labels now support offsets from the vertex center, in figure point units.
  • As another consequence of the above, self loops are now looking better and their size can be controlled using the edge_loop_size argument in igraph.plot.
  • As another consequence of the above, if using the matplotlib backend when plotting a graph, igraph.plot now does not return the Axes anymore. Instead, it returns a container artist called GraphArtist, which contains as children the elements of the graph plot: a VertexCollection for the vertices, and EdgeCollection for the edges, and so on. These objects can be used to modify the plot after the initial rendering, e.g. inside a Jupyter notebook, to fine tune the appearance of the plot. While documentation on specific graphic elements is still scant, more descriptive examples will follow in the future.

Fixed

  • Fixed drawing order of vertices in the Plotly backend (#691).

  • Fixed plotting of null graphs with the Matplotlib backend.

Removed

  • Dropped support for Python 3.7 as it has reached its end of life.

igraph 0.10.8

12 Sep 20:44
c61f7f0
Compare
Choose a tag to compare

Yes, the version number is correct - igraph 0.10.7 has never made it to PyPI. It is tagged in the repository, but it has never been released officially. The changelog below lists the changes between igraph 0.10.6 and 0.10.8.

Added

  • Added is_bigraphical() to test whether a pair of integer sequences can be the degree sequence of some bipartite graph.

  • Added weights=... keyword argument to Graph.radius() and Graph.eccentricity().

  • Graph.distances(), Graph.get_shortest_path() and Graph.get_shortest_paths() now allow the user to select the algorithm to be used explicitly.

Changed

  • The C core of igraph was updated to version 0.10.7.

  • Graph.distances() now uses Dijkstra's algorithm when there are zero weights but no negative weights. Earlier versions switched to Bellman-Ford or Johnson in the presence of zero weights unnecessarily.

Fixed

  • Fixed a bug in EdgeSeq.select(_incident=...) for undirected graphs.

  • Fixed a memory leak in Graph.distances() when attempting to use Johnson's algorithm with mode != "out"

igraph 0.10.6

13 Jul 14:24
786eaf2
Compare
Choose a tag to compare

Changed

  • The C core of igraph was updated to version 0.10.6.

  • Graph.Incidence() is now deprecated in favour of Graph.Biadjacency() as it constructs a bipartite graph from a bipartite adjacency matrix. (The previous name was a mistake). Future versions might re-introduce Graph.Incidence() to construct a graph from its incidence matrix.

  • Graph.get_incidence() is now deprecated in favour of Graph.get_biadjacency() as it returns the bipartite adjacency matrix of a graph and not its incidence matrix. (The previous name was a mistake). Future versions might re-introduce Graph.get_incidence() to return the incidence matrix of a graph.

  • Reverted the change in 0.10.5 that prevented adding vertices with integers as vertex names. Now we show a deprecation warning instead, and the addition of vertices with integer names will be prevented from version 0.11.0 only.

Fixed

  • Fixed a minor memory leak in Graph.decompose().

  • The default vertex size of the Plotly backend was fixed so the vertices are now visible by default without specifying an explicit size for them.

igraph 0.10.5

01 Jul 09:06
e5899ed
Compare
Choose a tag to compare

Added

  • The plot() function now takes a backend keyword argument that can be used to specify the plotting backend explicitly.

  • The VertexClustering object returned from Graph.community_leiden() now contains an extra property named quality that stores the value of the internal quality function optimized by the algorithm.

  • Graph.Adjacency() and Graph.Weighted_Adjacency() now supports loops="once", loops="twice" and loops="ignore" to control how loop edges are handled in a more granular way. loops=True and loops=False keep on working as in earlier versions.

  • Added Graph.get_shortest_path() as a convenience function for cases when only one shortest path is needed between a given source and target vertices.

  • Added Graph.get_shortest_path_astar() to calculate the shortest path between two vertices using the A-star algorithm and an appropriate heuristic function.

  • Added Graph.count_automorphisms() to count the number of automorphisms of a graph and Graph.automorphism_group() to calculate the generators of the automorphism group of a graph.

  • The VertexCover constructor now allows referring to vertices by names instead of IDs.

Fixed

  • resolution parameter is now correctly taken into account when calling Graph.modularity()

  • VertexClustering.giant() now accepts the null graph. The giant component of a null graph is the null graph according to our conventions.

  • Graph.layout_reingold_tilford() now accepts vertex names in the roots=... keyword argument.

  • The plotting of curved directed edges with the Cairo backend is now fixed; arrowheads were placed at the wrong position before this fix.

Changed

  • The C core of igraph was updated to version 0.10.5.

Removed

  • Removed defunct Graph.community_leading_eigenvector_naive() method. Not a breaking change because it was already removed from the C core a long time ago so the function in the Python interface did not do anything useful either.

igraph 0.10.4

28 Jan 13:24
b6ebd8e
Compare
Choose a tag to compare

Added

  • Added Graph.vertex_coloring_greedy() to calculate a greedy vertex coloring for the graph.
  • Betweenness and edge betweenness scores can now be calculated for a subset of the shortest paths originating from or terminating in a certain set of vertices only.

Fixed

  • Fixed the drawing of VertexDendrogram instances, both in the Cairo and the Matplotlib backends.
  • The cutoff and normalized arguments of Graph.closeness() did not function correctly.

igraph 0.10.3

01 Jan 10:06
ee03c3c
Compare
Choose a tag to compare

Changed

  • The C core of igraph was updated to version 0.10.3.

  • UMAP layout now exposes the computation of the symmetrized edge weights via umap_compute_weights(). The layout function, Graph.layout_umap(), can now be called either on a directed graph with edge distances, or on an undirected graph with edge weights, typically computed via umap_compute_weights() or precomputed by the user. Moreover, the sampling_prob argument was faulty and has been removed. See PR #613 for details.

  • The resolution_parameter argument of Graph.community_leiden() was renamed to resolution for sake of consistency. The old variant still works with a deprecation warning, but will be removed in a future version.

Fixed

  • Graph.Data_Frame() now handles the Int64 data type from pandas, thanks to @Adriankhl. See PR #609 for details.

  • Graph.layout_lgl() root argument is now optional (as it should have been).

  • The VertexClustering class now handles partial dendrograms correctly.

igraph 0.10.2

17 Oct 12:48
ebef7af
Compare
Choose a tag to compare

Added

  • python-igraph is now tested in Python 3.11.
  • Added Graph.modularity_matrix() to calculate the modularity matrix of a graph.
  • Added Graph.get_k_shortest_paths(), thanks to @sombreslames. See PR #577 for details.
  • The setup.py script now also accepts environment variables instead of command line arguments to configure several aspects of the build process (i.e. whether a fully static extension is being built, or whether it is allowed to use pkg-config to retrieve the compiler and linker flags for an external igraph library instead of the vendored one). The environment variables are named similarly to the command line arguments but in uppercase, dashes replaced with underscores, and they are prefixed with IGRAPH_ (i.e. --use-pkg-config becomes IGRAPH_USE_PKG_CONFIG).

Changed

  • The C core of igraph was updated to version 0.10.2, fixing a range of bugs originating from the C core.

Fixed

  • Fixed a crash in Graph.decompose() that was accidentally introduced in 0.10.0 during the transition to igraph_graph_list_t in the C core.
  • Clustering.sizes() now works correctly even if the membership vector contains None items.
  • Graph.modularity() and Graph.community_multilevel() now correctly expose the resolution parameter.
  • Fixed a reference leak in Graph.is_chordal() that decreased the reference count of Python's built-in True and False constants unnecessarily.
  • Unit tests updated to get rid of deprecation warnings in Python 3.11.