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
Enhancement
* 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".
Bugfixes
* 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.