Statistics
| Branch: | Revision:

iof-tools / networkxMiCe / networkx-master / doc / release / release_2.2.rst @ 5cef0f13

History | View | Annotate | Download (5.47 KB)

1
Announcement: NetworkX 2.2
2
==========================
3

    
4
We're happy to announce the release of NetworkX 2.2!
5
NetworkX is a Python package for the creation, manipulation, and study of the
6
structure, dynamics, and functions of complex networks.
7

    
8
For more information, please visit our `website <http://networkx.github.io/>`_
9
and our `gallery of examples
10
<https://networkx.github.io/documentation/latest/auto_examples/index.html>`_.
11
Please send comments and questions to the `networkx-discuss mailing list
12
<http://groups.google.com/group/networkx-discuss>`_.
13

    
14
Highlights
15
----------
16

    
17
This release is the result of 8 months of work with over 149 commits by
18
58 contributors. Highlights include:
19

    
20
- Add support for Python 3.7. This is the last release to support Python 2.
21
- Uniform random number generator (RNG) handling which defaults to global
22
  RNGs but allows specification of a single RNG for all random numbers in NX.
23
- Improved GraphViews to ease subclassing and remove cyclic references
24
  which caused trouble with deepcopy and pickle.
25
- New Graph method `G.update(H)`
26

    
27
Improvements
28
------------
29

    
30
Each function that uses random numbers now uses a `seed` argument to control
31
the random number generation (RNG). By default the global default RNG is
32
used. More precisely, the `random` package's default RNG or the numpy.random
33
default RNG. You can also create your own RNG and pass it into the `seed`
34
argument. Finally, you can use an integer to indicate the state to set for
35
the RNG. In this case a local RNG is created leaving the global RNG untouched.
36
Some functions use `random` and some use `numpy.random`, but we have written
37
a translater so that all functions CAN take a `numpy.random.RandomState`
38
object. So a single RNG can be used for the entire package.
39

    
40
Cyclic references between graph classes and views have been removed to ease
41
subclassing without memory leaks. Graphs no longer hold references to views.
42

    
43
Cyclic references between a graph and itself have been removed by eliminating
44
G.root_graph. It turns out this was an avoidable construct anyway.
45

    
46
GraphViews have been reformulated as functions removing much of the subclass
47
trouble with the copy/to_directed/subgraph methods. It also simplifies the
48
graph view code base and API. There are now three function that create
49
graph views: generic_graph_view(graph, create_using), reverse_view(digraph)
50
and subgraph_view(graph, node_filter, edge_filter).
51

    
52
GraphML can now be written with attributes using numpy numeric types.
53
In particular, np.float64 and np.int64 no longer need to convert to Python
54
float and int to be written. They are still written as generic floats so
55
reading them back in will not make the numpy values.
56

    
57
A generator following the Stochastic Block Model is now available.
58

    
59
New function `all_topolgical_sort` to generate all possible top_sorts.
60

    
61
New functions for tree width and tree decompositions.
62

    
63
Functions for Clauset-Newman-Moore modularity-max community detection.
64

    
65
Functions for small world analysis, directed clustering and perfect matchings,
66
eulerizing a graph, depth-limited BFS, percolation centrality,
67
planarity checking.
68

    
69
The shortest_path generic and convenience functions now have a `method`
70
parameter to choose between dijkstra and bellmon-ford in the weighted case.
71
Default is dijkstra (which was the only option before).
72

    
73
API Changes
74
-----------
75
empty_graph has taken over the functionality from
76
nx.convert._prep_create_using which was removed.
77

    
78
The `create_using` argument (used in many functions) should now be a
79
Graph Constructor like nx.Graph or nx.DiGraph.
80
It can still be a graph instance which will be cleared before use, but the
81
preferred use is a constructor.
82

    
83
New Base Class Method: update
84
H.update(G) adds the nodes, edges and graph attributes of G to H.
85
H.update(edges=e, nodes=n) add the edges and nodes from containers e and n.
86
H.update(e), and H.update(nodes=n) are also allowed.
87
First argument is a graph if it has `edges` and `nodes` attributes.
88
Otherwise the first argument is treated as a list of edges.
89

    
90
The bellman_ford predecessor dicts had sentinal value `[None]` for
91
source nodes. That has been changed so source nodes have pred value '[]'
92

    
93

    
94
Deprecations
95
------------
96

    
97
Graph class method `fresh_copy` - simply use `__class__`.
98
The GraphView classes are deprecated in preference to the function
99
interface. Specifically, `ReverseView` and `ReverseMultiView` are
100
replaced by `reverse_view`. `SubGraph`, `SubDiGraph`, `SubMultiGraph`
101
and `SubMultiDiGraph` are replaced by `subgraph_view`.
102
And `GraphView`, `DiGraphView`, `MultiGraphView`, `MultiDiGraphView`
103
are derecated in favor of `generic_graph_view(graph, create_using)`.
104

    
105

    
106
Contributors to this release
107
----------------------------
108

    
109
- Luca Baldesi
110
- William Bernoudy
111
- Alexander Condello
112
- Saurav Das
113
- Dormir30
114
- Graham Fetterman
115
- Robert Gmyr
116
- Thomas Grainger
117
- Benjamin M. Gyori
118
- Ramiro Gómez
119
- Darío Hereñú
120
- Mads Jensen
121
- Michael Johnson
122
- Pranay Kanwar
123
- Aabir Abubaker Kar
124
- Jacek Karwowski
125
- Mohammed Kashif
126
- David Kraeutmann
127
- Winni Kretzschmar
128
- Ivan Laković
129
- Daniel Leicht
130
- Katrin Leinweber
131
- Alexander Lenail
132
- Lonnen
133
- Ji Ma
134
- Erwan Le Merrer
135
- Jarrod Millman
136
- Baurzhan Muftakhidinov
137
- Neil
138
- Jens P
139
- Edward L Platt
140
- Guillaume Plique
141
- Miguel Sozinho Ramalho
142
- Lewis Robbins
143
- Romain
144
- Federico Rosato
145
- Tom Russell
146
- Dan Schult
147
- Gabe Schwartz
148
- Aaron Smith
149
- Leo Torres
150
- Martin Váňa
151
- Ruaridh Williamson
152
- Huon Wilson
153
- Haochen Wu
154
- Yuto Yamaguchi
155
- Felix Yan
156
- Jean-Gabriel Young
157
- aparamon
158
- armando1793
159
- aweltsch
160
- chebee7i
161
- hongshaoyang
162
- komo-fr
163
- leamingrad
164
- luzpaz
165
- mtrenfield
166
- regstrtn