• v2.0.0 ee4108e09c

    Silmathoron released this 2020-06-22 09:45:20 +00:00 | 98 commits to main since this release

    With the 2.0 release, NNGT moves from inheritance to composition for the underlying graphs.
    This enables improved support of both directed and undirected networks on all backends.
    The second major feature is the introduction of "normalized" graph analysis tools with explicit definitions so that the results returned are always the same regardless of the backend.

    New features

    • New graph generation methods: circular_graph, from_degree_list, and watts_strogatz.
    • Rewiring functions (randomization and latticization).
    • New analysis functions: connected_components provides detailed information on the nodes in each component, is_connected function (check for single component), shortest paths and distance algorithms, neighbours method, small_world_propensity for directed weighted graphs.
    • Clustering methods for weighted and directed graphs.
    • Graph visualization using the libraries' methods.
    • Underlying library graph is now freely accessible via the graph property (use responsibly)
    • "total-degree" constraint is available for degree-generation methods
    • Complete versatility of the new_edge/new_edges functions for the checks:
      • for existing edges or duplicates in the list
      • for self-loops
      • possibility to silently ignore invalid edges


    • RNG and seeds.
    • NEST import is now lazy.
    • Format choice for adjacency matrix (dense matrix and all scipy.sparse formats).
    • Improved I/O: support for GML format and custom edge-list files.
    • Automatic addition of the edge distances for SpatialGraph objects.

    Breaking changes

    Under the hood, the library underwent some major restructuring, which led to the decision of introducing some important breaking changes.

    • Drop support for Python 2.
    • Removal of num_wcc and num_scc in favour of connected_components.
    • replaced "syn_type" arguments by "edge_type".
    • replaced "use_weights" arguments by "weights".


    • Weight change with nngt backend.
    • Proper support for undirected graphs.
    • Corrected generation functions for undirected graphs (notably Newman-Watts and Erdos-Renyi).
    • Fixed all functions raising errors with networkx.
    • Errors in edge/node attributes handling with some backends.