.. _NetworkX 2.6:
Next Release
============
Release date: TBD
Supports Python 3.7, 3.8, and 3.9.
See :doc:`migration_guide_from_2.x_to_3.0`.
NetworkX is a Python package for the creation, manipulation, and study of the
structure, dynamics, and functions of complex networks.
For more information, please visit our `website `_
and our :ref:`gallery of examples `
Please send comments and questions to the `networkx-discuss mailing list
`_.
Highlights
----------
This release is the result of X of work with over X pull requests by
X contributors. Highlights include:
- Dropped support for Python 3.6.
- NumPy, SciPy, Matplotlib, and pandas are now default requirements.
- NetworkX no longer depends on the library "decorator".
- Improved example gallery
- Removed code for supporting Jython/IronPython
- The ``__str__`` method for graph objects is more informative and concise.
- Improved import time
- Improved test coverage
- New documentation theme
- Add functionality for drawing self-loop edges
- Add approximation algorithms for Traveling Salesman Problem
New functions:
- Panther algorithm
- maximum cut heuristics
- equivalence_classes
- dedensification
- random_ordered_tree
- forest_str
- snap_aggregation
- networkx.approximation.diameter
- partition_quality
- prominent_group
- prefix_tree_recursive
- topological_generations
NXEPs
-----
**N**\etwork\ **X** **E**\nhancement **P**\roposals capture changes
that are larger in scope than typical pull requests, such as changes to
fundamental data structures.
The following proposals have come under consideration since the previous
release:
- :ref:`NXEP2`
- :ref:`NXEP3`
Improvements
------------
- [`#3886 `_]
Adds the Panther algorithm for top-k similarity search.
- [`#4138 `_]
Adds heuristics for approximating solution to the maximum cut problem.
- [`#4183 `_]
Adds ``equivalence_classes`` to public API.
- [`#4193 `_]
``nx.info`` is more concise.
- [`#4198 `_]
Improve performance of ``transitivity``.
- [`#4206 `_]
UnionFind.union selects the heaviest root as the new root
- [`#4240 `_]
Adds ``dedensification`` function in a new ``summarization`` module.
- [`#4294 `_]
Adds ``forest_str`` for string representation of trees.
- [`#4319 `_]
pagerank uses scipy by default now.
- [`#4841 `_]
simrank_similarity uses numpy by default now.
- [`#4317 `_]
New ``source`` argument to ``has_eulerian_path`` to look for path starting at
source.
- [`#4356 `_]
Use ``bidirectional_djikstra`` in ``shortest_path`` for weighted graphs
to improve performance.
- [`#4361 `_]
Adds ``nodelist`` argument to ``triadic_census``
- [`#4435 `_]
Improve ``group_betweenness_centrality``.
- [`#4446 `_]
Add ``sources`` parameter to allow computing ``harmonic_centrality`` from a
subset of nodes.
- [`#4463 `_]
Adds the ``snap`` summarization algorithm.
- [`#4476 `_]
Adds the ``diameter`` function for approximating the lower bound on the
diameter of a graph.
- [`#4519 `_]
Handle negative weights in clustering algorithms.
- [`#4528 `_]
Improved performance of ``edge_boundary``.
- [`#4560 `_]
Adds ``prominent_group`` function to find prominent group of size k in
G according to group_betweenness_centrality.
- [`#4588 `_]
Graph intersection now works when input graphs don't have the same node sets.
- [`#4607 `_]
Adds approximation algorithms for solving the traveling salesman problem,
including ``christofides``, ``greedy_tsp``, ``simulated_annealing_tsp``,
and ``threshold_accepting_tsp``.
- [`#4640 `_]
``prefix_tree`` now uses a non-recursive algorithm. The original recursive
algorithm is still available via ``prefix_tree_recursive``.
- [`#4659 `_]
New ``initial_graph`` argument to ``barabasi_albert_graph`` and
``dual_barabasi_albert_graph`` to supply an initial graph to the model.
- [`#4690 `_]
``modularity_max`` now supports edge weights.
- [`#4727 `_]
Improved performance of ``scale_free_graph``.
- [`#4739 `_]
Added `argmap` function to replace the decorator library dependence
- [`#4757 `_]
Adds ``topological_generations`` function for DAG stratification.
- [`#4768 `_]
Improved reproducibility of geometric graph generators.
- [`#4769 `_]
Adds ``margins`` keyword to ``draw_networkx_nodes`` to control node clipping
in images with large node sizes.
- [`#4812 `_]
Use ``scipy`` implementation for ``hits`` algorithm to improve performance.
- [`#4847 `_]
Improve performance of ``scipy`` implementation of ``hits`` algorithm.
API Changes
-----------
- [`#4183 `_]
``partition`` argument of `quotient_graph` now accepts dicts
- [`#4190 `_]
Removed ``tracemin_chol``. Use ``tracemin_lu`` instead.
- [`#4216 `_]
In `to_*_array/matrix`, nodes in nodelist but not in G now raise an exception.
Use G.add_nodes_from(nodelist) to add them to G before converting.
- [`#4360 `_]
Internally `.nx_pylab.draw_networkx_edges` now always generates a
list of `matplotlib.patches.FancyArrowPatch` rather than using
a `matplotlib.collections.LineCollection` for un-directed graphs. This
unifies interface for all types of graphs. In
addition to the API change this may cause a performance regression for
large graphs.
- [`#4384 `_]
Added ``edge_key`` parameter for MultiGraphs in to_pandas_edgelist
- [`#4461 `_]
Added ``create_using`` parameter to ``binomial_tree``
- [`#4466 `_]
`relabel_nodes` used to raise a KeyError for a key in `mapping` that is not
a node in the graph, but it only did this when `copy` was `False`. Now
any keys in `mapping` which are not in the graph are ignored.
- [`#4502 `_]
Moves ``maximum_independent_set`` to the ``clique`` module in ``approximation``.
- [`#4536 `_]
Deprecate ``performance`` and ``coverage`` in favor of ``partition_quality``,
which computes both metrics simultaneously and is more efficient.
- [`#4573 `_]
`label_propagation_communities` returns a `dict_values` object of community
sets of nodes instead of a generator of community sets. It is still iterable,
so likely will still work in most user code and a simple fix otherwise:
e.g., add ``iter( ... )`` surrounding the function call.
- [`#4545 `_]
`prefix_tree` used to return `tree, root` but root is now always 0
instead of a UUID generate string. So the function returns `tree`.
- [`#4545 `_]
The variable `NIL` ="NIL" has been removed from `networkx.generators.trees`
- [`#3620 `_]
The function `naive_greedy_modularity_communities` now returns a
list of communities (like `greedy_modularity_communities`) instead
of a generator of communities.
- [`#4786 `_]
Deprecate the ``attrs`` keyword argument in favor of explicit keyword
arguments in the ``json_graph`` module.
- [`#4843 `_]
The unused ``normalized`` parameter has been removed
from ``communicability_betweeness_centrality``
- [`#4850 `_]
Added ``dtype`` parameter to adjacency_matrix
- [`#4851 `_]
Output of `numeric_mixing_matrix` and `degree_mixing_matrix` no longer
includes rows with all entries zero by default. The functions now accept
a parameter `mapping` keyed by value to row index to identify each row.
- [`#4867 `_]
The function ``spring_layout`` now ignores 'fixed' nodes not in the graph
Deprecations
------------
- [`#4238 `_]
Deprecate ``to_numpy_matrix`` and ``from_numpy_matrix``.
- [`#4279 `_]
Deprecate ``networkx.utils.misc.is_iterator``.
Use ``isinstance(obj, collections.abc.Iterator)`` instead.
- [`#4280 `_]
Deprecate ``networkx.utils.misc.is_list_of_ints`` as it is no longer used.
See ``networkx.utils.misc.make_list_of_ints`` for related functionality.
- [`#4281 `_]
Deprecate ``read_yaml`` and ``write_yaml``.
- [`#4282 `_]
Deprecate ``read_gpickle`` and ``write_gpickle``.
- [`#4298 `_]
Deprecate ``read_shp``, ``edges_from_line``, and ``write_shp``.
- [`#4319 `_]
Deprecate ``pagerank_numpy``, ``pagerank_scipy``.
- [`#4355 `_]
Deprecate ``copy`` method in the coreview Filtered-related classes.
- [`#4384 `_]
Deprecate unused ``order`` parameter in to_pandas_edgelist.
- [`#4428 `_]
Deprecate ``jit_data`` and ``jit_graph``.
- [`#4449 `_]
Deprecate ``consume``.
- [`#4448 `_]
Deprecate ``iterable``.
- [`#4536 `_]
Deprecate ``performance`` and ``coverage`` in favor of ``parition_quality``.
- [`#4545 `_]
Deprecate ``generate_unique_node``.
- [`#4599 `_]
Deprecate ``empty_generator``.
- [`#4600 `_]
Deprecate ``default_opener``.
- [`#4617 `_]
Deprecate ``hub_matrix`` and ``authority_matrix``
- [`#4629 `_]
Deprecate the ``Ordered`` graph classes.
- [`#4802 `_]
The ``nx_yaml`` function has been removed along with the dependency on
``pyyaml``. Removal implemented via module ``__getattr__`` to patch security
warnings related to ``pyyaml.Loader``.
- [`#4826 `_]
Deprecate ``preserve_random_state``.
- [`#4827 `_]
Deprecate ``almost_equal``.
- [`#4833 `_]
Deprecate ``run``.
- [`#4829 `_]
Deprecate ``assert_nodes_equal``, ``assert_edges_equal``, and ``assert_graphs_equal``.
- [`#4850 `_]
Deprecate ``adj_matrix``.
- [`#4841 `_]
Deprecate ``simrank_similarity_numpy``.
- [`#4923 `_]
Deprecate ``numeric_mixing_matrix``.
Contributors
------------