Skip to content

Releases: igraph/python-igraph

python-igraph 0.9.5

11 Jun 14:55
0a153b3
Compare
Choose a tag to compare

Fixed

  • plot(g, ..., mark_groups=True) now works with the Matplotlib plotting backend.

  • set_random_number_generator(None) now correctly switches back to igraph's own random number generator instead of the default one that hooks into the random module of Python.

  • Improved performance in cases when igraph has to call back to Python's random module to generate random numbers. One example is Graph.Degree_Sequence(method="vl"), whose performance suffered a more than 30x slowdown on 32-bit platforms before, compared to the native C implementation. Now the gap is smaller. Note that if you need performance and do not care about seeding the random number generator from Python, you can now use set_random_number_generator(None) to switch back to igraph's own RNG that does not need a roundtrip to Python.

python-igraph 0.9.4

31 May 19:33
2d841de
Compare
Choose a tag to compare

Added

  • Added Graph.is_tree() to test whether a graph is a tree.

  • Added Graph.Realize_Degree_Sequence() to construct a graph that realizes a given degree sequence, using a deterministic (Havel-Hakimi-style) algorithm.

  • Added Graph.Tree_Game() to generate random trees with uniform sampling.

  • Graph.to_directed() now supports a mode=... keyword argument.

  • Added a create_using=... keyword argument to Graph.to_networkx() to let the user specify which NetworkX class to use when converting the graph.

Changed

  • Updated igraph dependency to 0.9.4.

Fixed

  • Improved performance of Graph.from_networkx() and Graph.from_graph_tool() on large graphs, thanks to @szhorvat and @iosonofabio for fixing the issue.

  • Fixed the autocurve=... keyword argument of plot() when using the Matplotlib backend.

Deprecated

  • Functions and methods that take string arguments that represent an underlying enum in the C core of igraph now print a deprecation warning when provided with a string that does not match one of the enum member names (as documented in the docstrings) exactly. Partial matches will be removed in the next minor or major version, whichever comes first.

  • Graph.to_directed(mutual=...) is now deprecated, use mode=... instead.

  • igraph.graph.drawing.UbiGraphDrawer is deprecated as the upstream project is not maintained since 2008.

python-igraph 0.9.1

26 Mar 10:08
1137bc1
Compare
Choose a tag to compare

Changed

  • Calling plot() without a filename or a target surface is now deprecated.
    The original intention was to plot to a temporary file and then open it in
    the default image viewer of the platform of the user automatically, but this
    has never worked reliably. The feature will be removed in 0.10.0.

Fixed

  • Fixed plotting of VertexClustering objects on Matplotlib axes.

  • The IGRAPH_CMAKE_EXTRA_ARGS environment variable is now applied after the
    default CMake arguments when building the C core of igraph from source. This
    enables package maintainers to override any of the default arguments we pass
    to CMake.

  • Fixed the documentation build by replacing Epydoc with PyDoctor.

Miscellaneous

  • Building python-igraph from source should not require flex and bison
    any more; sources of the parsers used by the C core are now included in the
    Python source tarball.

  • Many old code constructs that were used to maintain compatibility with Python
    2.x are removed now that we have dropped support for Python 2.x.

  • Reading GraphML files is now also supported on Windows if you use one of the
    official Python wheels.

python-igraph 0.9.0

26 Feb 01:30
904d5d9
Compare
Choose a tag to compare

Added

  • Graph.DataFrame now has a use_vids=... keyword argument that decides whether
    the data frame contains vertex IDs (True) or vertex names (False). (PR #348, thanks to @iosonofabio)

  • Added MatplotlibGraphDrawer to draw a graph on an existing Matplotlib
    figure. (PR #341, thanks to @iosonofabio)

  • Added a code path to choose between preferred image viewers on FreeBSD. (PR #354, thanks @thierry-FreeBSD)

  • Added Graph.harmonic_centrality() that wraps igraph_harmonic_centrality()
    from the underlying C library.

Changed

  • python-igraph is now compatible with igraph 0.9.0.

  • The setup script was adapted to the new CMake-based build system of igraph.

  • Dropped support for older Python versions; the oldest Python version that
    python-igraph is tested on is now Python 3.6.

  • The default splitting heuristic of the BLISS isomorphism algorithm was changed
    from IGRAPH_BLISS_FM (first maximally non-trivially connected non-singleton cell)
    to IGRAPH_BLISS_FL (first largest non-singleton cell) as this seems to provide
    better performance on a variety of graph classes. This change is a follow-up
    of the change in the recommended heuristic in the core igraph C library.

Fixed

  • Fixed crashes in the Python-C glue code related to the handling of empty
    vectors in certain attribute merging functions (see issue #358).

  • Fixed a memory leak in Graph.closeness_centrality() when an invalid cutoff
    argument was provided to the function.

  • Clarified that the fixed=... argument is ineffective for the DrL layout
    because the underlying C code does not handle it. The argument was not
    removed for sake of backwards compatibility.

  • VertexSeq.find(name=x) now works correctly when x is an integer; fixes
    #367

Miscellaneous

  • The Python codebase was piped through black for consistent formatting.

  • Wildcard imports were removed from the codebase.

  • CI tests were moved to Github Actions from Travis.

  • The core C library is now built with -fPIC on Linux to allow linking to the
    Python interface.

python-igraph 0.8.3

08 Oct 14:50
84d0505
Compare
Choose a tag to compare

This is the third release of the 0.8 series.

Added

  • 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 (#303)

  • You can now create a Graph object from a pandas dataframe with Graph.DataFrame, thanks to @iosonofabio (#309)

  • Added conversion to/from networkx and graph-tool with Graph.{to,from}_{networkx,graph_tool}, thanks to @iosonofabio (#242)

  • Graph.add_edges() and Graph.add_vertices() now supports specifying attributes for the newly added vertices and edges, thanks to @iosonofabio (#319)

  • Added Graph.dfs() and Graph.dfsiter(), thanks to @iosonofabio (#315)

  • 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 (#320)

Changed

  • Upgraded igraph C library to 0.8.3.

  • Graph union and intersection now supports graphs with vertex names, thanks to @iosonofabio (#310)

  • 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.

Fixed

  • setup.py now works on Windows with MinGW, thanks to @Parakoopa (#297)

  • Graph.difference() now treats loop edges correctly

  • summary() does not fail with non-string vertex names any more, thanks to @deeenes (#329)

  • 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.

Other

0.8.2

30 Apr 11:50
dee73ba
Compare
Choose a tag to compare
0.8.2

0.8.1

27 Apr 19:19
6a82d8a
Compare
Choose a tag to compare
0.8.1

0.8.0

08 Feb 01:07
743bd27
Compare
Choose a tag to compare
0.8.0

0.7.1.post6

28 Dec 22:04
Compare
Choose a tag to compare
bumped version number to 0.7.1.post6

Lots of new features

28 Dec 22:02
Compare
Choose a tag to compare