Skip to content

Releases: igraph/python-igraph

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.

igraph 0.10.1

13 Sep 06:50
c3df47e
Compare
Choose a tag to compare

Added

  • Added Graph.minimum_cycle_basis() and Graph.fundamental_cycles()
  • Graph.average_path_length() now supports edge weights.

Fixed

  • Restored missing exports from igraph.__all__ that used to be in the main igraph package before 0.10.0.

igraph 0.10.0

06 Sep 06:31
20ead61
Compare
Choose a tag to compare

Added

  • More robust support for Matplotlib and initial support for plotly as graph plotting backends, controlled by a configuration option. See PR #425 for more details.

  • Added support for additional ways to construct a graph, such as from a dictionary of dictionaries, and to export a graph object back to those data structures. See PR #434 for more details.

  • Graph.list_triangles() lists all triangles in a graph.

  • Graph.reverse_edges() reverses some or all edges of a graph.

  • Graph.Degree_Sequence() now supports the "no_multiple_uniform" generation method, which generates simple graphs, sampled uniformly, using rejection sampling.

  • Graph.Lattice() now supports per-dimension periodicity control.

  • Graph.get_adjacency() now allows the user to specify whether loop edges should be counted once or twice, or not at all.

  • Graph.get_laplacian() now supports left-, right- and symmetric normalization.

Changed

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

  • We now publish abi3 wheels on PyPI from CPython 3.9 onwards, making it possible to use an already-built Python wheel with newer minor Python releases (and also reducing the number of wheels we actually need to publish). Releases for CPython 3.7 and 3.8 still use version-specific wheels because the code of the C part of the extension contains conditional macros for CPython 3.7 and 3.8.

  • Changed default value of the use_vids=... argument of Graph.DataFrame() to True, thanks to @fwitter.

  • Graph.Degree_Sequence() now accepts all sorts of sequences as inputs, not only lists.

Fixed

  • The Matplotlib backend now allows edge_color and edge_width to be set
    on an edge-by-edge basis.

Removed

  • Dropped support for Python 3.6.

  • Removed deprecated UbiGraphDrawer.

  • Removed deprecated show() method of Plot instances as well as the feature that automatically shows the plot when plot() is called with no target.

  • Removed the eids keyword argument of get_adjacency().

Deprecated

  • Graph.clusters() is now deprecated; use Graph.connected_components() or its already existing shorter alias, Graph.components().

  • Graph.shortest_paths() is now deprecated; use Graph.distances() instead.

igraph 0.9.11

08 Jun 20:43
395b849
Compare
Choose a tag to compare

Added

  • We now publish musllinux wheels on PyPI.

Changed

  • Vendored igraph was updated to version 0.9.9.

Fixed

  • Graph union and intersection (by name) operators now verify that there are no duplicate names within the individual graphs.

  • Fixed a memory leak in Graph.union() when edge maps were used; see #534 for details.

  • Fixed a bug in the Cairo and Matplotlib backends that prevented edges with labels from being drawn properly; see #535 for details.

igraph 0.9.10

11 Apr 13:51
14bddf6
Compare
Choose a tag to compare

Changed

  • Vendored igraph was updated to version 0.9.8.

Fixed

  • Fixed plotting of curved edges in the Cairo plotting backend.

  • setup.py now looks for igraph.pc recursively in vendor/install; this fixes building igraph from source in certain Linux distributions

  • Graph.shortest_paths() does not crash with zero-length weight vectors any more

  • Fix a memory leak in Graph.delete_vertices() and other functions that convert a list of vertex IDs internally to an igraph_vs_t object, see #503 for details.

  • Fixed potential memory leaks in Graph.maximum_cardinality_search(), Graph.get_all_simple_paths(), Graph.get_subisomorphisms_lad(), Graph.community_edge_betweenness(), as well as the union and intersection operators.

  • Fix a crash that happened when subclassing Graph and overriding __new__() in the subclass; see #496 for more details.

  • Documentation now mentions that we now support graphs of size 5 or 6 for isomorphism / motif calculations if the graph is undirected

igraph 0.9.9

10 Jan 14:46
Compare
Choose a tag to compare

Changed

  • Vendored igraph was updated to version 0.9.6.

Fixed

  • Fixed a performance bottleneck in VertexSeq.select() and EdgeSeq.select() for the case when the VertexSeq or the EdgeSeq represents the whole graph. See #494 for more details.

  • Edge labels now take the curvature of the edge into account, thanks to @Sriram-Pattabiraman. (#457)

igraph 0.9.8

29 Oct 01:08
47bbe4a
Compare
Choose a tag to compare

🎉 python-igraph is now simply igraph, at least on PyPI.

❗ If you use python-igraph in the dependencies of any of your projects, please replace it with igraph instead. python-igraph is now a stub package on PyPI that depends on the matching version of the Python package named igraph. We will keep on updating python-igraph until Sep 1, 2022, after which python-igraph will not receive any updates.

🙏🏼 Many thanks to @patrickfuller for allowing us to useigraph as the package name on PyPI.

Other than that, the only change in this release compared to python-igraph 0.9.7 is that the setup script does not use distutils any more.

python-igraph 0.9.7

15 Oct 14:08
4775779
Compare
Choose a tag to compare

Added

  • Added support for graph chordality which was already available in the C core: Graph.is_chordal(), Graph.chordal_completion(), and
    Graph.maximal_cardinality_search(). See PR #437 for more details. Thanks to @cptwunderlich for requesting this.

  • Graph.write() and Graph.Read() now accept Path objects as well as strings. See PR #441 for more details. Thanks to @jboynyc for the implementation.

  • This release contains wheels for Python 3.10, and also contains experimental Python wheels for the aarch64 architecture.

Changed

  • Improved performance of Graph.DataFrame(), thanks to @fwitter. See PR #418 for more details.

Fixed

  • Fixed the Apple Silicon wheels so they should now work out of the box on newer Macs with Apple M1 CPUs.

  • Fixed a bug that resulted in an unexpected error when plotting a graph with wrap_labels=True if the size of one of the vertices was zero or negative, thanks to @jboynyc. See PR #439 for more details.

  • Fixed a bug that sometimes caused random crashes in Graph.Realize_Degree_Sequence() and at other times caused weird errors in Graph.Read_Ncol() when it received an invalid data type.

python-igraph 0.9.6

12 Jun 08:08
f657a59
Compare
Choose a tag to compare

Fixed

  • Version 0.9.5 accidentally broke the Matplotlib backend when it was invoked without the mark_groups=... keyword argument; this version fixes the issue. Thanks to @dschult for reporting it!