Releases: igraph/python-igraph
igraph 0.10.3
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 viaumap_compute_weights()
or precomputed by the user. Moreover, thesampling_prob
argument was faulty and has been removed. See PR #613 for details. -
The
resolution_parameter
argument ofGraph.community_leiden()
was renamed toresolution
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 theInt64
data type frompandas
, 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
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 usepkg-config
to retrieve the compiler and linker flags for an externaligraph
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 withIGRAPH_
(i.e.--use-pkg-config
becomesIGRAPH_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 toigraph_graph_list_t
in the C core. Clustering.sizes()
now works correctly even if the membership vector containsNone
items.Graph.modularity()
andGraph.community_multilevel()
now correctly expose theresolution
parameter.- Fixed a reference leak in
Graph.is_chordal()
that decreased the reference count of Python's built-inTrue
andFalse
constants unnecessarily. - Unit tests updated to get rid of deprecation warnings in Python 3.11.
igraph 0.10.1
Added
- Added
Graph.minimum_cycle_basis()
andGraph.fundamental_cycles()
Graph.average_path_length()
now supports edge weights.
Fixed
- Restored missing exports from
igraph.__all__
that used to be in the mainigraph
package before 0.10.0.
igraph 0.10.0
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 ofGraph.DataFrame()
toTrue
, 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
andedge_width
to be set
on an edge-by-edge basis.
Removed
-
Dropped support for Python 3.6.
-
Removed deprecated
UbiGraphDrawer
. -
Removed deprecated
show()
method ofPlot
instances as well as the feature that automatically shows the plot whenplot()
is called with no target. -
Removed the
eids
keyword argument ofget_adjacency()
.
Deprecated
-
Graph.clusters()
is now deprecated; useGraph.connected_components()
or its already existing shorter alias,Graph.components()
. -
Graph.shortest_paths()
is now deprecated; useGraph.distances()
instead.
igraph 0.9.11
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
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 forigraph.pc
recursively invendor/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 anigraph_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 theunion
andintersection
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
Changed
- Vendored igraph was updated to version 0.9.6.
Fixed
-
Fixed a performance bottleneck in
VertexSeq.select()
andEdgeSeq.select()
for the case when theVertexSeq
or theEdgeSeq
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
🎉 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
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()
andGraph.Read()
now acceptPath
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
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 inGraph.Read_Ncol()
when it received an invalid data type.
python-igraph 0.9.6
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!