Back to Networkx

NetworkX 2.4

doc/release/release_2.4.rst

latest13.3 KB
Original Source

NetworkX 2.4

Release date: 16 October 2019

Supports Python 3.5, 3.6, 3.7, and 3.8. This is the last release to support Python 3.5.

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 <https://networkx.org/>_ and our gallery of examples <https://networkx.org/documentation/latest/auto_examples/index.html>. Please send comments and questions to the networkx-discuss mailing list <http://groups.google.com/group/networkx-discuss>.

Highlights

This release is the result of 6 months of work with over 200 commits by 67 contributors. Highlights include:

  • Remove deprecated code from 1.x
  • Support for Python 3.8
  • Switched to pytest for testing
  • Last release to support Python 3.5

New Functions:

  • barycenter functions
  • Bethe Hessian matrix function
  • Eulerian Path methods
  • group centrality measures
  • subgraph monomorphisms
  • k-truss algorithms
  • onion decomposition
  • resistance distance
  • asteroidal triples
  • non-randomness measures
  • linear prufing
  • minimum weight bipartite matching
  • Incremental closeness centrality
  • ISMAGS subgraph isomorphism algorithm
  • create chordal graph of a graph

New generators

  • Binomial tree generator
  • Directed joint degree generator
  • Random internet AS graph generator

New for Layouts

  • spiral node layout routine
  • support for 3d layouts

Improvements

  • allow average shortest path to use Floyd-Warshall method
  • improve read/write of GML, GEXF, GraphML
  • allow string or json object as input to jit_graph
  • attempt to allow numpy.array input in place of lists in more places
  • faster strongly connected components
  • faster Floyd-Warshall Optimization
  • faster global efficiency
  • faster transitive closure
  • fix unionfind; betweenness_subset; lexico-topo-sort; A*; inverse_line_graph; async label propagation; edgelist reading; Gomory-Hu flow method; label_propagation; partial_duplication; shell_layout with 1 node in shell; from_pandas_edgelist
  • Documentation improvement and fixes

API Changes

A utility function is_list_of_ints became is_bunch_of_ints and now tests int(item)==item instead of isinstance(_, int) This allows e.g. floats whose values are integer.

Added utility make_list_of_ints to convert containers of integer values to lists of integers

Deprecations

Removed functions (marked as deprecated in NetworkX 2.1):

  • attracting_component_subgraphs
  • connected_component_subgraphs
  • weakly_connected_component_subgraphs
  • strongly_connected_component_subgraphs
  • biconnected_component_subgraphs
  • See docs for component functions for how to get subgraphs.

Graph Object methods removed (marked as deprecated 2.1)

  • G.add_path
  • G.add_cycle
  • G.add_star
  • G.nodes_with_selfloops
  • G.number_of_selfloops
  • G.selfloop_edges
  • These are now NetworkX functions, e.g. nx.add_star(G, 5)
  • G.node --> use G.nodes
  • G.fresh_copy --> use G.class

Remove old names for graphview functions.

  • ReverseView
  • SubGraph
  • SubMultiGraph
  • SubMultiDiGraph
  • SubDiGraph
  • GraphView
  • DiGraphView
  • MultiGraphView
  • MultiDiGraphView
  • MultiReverseView
  • Use reverse_view, subgraph_view and generic_graph_view.

Merged PRs

A total of 205 changes have been committed.

  • Bump release version
  • algorithms/traversal/edgebfs name fix (#3397)
  • Add see also links (#3403)
  • Add the reference for the Harary graph generators (#3407)
  • typo: swap source and target (#3413)
  • Fix spring_layout bug with fixed nodes (#3415)
  • Move LFR_benchmark to generators (#3411)
  • Add barycenter algorithm (#2939)
  • Add bethe hessian matrix (#3401)
  • Binomial trees generator (#3409)
  • Fix edge_color inconsistency with node_color and description. (#3395)
  • Adding module for group centrality measures (#3421)
  • Improve edgelist See Also (#3423)
  • Typo fix (#3424)
  • Add doc warning about self-loops for adamic_adar_index (#3427)
  • Fix UnionFind set extraction (#3224)
  • add required argument to write_graphml example (#3429)
  • Fix centrality betweenness subset (#3425)
  • Add two versions of Simrank similarity (#3222)
  • Fixed typo
  • Merge pull request #3436 from nandahkrishna/fix-typo-betweenness-centrality-subset-test
  • Reorder and complete doc (#3438)
  • added topo_order parameter to functions that rely on topological_sort (#3447)
  • Implemented subgraph monomorphism (#3435)
  • Set seed in random_degree_sequence_graph docstring test (#3451)
  • Replace cb.iterable with np.iterable (#3458)
  • don't remove ticks of other pyplot axes (#3476)
  • Fix typo in "G>raph Modelling Language" (#3468)
  • Naive k-truss algorithm implementation. (#3462)
  • Adding onion decomposition (#3461)
  • New Feature - Resistance Distance (#3385)
  • No multigraphs for betweenness (#3454)
  • Wheels are python 3 only
  • Fix deprecation warning with Python 3.7 (#3487)
  • Fix dfs_preorder_nodes docstring saying "edges" instead of "nodes" (#3484)
  • Added group closeness and group degree centralities (#3437)
  • Fixed incorrect docs (#3495)
  • Fixes Issue #3493 - Bug in lexicographical_topological_sort() (#3494)
  • AT-free graph recognition (#3377)
  • Update introduction.rst (#3504)
  • Full join operation and cograph generator (#3503)
  • Optimize the strongly connected components algorithm. (#3516)
  • Adding non-randomness measures for graphs (#3515)
  • Added safeguards (input graph G) for non-randomness measures (#3526)
  • Optimize the strongly connected components algorithm - Take 2 (#3519)
  • Small fix for bug found @ issue #3524 (#3529)
  • Restore checking PyPy3 (#3514)
  • Linear prufer coding (#3535)
  • Fix inverse_line_graph. (#3507)
  • Fix A* returning wrong solution (#3508)
  • Implement minimum weight full matching of bipartite graphs (#3527)
  • Get chordal graph for #1054 (#3353)
  • Faster transitive closure computation for DAGs (#3445)
  • Write mixed-type attributes correctly in write_graphml_lxml (#3536)
  • Fixes some edge cases for inverse_line_graph(). (#3538)
  • explicitly stated i.j convention in to_numpy_array
  • Incremental Closeness Centrality (undirected, unweighted graphs) (#3444)
  • Implement ISMAGS subgraph isomorphism algorithm (#3312)
  • Fixes bug in networkx.algorithms.community.label_propagation.asyn_lpa_communities (#3545)
  • When exporting to GML, write non 32-bit numbers as strings. (#3540)
  • Try to bug Fix #3552 (#3554)
  • add Directed Joint Degree Graph generator (#3551)
  • typo (#3557)
  • Fix a few documentation issues for the bipartite algorithm reference (#3555)
  • i,j convention in adj mat i/o in relevant funcs
  • Merge pull request #3542 from malch2/doc/update
  • Add 3.8-dev to travis
  • Fix dict iteration for Py3.8
  • Ignore other failures for now
  • Fix a typo in docstring for get_edge_data (#3564)
  • Fix wrong title (#3566)
  • Fix typo in docstring (#3568)
  • Fix and Improve docstrings in graph.py (#3569)
  • Improved graph class selection table (#3570)
  • Add spiral layout for graph drawing (#3534)
  • #3575 return coordinates of 3d layouts (#3576)
  • Handle k==n within the Watts-Strogatz graph generator (#3579)
  • Floyd-Warshall Optimization (#3400)
  • Use Sphinx 2.2
  • Add missing link to asteroidal docs
  • Fix Sphinx warnings
  • Fix Sphinx latexpdf build
  • Updated Contributor list (#3592)
  • Prim from list to set (#3512)
  • Fix issue 3491 (#3588)
  • Make Travis fail on Python 3.8 failures
  • Fix test_gexf to handle default serialisation order of the XML attributes
  • Remove future imports needed by Py2
  • add internet_as_graph generator (#3574)
  • remove cyclical references from OutEdgeDataView (#3598)
  • Add minimum source and target margin to draw_networkx_edges. (#3390)
  • fix to_directed function (#3599)
  • Fixes #3573:GEXF output problem (#3606)
  • Global efficiency attempt to speed up (#3604)
  • Bugfix: Added flexibility in reading values for label and id (#3603)
  • Add method floyd-warshall to average_shortest_path_length (#3267)
  • Replaced is with == and minor pycodestyle fixes (#3608)
  • Fix many documentation based Issues (#3609)
  • Resolve many documentation issues (#3611)
  • Fixes #3187 transitive_closure now returns self-loops when cycles present (#3613)
  • Add support for initializing pagerank_scipy (#3183)
  • Add last 7 lines of Gomory-hu algorithm Fixes #3293 (#3614)
  • Implemented Euler Path functions (#3399)
  • Fix the direction of edges in label_propagation.py (#3619)
  • Removed unused import of random module (#3620)
  • Fix operation order in partial_duplication_graph (#3626)
  • Keep shells with 1 node away from origin in shell_layout (#3629)
  • Allow jit_graph to read json string or json object (#3628)
  • Fix typo within incode documentation (#3621)
  • pycodestyle and update docs for greedy_coloring.py+tests (#3631)
  • Add version badges
  • Load long description from README
  • Add missing code block (#3630)
  • Change is_list_of_ints to make_list_of_ints (#3617)
  • Handle edgeattr in from_pandas_edgelist when no columns match request (#3634)
  • Make draft of release notes for v2.4
  • Shift notes from dev to v2.4 filename.
  • Use recent pypy
  • Test Py 3.8 on macos
  • add check of attr type before converting inf/nan in GEXF (#3636)
  • Fix sphinx errors And add links to single_source_dijkstra in docs for dijkstra_path/length (#3638)
  • Document subgraph_view (#3627)
  • First round of pytest fixes
  • Use class methods for class setup/teardown
  • Have CIs use pytest
  • Use class methods for class setup/teardown, cont.
  • Do less testing (until we get it working)
  • replace idiom from networkx import * in test files
  • Fix assert funcs override
  • Fix static methods in link_prediction
  • Partially fix v2userfunc tests
  • Fix graph/digraph tests
  • Fix multigraph checks
  • Fix multidigraph checks
  • Fix test_function checks
  • Fix distance_measures tests
  • Fix decorators tests
  • Fix some raises in test_mst
  • Fix clique tests
  • Fix yaml tests
  • Fix tests in reportviews
  • Fix vf2 tests
  • Fix mst tests
  • Fix gdal tests
  • Convert nose.tools.assert_* functions into asserts
  • Remove unused imports
  • Fix some warnings
  • Update testing instructions
  • Re-enable all test platforms
  • Fix some init warnings
  • replace nose yield tests in test_coloring.py
  • Add testing, coverage, and dev environment info
  • Try pytestimportorskip
  • Another pair of variations on pytest.importorskip
  • fix typo and try again
  • Remove deprecated weakly_connected_component_subgraphs
  • replace assert_almost_equal and raises in algorithms/tests
  • set places=0 on tests that use old almost_equal
  • Update nx.test()
  • Have pytest run doctests / not sphinx
  • Revert "Remove deprecated weakly_connected_component_subgraphs"
  • remove warnings for using deprecated function
  • Remove deprecated functions and methods. add to release notes.
  • Fix subgraph_view testing
  • remove tests of deprecated views and fix use of deprecated G.node
  • tracking down use of deprecated functions
  • Fix deprecated use of add_path/star/cycle
  • reduce warnings for deprecated functions
  • skirt issues with raises in test_harmonic
  • reduce the number of warnings by removing deprecated functions
  • convert_matrix demo of one way to get doctests to work
  • Remove deprecated from examples
  • Changes to convert_matrix and others that depend on np.matrix
  • clean up doctest deprecated code
  • More doctest corrections
  • Fix examples
  • Remove nose from generators
  • Remove nose from utils
  • Remove nose from classes
  • Replace nose.assert_raises with pytest.raises
  • Replace nose.raises with pytest.raises context manager
  • Replace eq_, ok_ with assert
  • Use pytest for doctest
  • Highlight switch to pytest in release notes
  • Remove from nose.tools import *
  • Remove nose.tools.SkipTest
  • Finalize transition to pytest
  • Merge pull request #3639 from stefanv/pytest-port
  • Test Python 3.8 with AppVeyor
  • Merge pull request #3648 from jarrodmillman/windows-py3.8
  • Remove deprecated weakly_connected_component_subgraphs
  • Update release notes
  • Update README
  • Announce Python 3.8 support
  • Designate 2.4rc1 release
  • Bump release version
  • Remove remaining SkipTests
  • fix documentation notes (#3644) (#3645)
  • Test Py 3.8.0 on AppVeyor
  • Speed up AppVeyor
  • Cleanup travis config
  • Improve CI caching
  • Update Py 3.8 on travis
  • Merge pull request #3652 from jarrodmillman/speedup-appveyor
  • Finalize release notes

It contained the following 5 merges:

  • Fixed typo in betweenness centrality subset test (#3436)
  • explicitly stated i.j convention in to_numpy_array (#3542)
  • pytest port (#3639)
  • Test Python 3.8 with AppVeyor (#3648)
  • Cleanup and speedup CI (#3652)

Contributors

  • Rajendra Adhikari
  • Antoine Allard
  • Antoine
  • Salim BELHADDAD
  • Luca Baldesi
  • Tamás Bitai
  • Tobias Blass
  • Malayaja Chutani
  • Peter Cock
  • Almog Cohen
  • Diogo Cruz
  • Martin Darmüntzel
  • Elan Ernest
  • Jacob Jona Fahlenkamp
  • Michael Fedell
  • Andy Garfield
  • Ramiro Gómez
  • Haakon
  • Alex Henrie
  • Steffen Hirschmann
  • Martin James McHugh III
  • Jacob
  • Søren Fuglede Jørgensen
  • Omer Katz
  • Julien Klaus
  • Matej Klemen
  • Nanda H Krishna
  • Peter C Kroon
  • Anthony Labarre
  • Anton Lodder
  • MCer4294967296
  • Eric Ma
  • Fil Menczer
  • Erwan Le Merrer
  • Alexander Metz
  • Jarrod Millman
  • Subhendu Ranajn Mishra
  • Jamie Morton
  • James Myatt
  • Kevin Newman
  • Aaron Opfer
  • Aditya Pal
  • Pascal-Ortiz
  • Peter
  • Jose Pinilla
  • Alexios Polyzos
  • Michael Recachinas
  • Efraim Rodrigues
  • Adam Rosenthal
  • Dan Schult
  • William Schwartz
  • Weisheng Si
  • Kanishk Tantia
  • Ivan Tham
  • George Valkanas
  • Stefan van der Walt
  • Hsi-Hsuan Wu
  • Haochen Wu
  • Xiangyu Xu
  • Jean-Gabriel Young
  • bkief
  • daniel-karl
  • michelb7398
  • mikedeltalima
  • nandahkrishna
  • skhiuk
  • tbalint