Releases: igraph/python-igraph
igraph 0.11.8
Added
- Added
Graph.feedback_vertex_set()
to calculate a feedback vertex set of the graph. - Added new methods to
Graph.feedback_arc_set()
that allows the user to select the specific integer problem formulation used by the underlying solver.
Changed
- Ensured compatibility with Python 3.13.
- The C core of igraph was updated to version 0.10.14.
Fixed
- Fixed a potential memory leak in the
Graph.get_shortest_path_astar()
heuristic function callback.
Full Changelog: 0.11.6...0.11.8
igraph 0.11.6
Added
- Added
Graph.Hypercube()
for creating n-dimensional hypercube graphs. - Added
Graph.Chung_Lu()
for sampling from the Chung-Lu model as well as several related models. - Added
Graph.is_complete()
to test if there is a connection between all distinct pairs of vertices. - Added
Graph.is_clique()
to test if a set of vertices forms a clique. - Added
Graph.is_independent_vertex_set()
to test if some vertices form an independent set. - Added
Graph.mean_degree()
for a convenient way to compute the average degree of a graph.
Changed
- The C core of igraph was updated to version 0.10.13.
Graph.rewire()
now attempts to perform edge swaps 10 times the number of edges by default.- Error messages issued when an attribute is not found now mention the name and type of that attribute.
Full Changelog: 0.11.5...0.11.6
igraph 0.11.5
Added
- Added a
prefixattr=...
keyword argument toGraph.write_graphml()
that allows the user to strip theg_
,v_
ande_
prefixes from GraphML files written by igraph.
Changed
-
Graph.are_connected()
has now been renamed toGraph.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 toPyCapsule
, 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
New Contributors
- @DavidRConnell made their first contribution in #763
- @JDPowell648 made their first contribution in #764
- @rmmaf made their first contribution in #767
- @Kreijstal made their first contribution in #770
Full Changelog: 0.11.4...0.11.5
igraph 0.11.4
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 acceptsMatrix
instances and other sequences as an input, it is not limited to lists-of-lists-of-ints any more.
igraph 0.11.3
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 ofGraph.is_bigraphical()
. - Fixed a bug in the Matplotlib graph drawing backend that filled the interior of undirected curved edges.
igraph 0.11.2
Added
-
python-igraph
is now tested in Python 3.12. -
Added
weights=...
keyword argument toGraph.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 forigraph.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 inigraph.plot
. - As another consequence of the above, if using the
matplotlib
backend when plotting a graph,igraph.plot
now does not return theAxes
anymore. Instead, it returns a container artist calledGraphArtist
, which contains as children the elements of the graph plot: aVertexCollection
for the vertices, andEdgeCollection
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
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 toGraph.radius()
andGraph.eccentricity()
. -
Graph.distances()
,Graph.get_shortest_path()
andGraph.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 withmode != "out"
igraph 0.10.6
Changed
-
The C core of igraph was updated to version 0.10.6.
-
Graph.Incidence()
is now deprecated in favour ofGraph.Biadjacency()
as it constructs a bipartite graph from a bipartite adjacency matrix. (The previous name was a mistake). Future versions might re-introduceGraph.Incidence()
to construct a graph from its incidence matrix. -
Graph.get_incidence()
is now deprecated in favour ofGraph.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-introduceGraph.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
Added
-
The
plot()
function now takes abackend
keyword argument that can be used to specify the plotting backend explicitly. -
The
VertexClustering
object returned fromGraph.community_leiden()
now contains an extra property namedquality
that stores the value of the internal quality function optimized by the algorithm. -
Graph.Adjacency()
andGraph.Weighted_Adjacency()
now supportsloops="once"
,loops="twice"
andloops="ignore"
to control how loop edges are handled in a more granular way.loops=True
andloops=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 andGraph.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 callingGraph.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 theroots=...
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
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
andnormalized
arguments ofGraph.closeness()
did not function correctly.