ofs | hex dump | ascii |
---|
0000 | 50 4b 03 04 14 00 00 00 00 00 02 7b 57 56 40 87 eb 83 a6 03 00 00 a6 03 00 00 1c 00 00 00 33 64 | PK.........{WV@...............3d |
0020 | 5f 64 72 61 77 69 6e 67 2f 6d 61 79 61 76 69 32 5f 73 70 72 69 6e 67 2e 70 79 22 22 22 0a 3d 3d | _drawing/mayavi2_spring.py""".== |
0040 | 3d 3d 3d 3d 3d 0a 4d 61 79 61 76 69 32 0a 3d 3d 3d 3d 3d 3d 3d 0a 0a 22 22 22 0a 0a 69 6d 70 6f | =====.Mayavi2.=======.."""..impo |
0060 | 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 | rt.networkx.as.nx.import.numpy.a |
0080 | 73 20 6e 70 0a 66 72 6f 6d 20 6d 61 79 61 76 69 20 69 6d 70 6f 72 74 20 6d 6c 61 62 0a 0a 23 20 | s.np.from.mayavi.import.mlab..#. |
00a0 | 73 6f 6d 65 20 67 72 61 70 68 73 20 74 6f 20 74 72 79 0a 23 20 48 3d 6e 78 2e 6b 72 61 63 6b 68 | some.graphs.to.try.#.H=nx.krackh |
00c0 | 61 72 64 74 5f 6b 69 74 65 5f 67 72 61 70 68 28 29 0a 23 20 48 3d 6e 78 2e 47 72 61 70 68 28 29 | ardt_kite_graph().#.H=nx.Graph() |
00e0 | 3b 48 2e 61 64 64 5f 65 64 67 65 28 27 61 27 2c 27 62 27 29 3b 48 2e 61 64 64 5f 65 64 67 65 28 | ;H.add_edge('a','b');H.add_edge( |
0100 | 27 61 27 2c 27 63 27 29 3b 48 2e 61 64 64 5f 65 64 67 65 28 27 61 27 2c 27 64 27 29 0a 23 20 48 | 'a','c');H.add_edge('a','d').#.H |
0120 | 3d 6e 78 2e 67 72 69 64 5f 32 64 5f 67 72 61 70 68 28 34 2c 35 29 0a 48 20 3d 20 6e 78 2e 63 79 | =nx.grid_2d_graph(4,5).H.=.nx.cy |
0140 | 63 6c 65 5f 67 72 61 70 68 28 32 30 29 0a 0a 23 20 72 65 6f 72 64 65 72 20 6e 6f 64 65 73 20 66 | cle_graph(20)..#.reorder.nodes.f |
0160 | 72 6f 6d 20 30 2c 6c 65 6e 28 47 29 2d 31 0a 47 20 3d 20 6e 78 2e 63 6f 6e 76 65 72 74 5f 6e 6f | rom.0,len(G)-1.G.=.nx.convert_no |
0180 | 64 65 5f 6c 61 62 65 6c 73 5f 74 6f 5f 69 6e 74 65 67 65 72 73 28 48 29 0a 23 20 33 64 20 73 70 | de_labels_to_integers(H).#.3d.sp |
01a0 | 72 69 6e 67 20 6c 61 79 6f 75 74 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f | ring.layout.pos.=.nx.spring_layo |
01c0 | 75 74 28 47 2c 20 64 69 6d 3d 33 2c 20 73 65 65 64 3d 31 30 30 31 29 0a 23 20 6e 75 6d 70 79 20 | ut(G,.dim=3,.seed=1001).#.numpy. |
01e0 | 61 72 72 61 79 20 6f 66 20 78 2c 79 2c 7a 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 6f 72 74 | array.of.x,y,z.positions.in.sort |
0200 | 65 64 20 6e 6f 64 65 20 6f 72 64 65 72 0a 78 79 7a 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 70 6f | ed.node.order.xyz.=.np.array([po |
0220 | 73 5b 76 5d 20 66 6f 72 20 76 20 69 6e 20 73 6f 72 74 65 64 28 47 29 5d 29 0a 23 20 73 63 61 6c | s[v].for.v.in.sorted(G)]).#.scal |
0240 | 61 72 20 63 6f 6c 6f 72 73 0a 73 63 61 6c 61 72 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 6c 69 73 | ar.colors.scalars.=.np.array(lis |
0260 | 74 28 47 2e 6e 6f 64 65 73 28 29 29 29 20 2b 20 35 0a 0a 6d 6c 61 62 2e 66 69 67 75 72 65 28 29 | t(G.nodes())).+.5..mlab.figure() |
0280 | 0a 0a 70 74 73 20 3d 20 6d 6c 61 62 2e 70 6f 69 6e 74 73 33 64 28 0a 20 20 20 20 78 79 7a 5b 3a | ..pts.=.mlab.points3d(.....xyz[: |
02a0 | 2c 20 30 5d 2c 0a 20 20 20 20 78 79 7a 5b 3a 2c 20 31 5d 2c 0a 20 20 20 20 78 79 7a 5b 3a 2c 20 | ,.0],.....xyz[:,.1],.....xyz[:,. |
02c0 | 32 5d 2c 0a 20 20 20 20 73 63 61 6c 61 72 73 2c 0a 20 20 20 20 73 63 61 6c 65 5f 66 61 63 74 6f | 2],.....scalars,.....scale_facto |
02e0 | 72 3d 30 2e 31 2c 0a 20 20 20 20 73 63 61 6c 65 5f 6d 6f 64 65 3d 22 6e 6f 6e 65 22 2c 0a 20 20 | r=0.1,.....scale_mode="none",... |
0300 | 20 20 63 6f 6c 6f 72 6d 61 70 3d 22 42 6c 75 65 73 22 2c 0a 20 20 20 20 72 65 73 6f 6c 75 74 69 | ..colormap="Blues",.....resoluti |
0320 | 6f 6e 3d 32 30 2c 0a 29 0a 0a 70 74 73 2e 6d 6c 61 62 5f 73 6f 75 72 63 65 2e 64 61 74 61 73 65 | on=20,.)..pts.mlab_source.datase |
0340 | 74 2e 6c 69 6e 65 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 6c 69 73 74 28 47 2e 65 64 67 65 73 28 | t.lines.=.np.array(list(G.edges( |
0360 | 29 29 29 0a 74 75 62 65 20 3d 20 6d 6c 61 62 2e 70 69 70 65 6c 69 6e 65 2e 74 75 62 65 28 70 74 | ))).tube.=.mlab.pipeline.tube(pt |
0380 | 73 2c 20 74 75 62 65 5f 72 61 64 69 75 73 3d 30 2e 30 31 29 0a 6d 6c 61 62 2e 70 69 70 65 6c 69 | s,.tube_radius=0.01).mlab.pipeli |
03a0 | 6e 65 2e 73 75 72 66 61 63 65 28 74 75 62 65 2c 20 63 6f 6c 6f 72 3d 28 30 2e 38 2c 20 30 2e 38 | ne.surface(tube,.color=(0.8,.0.8 |
03c0 | 2c 20 30 2e 38 29 29 0a 6d 6c 61 62 2e 6f 72 69 65 6e 74 61 74 69 6f 6e 5f 61 78 65 73 28 29 0a | ,.0.8)).mlab.orientation_axes(). |
03e0 | 50 4b 03 04 14 00 00 00 00 00 02 7b 57 56 c4 33 ea 37 7d 04 00 00 7d 04 00 00 18 00 00 00 33 64 | PK.........{WV.3.7}...}.......3d |
0400 | 5f 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 62 61 73 69 63 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d | _drawing/plot_basic.py""".====== |
0420 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 42 61 73 69 63 20 6d 61 74 70 6c 6f 74 6c 69 62 0a 3d 3d 3d 3d | ==========.Basic.matplotlib.==== |
0440 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 41 20 62 61 73 69 63 20 65 78 61 6d 70 6c 65 20 6f 66 | ============..A.basic.example.of |
0460 | 20 33 44 20 47 72 61 70 68 20 76 69 73 75 61 6c 69 7a 61 74 69 6f 6e 20 75 73 69 6e 67 20 60 6d | .3D.Graph.visualization.using.`m |
0480 | 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 5f 33 64 60 2e 0a 0a 22 22 22 0a 0a 69 6d 70 | pl_toolkits.mplot_3d`..."""..imp |
04a0 | 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 | ort.networkx.as.nx.import.numpy. |
04c0 | 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 | as.np.import.matplotlib.pyplot.a |
04e0 | 73 20 70 6c 74 0a 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 | s.plt.from.mpl_toolkits.mplot3d. |
0500 | 69 6d 70 6f 72 74 20 41 78 65 73 33 44 0a 0a 23 20 54 68 65 20 67 72 61 70 68 20 74 6f 20 76 69 | import.Axes3D..#.The.graph.to.vi |
0520 | 73 75 61 6c 69 7a 65 0a 47 20 3d 20 6e 78 2e 63 79 63 6c 65 5f 67 72 61 70 68 28 32 30 29 0a 0a | sualize.G.=.nx.cycle_graph(20).. |
0540 | 23 20 33 64 20 73 70 72 69 6e 67 20 6c 61 79 6f 75 74 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 | #.3d.spring.layout.pos.=.nx.spri |
0560 | 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 64 69 6d 3d 33 2c 20 73 65 65 64 3d 37 37 39 29 0a 23 20 | ng_layout(G,.dim=3,.seed=779).#. |
0580 | 45 78 74 72 61 63 74 20 6e 6f 64 65 20 61 6e 64 20 65 64 67 65 20 70 6f 73 69 74 69 6f 6e 73 20 | Extract.node.and.edge.positions. |
05a0 | 66 72 6f 6d 20 74 68 65 20 6c 61 79 6f 75 74 0a 6e 6f 64 65 5f 78 79 7a 20 3d 20 6e 70 2e 61 72 | from.the.layout.node_xyz.=.np.ar |
05c0 | 72 61 79 28 5b 70 6f 73 5b 76 5d 20 66 6f 72 20 76 20 69 6e 20 73 6f 72 74 65 64 28 47 29 5d 29 | ray([pos[v].for.v.in.sorted(G)]) |
05e0 | 0a 65 64 67 65 5f 78 79 7a 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 28 70 6f 73 5b 75 5d 2c 20 70 | .edge_xyz.=.np.array([(pos[u],.p |
0600 | 6f 73 5b 76 5d 29 20 66 6f 72 20 75 2c 20 76 20 69 6e 20 47 2e 65 64 67 65 73 28 29 5d 29 0a 0a | os[v]).for.u,.v.in.G.edges()]).. |
0620 | 23 20 43 72 65 61 74 65 20 74 68 65 20 33 44 20 66 69 67 75 72 65 0a 66 69 67 20 3d 20 70 6c 74 | #.Create.the.3D.figure.fig.=.plt |
0640 | 2e 66 69 67 75 72 65 28 29 0a 61 78 20 3d 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 31 | .figure().ax.=.fig.add_subplot(1 |
0660 | 31 31 2c 20 70 72 6f 6a 65 63 74 69 6f 6e 3d 22 33 64 22 29 0a 0a 23 20 50 6c 6f 74 20 74 68 65 | 11,.projection="3d")..#.Plot.the |
0680 | 20 6e 6f 64 65 73 20 2d 20 61 6c 70 68 61 20 69 73 20 73 63 61 6c 65 64 20 62 79 20 22 64 65 70 | .nodes.-.alpha.is.scaled.by."dep |
06a0 | 74 68 22 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 61 78 2e 73 63 61 74 74 65 72 28 2a 6e 6f | th".automatically.ax.scatter(*no |
06c0 | 64 65 5f 78 79 7a 2e 54 2c 20 73 3d 31 30 30 2c 20 65 63 3d 22 77 22 29 0a 0a 23 20 50 6c 6f 74 | de_xyz.T,.s=100,.ec="w")..#.Plot |
06e0 | 20 74 68 65 20 65 64 67 65 73 0a 66 6f 72 20 76 69 7a 65 64 67 65 20 69 6e 20 65 64 67 65 5f 78 | .the.edges.for.vizedge.in.edge_x |
0700 | 79 7a 3a 0a 20 20 20 20 61 78 2e 70 6c 6f 74 28 2a 76 69 7a 65 64 67 65 2e 54 2c 20 63 6f 6c 6f | yz:.....ax.plot(*vizedge.T,.colo |
0720 | 72 3d 22 74 61 62 3a 67 72 61 79 22 29 0a 0a 0a 64 65 66 20 5f 66 6f 72 6d 61 74 5f 61 78 65 73 | r="tab:gray")...def._format_axes |
0740 | 28 61 78 29 3a 0a 20 20 20 20 22 22 22 56 69 73 75 61 6c 69 7a 61 74 69 6f 6e 20 6f 70 74 69 6f | (ax):....."""Visualization.optio |
0760 | 6e 73 20 66 6f 72 20 74 68 65 20 33 44 20 61 78 65 73 2e 22 22 22 0a 20 20 20 20 23 20 54 75 72 | ns.for.the.3D.axes.""".....#.Tur |
0780 | 6e 20 67 72 69 64 6c 69 6e 65 73 20 6f 66 66 0a 20 20 20 20 61 78 2e 67 72 69 64 28 46 61 6c 73 | n.gridlines.off.....ax.grid(Fals |
07a0 | 65 29 0a 20 20 20 20 23 20 53 75 70 70 72 65 73 73 20 74 69 63 6b 20 6c 61 62 65 6c 73 0a 20 20 | e).....#.Suppress.tick.labels... |
07c0 | 20 20 66 6f 72 20 64 69 6d 20 69 6e 20 28 61 78 2e 78 61 78 69 73 2c 20 61 78 2e 79 61 78 69 73 | ..for.dim.in.(ax.xaxis,.ax.yaxis |
07e0 | 2c 20 61 78 2e 7a 61 78 69 73 29 3a 0a 20 20 20 20 20 20 20 20 64 69 6d 2e 73 65 74 5f 74 69 63 | ,.ax.zaxis):.........dim.set_tic |
0800 | 6b 73 28 5b 5d 29 0a 20 20 20 20 23 20 53 65 74 20 61 78 65 73 20 6c 61 62 65 6c 73 0a 20 20 20 | ks([]).....#.Set.axes.labels.... |
0820 | 20 61 78 2e 73 65 74 5f 78 6c 61 62 65 6c 28 22 78 22 29 0a 20 20 20 20 61 78 2e 73 65 74 5f 79 | .ax.set_xlabel("x").....ax.set_y |
0840 | 6c 61 62 65 6c 28 22 79 22 29 0a 20 20 20 20 61 78 2e 73 65 74 5f 7a 6c 61 62 65 6c 28 22 7a 22 | label("y").....ax.set_zlabel("z" |
0860 | 29 0a 0a 0a 5f 66 6f 72 6d 61 74 5f 61 78 65 73 28 61 78 29 0a 66 69 67 2e 74 69 67 68 74 5f 6c | )..._format_axes(ax).fig.tight_l |
0880 | 61 79 6f 75 74 28 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 20 7b 57 | ayout().plt.show().PK.........{W |
08a0 | 56 58 f2 c2 60 09 0c 00 00 09 0c 00 00 17 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 | VX..`............algorithms/plot |
08c0 | 5f 73 6e 61 70 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 53 | _snap.py""".==================.S |
08e0 | 4e 41 50 20 47 72 61 70 68 20 53 75 6d 6d 61 72 79 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | NAP.Graph.Summary.============== |
0900 | 3d 3d 3d 3d 0a 41 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 73 75 6d 6d 61 72 69 7a 69 6e 67 20 61 | ====.An.example.of.summarizing.a |
0920 | 20 67 72 61 70 68 20 62 61 73 65 64 20 6f 6e 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 73 20 | .graph.based.on.node.attributes. |
0940 | 61 6e 64 20 65 64 67 65 20 61 74 74 72 69 62 75 74 65 73 0a 75 73 69 6e 67 20 74 68 65 20 53 75 | and.edge.attributes.using.the.Su |
0960 | 6d 6d 61 72 69 7a 61 74 69 6f 6e 20 62 79 20 47 72 6f 75 70 69 6e 67 20 4e 6f 64 65 73 20 6f 6e | mmarization.by.Grouping.Nodes.on |
0980 | 20 41 74 74 72 69 62 75 74 65 73 20 61 6e 64 20 50 61 69 72 77 69 73 65 0a 65 64 67 65 73 20 28 | .Attributes.and.Pairwise.edges.( |
09a0 | 53 4e 41 50 29 20 61 6c 67 6f 72 69 74 68 6d 20 28 6e 6f 74 20 74 6f 20 62 65 20 63 6f 6e 66 75 | SNAP).algorithm.(not.to.be.confu |
09c0 | 73 65 64 20 77 69 74 68 20 74 68 65 20 53 74 61 6e 66 6f 72 64 20 4e 65 74 77 6f 72 6b 0a 41 6e | sed.with.the.Stanford.Network.An |
09e0 | 61 6c 79 73 69 73 20 50 72 6f 6a 65 63 74 29 2e 20 20 54 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 | alysis.Project)...The.algorithm. |
0a00 | 67 72 6f 75 70 73 20 6e 6f 64 65 73 20 62 79 20 74 68 65 69 72 20 75 6e 69 71 75 65 0a 63 6f 6d | groups.nodes.by.their.unique.com |
0a20 | 62 69 6e 61 74 69 6f 6e 73 20 6f 66 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 | binations.of.node.attribute.valu |
0a40 | 65 73 20 61 6e 64 20 65 64 67 65 20 74 79 70 65 73 20 77 69 74 68 20 6f 74 68 65 72 20 67 72 6f | es.and.edge.types.with.other.gro |
0a60 | 75 70 73 0a 6f 66 20 6e 6f 64 65 73 20 74 6f 20 70 72 6f 64 75 63 65 20 61 20 73 75 6d 6d 61 72 | ups.of.nodes.to.produce.a.summar |
0a80 | 79 20 67 72 61 70 68 2e 20 20 54 68 65 20 73 75 6d 6d 61 72 79 20 67 72 61 70 68 20 63 61 6e 20 | y.graph...The.summary.graph.can. |
0aa0 | 74 68 65 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 69 6e 66 65 72 20 68 6f 77 20 6e 6f 64 65 73 20 | then.be.used.to.infer.how.nodes. |
0ac0 | 77 69 74 68 20 64 69 66 66 65 72 65 6e 74 20 61 74 74 72 69 62 75 74 65 73 20 76 61 6c 75 65 73 | with.different.attributes.values |
0ae0 | 20 72 65 6c 61 74 65 20 74 6f 20 6f 74 68 65 72 20 6e 6f 64 65 73 20 69 6e 20 74 68 65 0a 67 72 | .relate.to.other.nodes.in.the.gr |
0b00 | 61 70 68 2e 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 | aph..""".import.networkx.as.nx.i |
0b20 | 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 0a | mport.matplotlib.pyplot.as.plt.. |
0b40 | 0a 6e 6f 64 65 73 20 3d 20 7b 0a 20 20 20 20 22 41 22 3a 20 7b 22 63 6f 6c 6f 72 22 3a 20 22 52 | .nodes.=.{....."A":.{"color":."R |
0b60 | 65 64 22 7d 2c 0a 20 20 20 20 22 42 22 3a 20 7b 22 63 6f 6c 6f 72 22 3a 20 22 52 65 64 22 7d 2c | ed"},....."B":.{"color":."Red"}, |
0b80 | 0a 20 20 20 20 22 43 22 3a 20 7b 22 63 6f 6c 6f 72 22 3a 20 22 52 65 64 22 7d 2c 0a 20 20 20 20 | ....."C":.{"color":."Red"},..... |
0ba0 | 22 44 22 3a 20 7b 22 63 6f 6c 6f 72 22 3a 20 22 52 65 64 22 7d 2c 0a 20 20 20 20 22 45 22 3a 20 | "D":.{"color":."Red"},....."E":. |
0bc0 | 7b 22 63 6f 6c 6f 72 22 3a 20 22 42 6c 75 65 22 7d 2c 0a 20 20 20 20 22 46 22 3a 20 7b 22 63 6f | {"color":."Blue"},....."F":.{"co |
0be0 | 6c 6f 72 22 3a 20 22 42 6c 75 65 22 7d 2c 0a 20 20 20 20 22 47 22 3a 20 7b 22 63 6f 6c 6f 72 22 | lor":."Blue"},....."G":.{"color" |
0c00 | 3a 20 22 42 6c 75 65 22 7d 2c 0a 20 20 20 20 22 48 22 3a 20 7b 22 63 6f 6c 6f 72 22 3a 20 22 42 | :."Blue"},....."H":.{"color":."B |
0c20 | 6c 75 65 22 7d 2c 0a 20 20 20 20 22 49 22 3a 20 7b 22 63 6f 6c 6f 72 22 3a 20 22 59 65 6c 6c 6f | lue"},....."I":.{"color":."Yello |
0c40 | 77 22 7d 2c 0a 20 20 20 20 22 4a 22 3a 20 7b 22 63 6f 6c 6f 72 22 3a 20 22 59 65 6c 6c 6f 77 22 | w"},....."J":.{"color":."Yellow" |
0c60 | 7d 2c 0a 20 20 20 20 22 4b 22 3a 20 7b 22 63 6f 6c 6f 72 22 3a 20 22 59 65 6c 6c 6f 77 22 7d 2c | },....."K":.{"color":."Yellow"}, |
0c80 | 0a 20 20 20 20 22 4c 22 3a 20 7b 22 63 6f 6c 6f 72 22 3a 20 22 59 65 6c 6c 6f 77 22 7d 2c 0a 7d | ....."L":.{"color":."Yellow"},.} |
0ca0 | 0a 65 64 67 65 73 20 3d 20 5b 0a 20 20 20 20 28 22 41 22 2c 20 22 42 22 2c 20 22 53 74 72 6f 6e | .edges.=.[.....("A",."B",."Stron |
0cc0 | 67 22 29 2c 0a 20 20 20 20 28 22 41 22 2c 20 22 43 22 2c 20 22 57 65 61 6b 22 29 2c 0a 20 20 20 | g"),.....("A",."C",."Weak"),.... |
0ce0 | 20 28 22 41 22 2c 20 22 45 22 2c 20 22 53 74 72 6f 6e 67 22 29 2c 0a 20 20 20 20 28 22 41 22 2c | .("A",."E",."Strong"),.....("A", |
0d00 | 20 22 49 22 2c 20 22 57 65 61 6b 22 29 2c 0a 20 20 20 20 28 22 42 22 2c 20 22 44 22 2c 20 22 57 | ."I",."Weak"),.....("B",."D",."W |
0d20 | 65 61 6b 22 29 2c 0a 20 20 20 20 28 22 42 22 2c 20 22 4a 22 2c 20 22 57 65 61 6b 22 29 2c 0a 20 | eak"),.....("B",."J",."Weak"),.. |
0d40 | 20 20 20 28 22 42 22 2c 20 22 46 22 2c 20 22 53 74 72 6f 6e 67 22 29 2c 0a 20 20 20 20 28 22 43 | ...("B",."F",."Strong"),.....("C |
0d60 | 22 2c 20 22 47 22 2c 20 22 57 65 61 6b 22 29 2c 0a 20 20 20 20 28 22 44 22 2c 20 22 48 22 2c 20 | ",."G",."Weak"),.....("D",."H",. |
0d80 | 22 57 65 61 6b 22 29 2c 0a 20 20 20 20 28 22 49 22 2c 20 22 4a 22 2c 20 22 53 74 72 6f 6e 67 22 | "Weak"),.....("I",."J",."Strong" |
0da0 | 29 2c 0a 20 20 20 20 28 22 4a 22 2c 20 22 4b 22 2c 20 22 53 74 72 6f 6e 67 22 29 2c 0a 20 20 20 | ),.....("J",."K",."Strong"),.... |
0dc0 | 20 28 22 49 22 2c 20 22 4c 22 2c 20 22 53 74 72 6f 6e 67 22 29 2c 0a 5d 0a 6f 72 69 67 69 6e 61 | .("I",."L",."Strong"),.].origina |
0de0 | 6c 5f 67 72 61 70 68 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 0a 6f 72 69 67 69 6e 61 6c 5f 67 72 | l_graph.=.nx.Graph().original_gr |
0e00 | 61 70 68 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 6e 20 66 6f 72 20 6e 20 69 6e 20 6e 6f | aph.add_nodes_from(n.for.n.in.no |
0e20 | 64 65 73 2e 69 74 65 6d 73 28 29 29 0a 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2e 61 64 64 5f | des.items()).original_graph.add_ |
0e40 | 65 64 67 65 73 5f 66 72 6f 6d 28 28 75 2c 20 76 2c 20 7b 22 74 79 70 65 22 3a 20 6c 61 62 65 6c | edges_from((u,.v,.{"type":.label |
0e60 | 7d 29 20 66 6f 72 20 75 2c 20 76 2c 20 6c 61 62 65 6c 20 69 6e 20 65 64 67 65 73 29 0a 0a 0a 70 | }).for.u,.v,.label.in.edges)...p |
0e80 | 6c 74 2e 73 75 70 74 69 74 6c 65 28 22 53 4e 41 50 20 53 75 6d 6d 61 72 69 7a 61 74 69 6f 6e 22 | lt.suptitle("SNAP.Summarization" |
0ea0 | 29 0a 0a 62 61 73 65 5f 6f 70 74 69 6f 6e 73 20 3d 20 7b 22 77 69 74 68 5f 6c 61 62 65 6c 73 22 | )..base_options.=.{"with_labels" |
0ec0 | 3a 20 54 72 75 65 2c 20 22 65 64 67 65 63 6f 6c 6f 72 73 22 3a 20 22 62 6c 61 63 6b 22 2c 20 22 | :.True,."edgecolors":."black",." |
0ee0 | 6e 6f 64 65 5f 73 69 7a 65 22 3a 20 35 30 30 7d 0a 0a 61 78 31 20 3d 20 70 6c 74 2e 73 75 62 70 | node_size":.500}..ax1.=.plt.subp |
0f00 | 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 74 2e 74 69 74 6c 65 28 0a 20 20 20 20 22 4f 72 69 | lot(1,.2,.1).plt.title(....."Ori |
0f20 | 67 69 6e 61 6c 20 28 25 73 20 6e 6f 64 65 73 2c 20 25 73 20 65 64 67 65 73 29 22 0a 20 20 20 20 | ginal.(%s.nodes,.%s.edges)"..... |
0f40 | 25 20 28 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2e 6e 75 6d 62 65 72 5f 6f 66 5f 6e 6f 64 65 | %.(original_graph.number_of_node |
0f60 | 73 28 29 2c 20 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2e 6e 75 6d 62 65 72 5f 6f 66 5f 65 64 | s(),.original_graph.number_of_ed |
0f80 | 67 65 73 28 29 29 0a 29 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 | ges()).).pos.=.nx.spring_layout( |
0fa0 | 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2c 20 73 65 65 64 3d 37 34 38 32 39 33 34 29 0a 6e 6f | original_graph,.seed=7482934).no |
0fc0 | 64 65 5f 63 6f 6c 6f 72 73 20 3d 20 5b 64 5b 22 63 6f 6c 6f 72 22 5d 20 66 6f 72 20 5f 2c 20 64 | de_colors.=.[d["color"].for._,.d |
0fe0 | 20 69 6e 20 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2e 6e 6f 64 65 73 28 64 61 74 61 3d 54 72 | .in.original_graph.nodes(data=Tr |
1000 | 75 65 29 5d 0a 0a 65 64 67 65 5f 74 79 70 65 5f 76 69 73 75 61 6c 5f 77 65 69 67 68 74 5f 6c 6f | ue)]..edge_type_visual_weight_lo |
1020 | 6f 6b 75 70 20 3d 20 7b 22 57 65 61 6b 22 3a 20 31 2e 30 2c 20 22 53 74 72 6f 6e 67 22 3a 20 33 | okup.=.{"Weak":.1.0,."Strong":.3 |
1040 | 2e 30 7d 0a 65 64 67 65 5f 77 65 69 67 68 74 73 20 3d 20 5b 0a 20 20 20 20 65 64 67 65 5f 74 79 | .0}.edge_weights.=.[.....edge_ty |
1060 | 70 65 5f 76 69 73 75 61 6c 5f 77 65 69 67 68 74 5f 6c 6f 6f 6b 75 70 5b 64 5b 22 74 79 70 65 22 | pe_visual_weight_lookup[d["type" |
1080 | 5d 5d 0a 20 20 20 20 66 6f 72 20 5f 2c 20 5f 2c 20 64 20 69 6e 20 6f 72 69 67 69 6e 61 6c 5f 67 | ]].....for._,._,.d.in.original_g |
10a0 | 72 61 70 68 2e 65 64 67 65 73 28 64 61 74 61 3d 54 72 75 65 29 0a 5d 0a 0a 6e 78 2e 64 72 61 77 | raph.edges(data=True).]..nx.draw |
10c0 | 5f 6e 65 74 77 6f 72 6b 78 28 0a 20 20 20 20 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2c 20 70 | _networkx(.....original_graph,.p |
10e0 | 6f 73 3d 70 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 6e 6f 64 65 5f 63 6f 6c 6f 72 73 2c 20 | os=pos,.node_color=node_colors,. |
1100 | 77 69 64 74 68 3d 65 64 67 65 5f 77 65 69 67 68 74 73 2c 20 2a 2a 62 61 73 65 5f 6f 70 74 69 6f | width=edge_weights,.**base_optio |
1120 | 6e 73 0a 29 0a 0a 6e 6f 64 65 5f 61 74 74 72 69 62 75 74 65 73 20 3d 20 28 22 63 6f 6c 6f 72 22 | ns.)..node_attributes.=.("color" |
1140 | 2c 29 0a 65 64 67 65 5f 61 74 74 72 69 62 75 74 65 73 20 3d 20 28 22 74 79 70 65 22 2c 29 0a 73 | ,).edge_attributes.=.("type",).s |
1160 | 75 6d 6d 61 72 79 5f 67 72 61 70 68 20 3d 20 6e 78 2e 73 6e 61 70 5f 61 67 67 72 65 67 61 74 69 | ummary_graph.=.nx.snap_aggregati |
1180 | 6f 6e 28 0a 20 20 20 20 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2c 20 6e 6f 64 65 5f 61 74 74 | on(.....original_graph,.node_att |
11a0 | 72 69 62 75 74 65 73 2c 20 65 64 67 65 5f 61 74 74 72 69 62 75 74 65 73 2c 20 70 72 65 66 69 78 | ributes,.edge_attributes,.prefix |
11c0 | 3d 22 53 2d 22 0a 29 0a 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 0a 0a 70 | ="S-".)..plt.subplot(1,.2,.2)..p |
11e0 | 6c 74 2e 74 69 74 6c 65 28 0a 20 20 20 20 22 53 4e 41 50 20 41 67 67 72 65 67 61 74 69 6f 6e 20 | lt.title(....."SNAP.Aggregation. |
1200 | 28 25 73 20 6e 6f 64 65 73 2c 20 25 73 20 65 64 67 65 73 29 22 0a 20 20 20 20 25 20 28 73 75 6d | (%s.nodes,.%s.edges)".....%.(sum |
1220 | 6d 61 72 79 5f 67 72 61 70 68 2e 6e 75 6d 62 65 72 5f 6f 66 5f 6e 6f 64 65 73 28 29 2c 20 73 75 | mary_graph.number_of_nodes(),.su |
1240 | 6d 6d 61 72 79 5f 67 72 61 70 68 2e 6e 75 6d 62 65 72 5f 6f 66 5f 65 64 67 65 73 28 29 29 0a 29 | mmary_graph.number_of_edges()).) |
1260 | 0a 73 75 6d 6d 61 72 79 5f 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 | .summary_pos.=.nx.spring_layout( |
1280 | 73 75 6d 6d 61 72 79 5f 67 72 61 70 68 2c 20 73 65 65 64 3d 38 33 37 35 34 32 38 29 0a 6e 6f 64 | summary_graph,.seed=8375428).nod |
12a0 | 65 5f 63 6f 6c 6f 72 73 20 3d 20 5b 5d 0a 66 6f 72 20 6e 6f 64 65 20 69 6e 20 73 75 6d 6d 61 72 | e_colors.=.[].for.node.in.summar |
12c0 | 79 5f 67 72 61 70 68 3a 0a 20 20 20 20 63 6f 6c 6f 72 20 3d 20 73 75 6d 6d 61 72 79 5f 67 72 61 | y_graph:.....color.=.summary_gra |
12e0 | 70 68 2e 6e 6f 64 65 73 5b 6e 6f 64 65 5d 5b 22 63 6f 6c 6f 72 22 5d 0a 20 20 20 20 6e 6f 64 65 | ph.nodes[node]["color"].....node |
1300 | 5f 63 6f 6c 6f 72 73 2e 61 70 70 65 6e 64 28 63 6f 6c 6f 72 29 0a 0a 65 64 67 65 5f 77 65 69 67 | _colors.append(color)..edge_weig |
1320 | 68 74 73 20 3d 20 5b 5d 0a 66 6f 72 20 65 64 67 65 20 69 6e 20 73 75 6d 6d 61 72 79 5f 67 72 61 | hts.=.[].for.edge.in.summary_gra |
1340 | 70 68 2e 65 64 67 65 73 28 29 3a 0a 20 20 20 20 65 64 67 65 5f 74 79 70 65 73 20 3d 20 73 75 6d | ph.edges():.....edge_types.=.sum |
1360 | 6d 61 72 79 5f 67 72 61 70 68 2e 67 65 74 5f 65 64 67 65 5f 64 61 74 61 28 2a 65 64 67 65 29 5b | mary_graph.get_edge_data(*edge)[ |
1380 | 22 74 79 70 65 73 22 5d 0a 20 20 20 20 65 64 67 65 5f 77 65 69 67 68 74 20 3d 20 30 2e 30 0a 20 | "types"].....edge_weight.=.0.0.. |
13a0 | 20 20 20 66 6f 72 20 65 64 67 65 5f 74 79 70 65 20 69 6e 20 65 64 67 65 5f 74 79 70 65 73 3a 0a | ...for.edge_type.in.edge_types:. |
13c0 | 20 20 20 20 20 20 20 20 65 64 67 65 5f 77 65 69 67 68 74 20 2b 3d 20 65 64 67 65 5f 74 79 70 65 | ........edge_weight.+=.edge_type |
13e0 | 5f 76 69 73 75 61 6c 5f 77 65 69 67 68 74 5f 6c 6f 6f 6b 75 70 5b 65 64 67 65 5f 74 79 70 65 5b | _visual_weight_lookup[edge_type[ |
1400 | 22 74 79 70 65 22 5d 5d 0a 20 20 20 20 65 64 67 65 5f 77 65 69 67 68 74 73 2e 61 70 70 65 6e 64 | "type"]].....edge_weights.append |
1420 | 28 65 64 67 65 5f 77 65 69 67 68 74 29 0a 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 28 | (edge_weight)..nx.draw_networkx( |
1440 | 0a 20 20 20 20 73 75 6d 6d 61 72 79 5f 67 72 61 70 68 2c 0a 20 20 20 20 70 6f 73 3d 73 75 6d 6d | .....summary_graph,.....pos=summ |
1460 | 61 72 79 5f 70 6f 73 2c 0a 20 20 20 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 6e 6f 64 65 5f 63 6f 6c | ary_pos,.....node_color=node_col |
1480 | 6f 72 73 2c 0a 20 20 20 20 77 69 64 74 68 3d 65 64 67 65 5f 77 65 69 67 68 74 73 2c 0a 20 20 20 | ors,.....width=edge_weights,.... |
14a0 | 20 2a 2a 62 61 73 65 5f 6f 70 74 69 6f 6e 73 0a 29 0a 0a 70 6c 74 2e 74 69 67 68 74 5f 6c 61 79 | .**base_options.)..plt.tight_lay |
14c0 | 6f 75 74 28 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 0e 7b 57 56 7f | out().plt.show().PK.........{WV. |
14e0 | c5 e1 aa 85 03 00 00 85 03 00 00 2a 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 6d | ...........*...algorithms/plot_m |
1500 | 61 78 69 6d 75 6d 5f 69 6e 64 65 70 65 6e 64 65 6e 74 5f 73 65 74 2e 70 79 22 22 22 0a 3d 3d 3d | aximum_independent_set.py""".=== |
1520 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4d 61 78 69 6d 75 6d 20 49 6e 64 | ====================.Maximum.Ind |
1540 | 65 70 65 6e 64 65 6e 74 20 53 65 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ependent.Set.=================== |
1560 | 3d 3d 3d 3d 0a 0a 41 6e 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 65 74 20 69 73 20 61 20 73 65 | ====..An.independent.set.is.a.se |
1580 | 74 20 6f 66 20 76 65 72 74 69 63 65 73 20 69 6e 20 61 20 67 72 61 70 68 20 77 68 65 72 65 20 6e | t.of.vertices.in.a.graph.where.n |
15a0 | 6f 20 74 77 6f 20 76 65 72 74 69 63 65 73 20 69 6e 20 74 68 65 0a 73 65 74 20 61 72 65 20 61 64 | o.two.vertices.in.the.set.are.ad |
15c0 | 6a 61 63 65 6e 74 2e 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 | jacent..The.maximum.independent. |
15e0 | 73 65 74 20 69 73 20 74 68 65 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 65 74 20 6f 66 20 6c 61 | set.is.the.independent.set.of.la |
1600 | 72 67 65 73 74 0a 70 6f 73 73 69 62 6c 65 20 73 69 7a 65 20 66 6f 72 20 61 20 67 69 76 65 6e 20 | rgest.possible.size.for.a.given. |
1620 | 67 72 61 70 68 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 | graph.."""..import.numpy.as.np.i |
1640 | 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 | mport.matplotlib.pyplot.as.plt.i |
1660 | 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 66 72 6f 6d 20 6e 65 74 77 6f 72 | mport.networkx.as.nx.from.networ |
1680 | 6b 78 2e 61 6c 67 6f 72 69 74 68 6d 73 20 69 6d 70 6f 72 74 20 61 70 70 72 6f 78 69 6d 61 74 69 | kx.algorithms.import.approximati |
16a0 | 6f 6e 20 61 73 20 61 70 70 72 6f 78 0a 0a 47 20 3d 20 6e 78 2e 47 72 61 70 68 28 0a 20 20 20 20 | on.as.approx..G.=.nx.Graph(..... |
16c0 | 5b 0a 20 20 20 20 20 20 20 20 28 31 2c 20 32 29 2c 0a 20 20 20 20 20 20 20 20 28 37 2c 20 32 29 | [.........(1,.2),.........(7,.2) |
16e0 | 2c 0a 20 20 20 20 20 20 20 20 28 33 2c 20 39 29 2c 0a 20 20 20 20 20 20 20 20 28 33 2c 20 32 29 | ,.........(3,.9),.........(3,.2) |
1700 | 2c 0a 20 20 20 20 20 20 20 20 28 37 2c 20 36 29 2c 0a 20 20 20 20 20 20 20 20 28 35 2c 20 32 29 | ,.........(7,.6),.........(5,.2) |
1720 | 2c 0a 20 20 20 20 20 20 20 20 28 31 2c 20 35 29 2c 0a 20 20 20 20 20 20 20 20 28 32 2c 20 38 29 | ,.........(1,.5),.........(2,.8) |
1740 | 2c 0a 20 20 20 20 20 20 20 20 28 31 30 2c 20 32 29 2c 0a 20 20 20 20 20 20 20 20 28 31 2c 20 37 | ,.........(10,.2),.........(1,.7 |
1760 | 29 2c 0a 20 20 20 20 20 20 20 20 28 36 2c 20 31 29 2c 0a 20 20 20 20 20 20 20 20 28 36 2c 20 39 | ),.........(6,.1),.........(6,.9 |
1780 | 29 2c 0a 20 20 20 20 20 20 20 20 28 38 2c 20 34 29 2c 0a 20 20 20 20 20 20 20 20 28 39 2c 20 34 | ),.........(8,.4),.........(9,.4 |
17a0 | 29 2c 0a 20 20 20 20 5d 0a 29 0a 0a 49 20 3d 20 61 70 70 72 6f 78 2e 6d 61 78 69 6d 75 6d 5f 69 | ),.....].)..I.=.approx.maximum_i |
17c0 | 6e 64 65 70 65 6e 64 65 6e 74 5f 73 65 74 28 47 29 0a 70 72 69 6e 74 28 66 22 4d 61 78 69 6d 75 | ndependent_set(G).print(f"Maximu |
17e0 | 6d 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 65 74 20 6f 66 20 47 3a 20 7b 49 7d 22 29 0a 0a 70 | m.independent.set.of.G:.{I}")..p |
1800 | 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 3d 33 39 | os.=.nx.spring_layout(G,.seed=39 |
1820 | 32 39 39 38 39 39 29 0a 6e 78 2e 64 72 61 77 28 0a 20 20 20 20 47 2c 0a 20 20 20 20 70 6f 73 3d | 299899).nx.draw(.....G,.....pos= |
1840 | 70 6f 73 2c 0a 20 20 20 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 54 72 75 65 2c 0a 20 20 20 20 6e | pos,.....with_labels=True,.....n |
1860 | 6f 64 65 5f 63 6f 6c 6f 72 3d 5b 22 74 61 62 3a 72 65 64 22 20 69 66 20 6e 20 69 6e 20 49 20 65 | ode_color=["tab:red".if.n.in.I.e |
1880 | 6c 73 65 20 22 74 61 62 3a 62 6c 75 65 22 20 66 6f 72 20 6e 20 69 6e 20 47 5d 2c 0a 29 0a 50 4b | lse."tab:blue".for.n.in.G],.).PK |
18a0 | 03 04 14 00 00 00 00 00 0e 7b 57 56 7d 53 7b 3e cc 08 00 00 cc 08 00 00 22 00 00 00 61 6c 67 6f | .........{WV}S{>........"...algo |
18c0 | 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 64 65 64 65 6e 73 69 66 69 63 61 74 69 6f 6e 2e 70 79 22 22 | rithms/plot_dedensification.py"" |
18e0 | 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 44 65 64 65 6e 73 69 66 69 63 61 74 69 6f | ".===============.Dedensificatio |
1900 | 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 45 78 61 6d 70 6c 65 73 20 6f 66 20 64 | n.===============..Examples.of.d |
1920 | 65 64 65 6e 73 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 20 67 72 61 70 68 2e 20 20 44 65 64 65 | edensification.of.a.graph...Dede |
1940 | 6e 73 69 66 69 63 61 74 69 6f 6e 20 72 65 74 61 69 6e 73 20 74 68 65 20 73 74 72 75 63 74 75 72 | nsification.retains.the.structur |
1960 | 61 6c 0a 70 61 74 74 65 72 6e 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 67 72 61 70 68 | al.pattern.of.the.original.graph |
1980 | 20 61 6e 64 20 77 69 6c 6c 20 6f 6e 6c 79 20 61 64 64 20 63 6f 6d 70 72 65 73 73 6f 72 20 6e 6f | .and.will.only.add.compressor.no |
19a0 | 64 65 73 20 77 68 65 6e 20 64 6f 69 6e 67 20 73 6f 0a 77 6f 75 6c 64 20 72 65 73 75 6c 74 20 69 | des.when.doing.so.would.result.i |
19c0 | 6e 20 66 65 77 65 72 20 65 64 67 65 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64 20 | n.fewer.edges.in.the.compressed. |
19e0 | 67 72 61 70 68 2e 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 | graph..""".import.matplotlib.pyp |
1a00 | 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 | lot.as.plt.import.networkx.as.nx |
1a20 | 0a 0a 70 6c 74 2e 73 75 70 74 69 74 6c 65 28 22 44 65 64 65 6e 73 69 66 69 63 61 74 69 6f 6e 22 | ..plt.suptitle("Dedensification" |
1a40 | 29 0a 0a 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 29 | )..original_graph.=.nx.DiGraph() |
1a60 | 0a 77 68 69 74 65 5f 6e 6f 64 65 73 20 3d 20 5b 22 31 22 2c 20 22 32 22 2c 20 22 33 22 2c 20 22 | .white_nodes.=.["1",."2",."3",." |
1a80 | 34 22 2c 20 22 35 22 2c 20 22 36 22 5d 0a 72 65 64 5f 6e 6f 64 65 73 20 3d 20 5b 22 41 22 2c 20 | 4",."5",."6"].red_nodes.=.["A",. |
1aa0 | 22 42 22 2c 20 22 43 22 5d 0a 6e 6f 64 65 5f 73 69 7a 65 73 20 3d 20 5b 32 35 30 20 66 6f 72 20 | "B",."C"].node_sizes.=.[250.for. |
1ac0 | 6e 6f 64 65 20 69 6e 20 77 68 69 74 65 5f 6e 6f 64 65 73 20 2b 20 72 65 64 5f 6e 6f 64 65 73 5d | node.in.white_nodes.+.red_nodes] |
1ae0 | 0a 6e 6f 64 65 5f 63 6f 6c 6f 72 73 20 3d 20 5b 22 77 68 69 74 65 22 20 66 6f 72 20 6e 20 69 6e | .node_colors.=.["white".for.n.in |
1b00 | 20 77 68 69 74 65 5f 6e 6f 64 65 73 5d 20 2b 20 5b 22 72 65 64 22 20 66 6f 72 20 6e 20 69 6e 20 | .white_nodes].+.["red".for.n.in. |
1b20 | 72 65 64 5f 6e 6f 64 65 73 5d 0a 0a 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2e 61 64 64 5f 6e | red_nodes]..original_graph.add_n |
1b40 | 6f 64 65 73 5f 66 72 6f 6d 28 77 68 69 74 65 5f 6e 6f 64 65 73 20 2b 20 72 65 64 5f 6e 6f 64 65 | odes_from(white_nodes.+.red_node |
1b60 | 73 29 0a 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2e 61 64 64 5f 65 64 67 65 73 5f 66 72 6f 6d | s).original_graph.add_edges_from |
1b80 | 28 0a 20 20 20 20 5b 0a 20 20 20 20 20 20 20 20 28 22 31 22 2c 20 22 43 22 29 2c 0a 20 20 20 20 | (.....[.........("1",."C"),..... |
1ba0 | 20 20 20 20 28 22 31 22 2c 20 22 42 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 32 22 2c 20 22 43 | ....("1",."B"),.........("2",."C |
1bc0 | 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 32 22 2c 20 22 42 22 29 2c 0a 20 20 20 20 20 20 20 20 | "),.........("2",."B"),......... |
1be0 | 28 22 32 22 2c 20 22 41 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 33 22 2c 20 22 42 22 29 2c 0a | ("2",."A"),.........("3",."B"),. |
1c00 | 20 20 20 20 20 20 20 20 28 22 33 22 2c 20 22 41 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 33 22 | ........("3",."A"),.........("3" |
1c20 | 2c 20 22 36 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 34 22 2c 20 22 43 22 29 2c 0a 20 20 20 20 | ,."6"),.........("4",."C"),..... |
1c40 | 20 20 20 20 28 22 34 22 2c 20 22 42 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 34 22 2c 20 22 41 | ....("4",."B"),.........("4",."A |
1c60 | 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 35 22 2c 20 22 42 22 29 2c 0a 20 20 20 20 20 20 20 20 | "),.........("5",."B"),......... |
1c80 | 28 22 35 22 2c 20 22 41 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 36 22 2c 20 22 35 22 29 2c 0a | ("5",."A"),.........("6",."5"),. |
1ca0 | 20 20 20 20 20 20 20 20 28 22 41 22 2c 20 22 36 22 29 2c 0a 20 20 20 20 5d 0a 29 0a 62 61 73 65 | ........("A",."6"),.....].).base |
1cc0 | 5f 6f 70 74 69 6f 6e 73 20 3d 20 7b 22 77 69 74 68 5f 6c 61 62 65 6c 73 22 3a 20 54 72 75 65 2c | _options.=.{"with_labels":.True, |
1ce0 | 20 22 65 64 67 65 63 6f 6c 6f 72 73 22 3a 20 22 62 6c 61 63 6b 22 7d 0a 70 6f 73 20 3d 20 7b 0a | ."edgecolors":."black"}.pos.=.{. |
1d00 | 20 20 20 20 22 33 22 3a 20 28 30 2c 20 31 29 2c 0a 20 20 20 20 22 32 22 3a 20 28 30 2c 20 32 29 | ...."3":.(0,.1),....."2":.(0,.2) |
1d20 | 2c 0a 20 20 20 20 22 31 22 3a 20 28 30 2c 20 33 29 2c 0a 20 20 20 20 22 36 22 3a 20 28 31 2c 20 | ,....."1":.(0,.3),....."6":.(1,. |
1d40 | 30 29 2c 0a 20 20 20 20 22 41 22 3a 20 28 31 2c 20 31 29 2c 0a 20 20 20 20 22 42 22 3a 20 28 31 | 0),....."A":.(1,.1),....."B":.(1 |
1d60 | 2c 20 32 29 2c 0a 20 20 20 20 22 43 22 3a 20 28 31 2c 20 33 29 2c 0a 20 20 20 20 22 34 22 3a 20 | ,.2),....."C":.(1,.3),....."4":. |
1d80 | 28 32 2c 20 33 29 2c 0a 20 20 20 20 22 35 22 3a 20 28 32 2c 20 31 29 2c 0a 7d 0a 61 78 31 20 3d | (2,.3),....."5":.(2,.1),.}.ax1.= |
1da0 | 20 70 6c 74 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 74 2e 74 69 74 6c 65 28 | .plt.subplot(1,.2,.1).plt.title( |
1dc0 | 22 4f 72 69 67 69 6e 61 6c 20 28 25 73 20 65 64 67 65 73 29 22 20 25 20 6f 72 69 67 69 6e 61 6c | "Original.(%s.edges)".%.original |
1de0 | 5f 67 72 61 70 68 2e 6e 75 6d 62 65 72 5f 6f 66 5f 65 64 67 65 73 28 29 29 0a 6e 78 2e 64 72 61 | _graph.number_of_edges()).nx.dra |
1e00 | 77 5f 6e 65 74 77 6f 72 6b 78 28 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2c 20 70 6f 73 3d 70 | w_networkx(original_graph,.pos=p |
1e20 | 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 6e 6f 64 65 5f 63 6f 6c 6f 72 73 2c 20 2a 2a 62 61 | os,.node_color=node_colors,.**ba |
1e40 | 73 65 5f 6f 70 74 69 6f 6e 73 29 0a 0a 6e 6f 6e 65 78 70 5f 67 72 61 70 68 2c 20 63 6f 6d 70 72 | se_options)..nonexp_graph,.compr |
1e60 | 65 73 73 69 6f 6e 5f 6e 6f 64 65 73 20 3d 20 6e 78 2e 73 75 6d 6d 61 72 69 7a 61 74 69 6f 6e 2e | ession_nodes.=.nx.summarization. |
1e80 | 64 65 64 65 6e 73 69 66 79 28 0a 20 20 20 20 6f 72 69 67 69 6e 61 6c 5f 67 72 61 70 68 2c 20 74 | dedensify(.....original_graph,.t |
1ea0 | 68 72 65 73 68 6f 6c 64 3d 32 2c 20 63 6f 70 79 3d 46 61 6c 73 65 0a 29 0a 6e 6f 6e 65 78 70 5f | hreshold=2,.copy=False.).nonexp_ |
1ec0 | 6e 6f 64 65 5f 63 6f 6c 6f 72 73 20 3d 20 6c 69 73 74 28 6e 6f 64 65 5f 63 6f 6c 6f 72 73 29 0a | node_colors.=.list(node_colors). |
1ee0 | 6e 6f 6e 65 78 70 5f 6e 6f 64 65 5f 73 69 7a 65 73 20 3d 20 6c 69 73 74 28 6e 6f 64 65 5f 73 69 | nonexp_node_sizes.=.list(node_si |
1f00 | 7a 65 73 29 0a 66 6f 72 20 6e 6f 64 65 20 69 6e 20 63 6f 6d 70 72 65 73 73 69 6f 6e 5f 6e 6f 64 | zes).for.node.in.compression_nod |
1f20 | 65 73 3a 0a 20 20 20 20 6e 6f 6e 65 78 70 5f 6e 6f 64 65 5f 63 6f 6c 6f 72 73 2e 61 70 70 65 6e | es:.....nonexp_node_colors.appen |
1f40 | 64 28 22 79 65 6c 6c 6f 77 22 29 0a 20 20 20 20 6e 6f 6e 65 78 70 5f 6e 6f 64 65 5f 73 69 7a 65 | d("yellow").....nonexp_node_size |
1f60 | 73 2e 61 70 70 65 6e 64 28 36 30 30 29 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 | s.append(600).plt.subplot(1,.2,. |
1f80 | 32 29 0a 0a 70 6c 74 2e 74 69 74 6c 65 28 22 44 65 64 65 6e 73 69 66 69 65 64 20 28 25 73 20 65 | 2)..plt.title("Dedensified.(%s.e |
1fa0 | 64 67 65 73 29 22 20 25 20 6e 6f 6e 65 78 70 5f 67 72 61 70 68 2e 6e 75 6d 62 65 72 5f 6f 66 5f | dges)".%.nonexp_graph.number_of_ |
1fc0 | 65 64 67 65 73 28 29 29 0a 6e 6f 6e 65 78 70 5f 70 6f 73 20 3d 20 7b 0a 20 20 20 20 22 35 22 3a | edges()).nonexp_pos.=.{....."5": |
1fe0 | 20 28 30 2c 20 30 29 2c 0a 20 20 20 20 22 42 22 3a 20 28 30 2c 20 32 29 2c 0a 20 20 20 20 22 31 | .(0,.0),....."B":.(0,.2),....."1 |
2000 | 22 3a 20 28 30 2c 20 33 29 2c 0a 20 20 20 20 22 36 22 3a 20 28 31 2c 20 30 2e 37 35 29 2c 0a 20 | ":.(0,.3),....."6":.(1,.0.75),.. |
2020 | 20 20 20 22 33 22 3a 20 28 31 2e 35 2c 20 31 2e 35 29 2c 0a 20 20 20 20 22 41 22 3a 20 28 32 2c | ..."3":.(1.5,.1.5),....."A":.(2, |
2040 | 20 30 29 2c 0a 20 20 20 20 22 43 22 3a 20 28 32 2c 20 33 29 2c 0a 20 20 20 20 22 34 22 3a 20 28 | .0),....."C":.(2,.3),....."4":.( |
2060 | 33 2c 20 31 2e 35 29 2c 0a 20 20 20 20 22 32 22 3a 20 28 33 2c 20 32 2e 35 29 2c 0a 7d 0a 63 5f | 3,.1.5),....."2":.(3,.2.5),.}.c_ |
2080 | 6e 6f 64 65 73 20 3d 20 6c 69 73 74 28 63 6f 6d 70 72 65 73 73 69 6f 6e 5f 6e 6f 64 65 73 29 0a | nodes.=.list(compression_nodes). |
20a0 | 63 5f 6e 6f 64 65 73 2e 73 6f 72 74 28 29 0a 66 6f 72 20 73 70 6f 74 2c 20 6e 6f 64 65 20 69 6e | c_nodes.sort().for.spot,.node.in |
20c0 | 20 65 6e 75 6d 65 72 61 74 65 28 63 5f 6e 6f 64 65 73 29 3a 0a 20 20 20 20 6e 6f 6e 65 78 70 5f | .enumerate(c_nodes):.....nonexp_ |
20e0 | 70 6f 73 5b 6e 6f 64 65 5d 20 3d 20 28 32 2c 20 73 70 6f 74 20 2b 20 32 29 0a 6e 78 2e 64 72 61 | pos[node].=.(2,.spot.+.2).nx.dra |
2100 | 77 5f 6e 65 74 77 6f 72 6b 78 28 0a 20 20 20 20 6e 6f 6e 65 78 70 5f 67 72 61 70 68 2c 0a 20 20 | w_networkx(.....nonexp_graph,... |
2120 | 20 20 70 6f 73 3d 6e 6f 6e 65 78 70 5f 70 6f 73 2c 0a 20 20 20 20 6e 6f 64 65 5f 63 6f 6c 6f 72 | ..pos=nonexp_pos,.....node_color |
2140 | 3d 6e 6f 6e 65 78 70 5f 6e 6f 64 65 5f 63 6f 6c 6f 72 73 2c 0a 20 20 20 20 6e 6f 64 65 5f 73 69 | =nonexp_node_colors,.....node_si |
2160 | 7a 65 3d 6e 6f 6e 65 78 70 5f 6e 6f 64 65 5f 73 69 7a 65 73 2c 0a 20 20 20 20 2a 2a 62 61 73 65 | ze=nonexp_node_sizes,.....**base |
2180 | 5f 6f 70 74 69 6f 6e 73 0a 29 0a 0a 70 6c 74 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 | _options.)..plt.tight_layout().p |
21a0 | 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 0e 7b 57 56 06 cf c1 cd 7d 02 00 00 | lt.show().PK.........{WV....}... |
21c0 | 7d 02 00 00 28 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 6b 72 61 63 6b 68 61 72 | }...(...algorithms/plot_krackhar |
21e0 | 64 74 5f 63 65 6e 74 72 61 6c 69 74 79 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | dt_centrality.py""".============ |
2200 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4b 72 61 63 6b 68 61 72 64 74 20 43 65 6e 74 72 61 6c 69 74 79 0a | =========.Krackhardt.Centrality. |
2220 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 43 65 6e 74 72 61 6c 69 74 | =====================..Centralit |
2240 | 79 20 6d 65 61 73 75 72 65 73 20 6f 66 20 4b 72 61 63 6b 68 61 72 64 74 20 73 6f 63 69 61 6c 20 | y.measures.of.Krackhardt.social. |
2260 | 6e 65 74 77 6f 72 6b 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e | network.."""..import.matplotlib. |
2280 | 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 | pyplot.as.plt.import.networkx.as |
22a0 | 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 6b 72 61 63 6b 68 61 72 64 74 5f 6b 69 74 65 5f 67 72 61 70 | .nx..G.=.nx.krackhardt_kite_grap |
22c0 | 68 28 29 0a 0a 70 72 69 6e 74 28 22 42 65 74 77 65 65 6e 6e 65 73 73 22 29 0a 62 20 3d 20 6e 78 | h()..print("Betweenness").b.=.nx |
22e0 | 2e 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e 74 72 61 6c 69 74 79 28 47 29 0a 66 6f 72 20 76 | .betweenness_centrality(G).for.v |
2300 | 20 69 6e 20 47 2e 6e 6f 64 65 73 28 29 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b 76 3a 32 7d | .in.G.nodes():.....print(f"{v:2} |
2320 | 20 7b 62 5b 76 5d 3a 2e 33 66 7d 22 29 0a 0a 70 72 69 6e 74 28 22 44 65 67 72 65 65 20 63 65 6e | .{b[v]:.3f}")..print("Degree.cen |
2340 | 74 72 61 6c 69 74 79 22 29 0a 64 20 3d 20 6e 78 2e 64 65 67 72 65 65 5f 63 65 6e 74 72 61 6c 69 | trality").d.=.nx.degree_centrali |
2360 | 74 79 28 47 29 0a 66 6f 72 20 76 20 69 6e 20 47 2e 6e 6f 64 65 73 28 29 3a 0a 20 20 20 20 70 72 | ty(G).for.v.in.G.nodes():.....pr |
2380 | 69 6e 74 28 66 22 7b 76 3a 32 7d 20 7b 64 5b 76 5d 3a 2e 33 66 7d 22 29 0a 0a 70 72 69 6e 74 28 | int(f"{v:2}.{d[v]:.3f}")..print( |
23a0 | 22 43 6c 6f 73 65 6e 65 73 73 20 63 65 6e 74 72 61 6c 69 74 79 22 29 0a 63 20 3d 20 6e 78 2e 63 | "Closeness.centrality").c.=.nx.c |
23c0 | 6c 6f 73 65 6e 65 73 73 5f 63 65 6e 74 72 61 6c 69 74 79 28 47 29 0a 66 6f 72 20 76 20 69 6e 20 | loseness_centrality(G).for.v.in. |
23e0 | 47 2e 6e 6f 64 65 73 28 29 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b 76 3a 32 7d 20 7b 63 5b | G.nodes():.....print(f"{v:2}.{c[ |
2400 | 76 5d 3a 2e 33 66 7d 22 29 0a 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 | v]:.3f}")..pos.=.nx.spring_layou |
2420 | 74 28 47 2c 20 73 65 65 64 3d 33 36 37 29 20 20 23 20 53 65 65 64 20 6c 61 79 6f 75 74 20 66 6f | t(G,.seed=367)..#.Seed.layout.fo |
2440 | 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 79 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 | r.reproducibility.nx.draw(G,.pos |
2460 | 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 0e 7b 57 56 7b 7c 91 76 6c | ).plt.show().PK.........{WV{|.vl |
2480 | 17 00 00 6c 17 00 00 2d 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 69 74 65 72 61 | ...l...-...algorithms/plot_itera |
24a0 | 74 65 64 5f 64 79 6e 61 6d 69 63 61 6c 5f 73 79 73 74 65 6d 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d | ted_dynamical_systems.py""".==== |
24c0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 49 74 65 72 61 74 65 64 20 | ======================.Iterated. |
24e0 | 44 79 6e 61 6d 69 63 61 6c 20 53 79 73 74 65 6d 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | Dynamical.Systems.============== |
2500 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 44 69 67 72 61 70 68 73 20 66 72 6f 6d 20 49 6e 74 65 | ============..Digraphs.from.Inte |
2520 | 67 65 72 2d 76 61 6c 75 65 64 20 49 74 65 72 61 74 65 64 20 46 75 6e 63 74 69 6f 6e 73 0a 0a 53 | ger-valued.Iterated.Functions..S |
2540 | 75 6d 73 20 6f 66 20 63 75 62 65 73 20 6f 6e 20 33 4e 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ums.of.cubes.on.3N.------------- |
2560 | 2d 2d 2d 2d 2d 2d 0a 0a 54 68 65 20 6e 75 6d 62 65 72 20 31 35 33 20 68 61 73 20 61 20 63 75 72 | ------..The.number.153.has.a.cur |
2580 | 69 6f 75 73 20 70 72 6f 70 65 72 74 79 2e 0a 0a 4c 65 74 20 33 4e 3d 7b 33 2c 36 2c 39 2c 31 32 | ious.property...Let.3N={3,6,9,12 |
25a0 | 2c 2e 2e 2e 7d 20 62 65 20 74 68 65 20 73 65 74 20 6f 66 20 70 6f 73 69 74 69 76 65 20 6d 75 6c | ,...}.be.the.set.of.positive.mul |
25c0 | 74 69 70 6c 65 73 20 6f 66 20 33 2e 20 20 44 65 66 69 6e 65 20 61 6e 0a 69 74 65 72 61 74 69 76 | tiples.of.3...Define.an.iterativ |
25e0 | 65 20 70 72 6f 63 65 73 73 20 66 3a 33 4e 2d 3e 33 4e 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 20 66 | e.process.f:3N->3N.as.follows:.f |
2600 | 6f 72 20 61 20 67 69 76 65 6e 20 6e 2c 20 74 61 6b 65 20 65 61 63 68 20 64 69 67 69 74 0a 6f 66 | or.a.given.n,.take.each.digit.of |
2620 | 20 6e 20 28 69 6e 20 62 61 73 65 20 31 30 29 2c 20 63 75 62 65 20 69 74 20 61 6e 64 20 74 68 65 | .n.(in.base.10),.cube.it.and.the |
2640 | 6e 20 73 75 6d 20 74 68 65 20 63 75 62 65 73 20 74 6f 20 6f 62 74 61 69 6e 20 66 28 6e 29 2e 0a | n.sum.the.cubes.to.obtain.f(n).. |
2660 | 0a 57 68 65 6e 20 74 68 69 73 20 70 72 6f 63 65 73 73 20 69 73 20 72 65 70 65 61 74 65 64 2c 20 | .When.this.process.is.repeated,. |
2680 | 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73 65 72 69 65 73 20 6e 2c 20 66 28 6e 29 2c 20 66 28 | the.resulting.series.n,.f(n),.f( |
26a0 | 66 28 6e 29 29 2c 2e 2e 2e 0a 74 65 72 6d 69 6e 61 74 65 20 69 6e 20 31 35 33 20 61 66 74 65 72 | f(n)),....terminate.in.153.after |
26c0 | 20 61 20 66 69 6e 69 74 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 20 28 | .a.finite.number.of.iterations.( |
26e0 | 74 68 65 20 70 72 6f 63 65 73 73 20 65 6e 64 73 0a 62 65 63 61 75 73 65 20 31 35 33 20 3d 20 31 | the.process.ends.because.153.=.1 |
2700 | 2a 2a 33 20 2b 20 35 2a 2a 33 20 2b 20 33 2a 2a 33 29 2e 0a 0a 49 6e 20 74 68 65 20 6c 61 6e 67 | **3.+.5**3.+.3**3)...In.the.lang |
2720 | 75 61 67 65 20 6f 66 20 64 69 73 63 72 65 74 65 20 64 79 6e 61 6d 69 63 61 6c 20 73 79 73 74 65 | uage.of.discrete.dynamical.syste |
2740 | 6d 73 2c 20 31 35 33 20 69 73 20 74 68 65 20 67 6c 6f 62 61 6c 0a 61 74 74 72 61 63 74 6f 72 20 | ms,.153.is.the.global.attractor. |
2760 | 66 6f 72 20 74 68 65 20 69 74 65 72 61 74 65 64 20 6d 61 70 20 66 20 72 65 73 74 72 69 63 74 65 | for.the.iterated.map.f.restricte |
2780 | 64 20 74 6f 20 74 68 65 20 73 65 74 20 33 4e 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 3a 20 74 | d.to.the.set.3N...For.example:.t |
27a0 | 61 6b 65 20 74 68 65 20 6e 75 6d 62 65 72 20 31 30 38 0a 0a 66 28 31 30 38 29 20 3d 20 31 2a 2a | ake.the.number.108..f(108).=.1** |
27c0 | 33 20 2b 20 30 2a 2a 33 20 2b 20 38 2a 2a 33 20 3d 20 35 31 33 0a 0a 61 6e 64 0a 0a 66 28 35 31 | 3.+.0**3.+.8**3.=.513..and..f(51 |
27e0 | 33 29 20 3d 20 35 2a 2a 33 20 2b 20 31 2a 2a 33 20 2b 20 33 2a 2a 33 20 3d 20 31 35 33 0a 0a 53 | 3).=.5**3.+.1**3.+.3**3.=.153..S |
2800 | 6f 2c 20 73 74 61 72 74 69 6e 67 20 61 74 20 31 30 38 20 77 65 20 72 65 61 63 68 20 31 35 33 20 | o,.starting.at.108.we.reach.153. |
2820 | 69 6e 20 74 77 6f 20 69 74 65 72 61 74 69 6f 6e 73 2c 0a 72 65 70 72 65 73 65 6e 74 65 64 20 61 | in.two.iterations,.represented.a |
2840 | 73 3a 0a 0a 31 30 38 2d 3e 35 31 33 2d 3e 31 35 33 0a 0a 43 6f 6d 70 75 74 69 6e 67 20 61 6c 6c | s:..108->513->153..Computing.all |
2860 | 20 6f 72 62 69 74 73 20 6f 66 20 33 4e 20 75 70 20 74 6f 20 31 30 2a 2a 35 20 72 65 76 65 61 6c | .orbits.of.3N.up.to.10**5.reveal |
2880 | 73 20 74 68 61 74 20 74 68 65 20 61 74 74 72 61 63 74 6f 72 0a 31 35 33 20 69 73 20 72 65 61 63 | s.that.the.attractor.153.is.reac |
28a0 | 68 65 64 20 69 6e 20 61 20 6d 61 78 69 6d 75 6d 20 6f 66 20 31 34 20 69 74 65 72 61 74 69 6f 6e | hed.in.a.maximum.of.14.iteration |
28c0 | 73 2e 20 49 6e 20 74 68 69 73 20 63 6f 64 65 20 77 65 0a 73 68 6f 77 20 74 68 61 74 20 31 33 20 | s..In.this.code.we.show.that.13. |
28e0 | 63 79 63 6c 65 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 72 65 71 75 69 72 65 64 20 66 | cycles.is.the.maximum.required.f |
2900 | 6f 72 20 61 6c 6c 20 69 6e 74 65 67 65 72 73 20 28 69 6e 20 33 4e 29 0a 6c 65 73 73 20 74 68 61 | or.all.integers.(in.3N).less.tha |
2920 | 6e 20 31 30 2c 30 30 30 2e 0a 0a 54 68 65 20 73 6d 61 6c 6c 65 73 74 20 6e 75 6d 62 65 72 20 74 | n.10,000...The.smallest.number.t |
2940 | 68 61 74 20 72 65 71 75 69 72 65 73 20 31 33 20 69 74 65 72 61 74 69 6f 6e 73 20 74 6f 20 72 65 | hat.requires.13.iterations.to.re |
2960 | 61 63 68 20 31 35 33 2c 20 69 73 20 31 37 37 2c 20 69 2e 65 2e 2c 0a 0a 31 37 37 2d 3e 36 38 37 | ach.153,.is.177,.i.e.,..177->687 |
2980 | 2d 3e 31 30 37 31 2d 3e 33 34 35 2d 3e 32 31 36 2d 3e 32 32 35 2d 3e 31 34 31 2d 3e 36 36 2d 3e | ->1071->345->216->225->141->66-> |
29a0 | 34 33 32 2d 3e 39 39 2d 3e 31 34 35 38 2d 3e 37 30 32 2d 3e 33 35 31 2d 3e 31 35 33 0a 0a 54 68 | 432->99->1458->702->351->153..Th |
29c0 | 65 20 72 65 73 75 6c 74 69 6e 67 20 6c 61 72 67 65 20 64 69 67 72 61 70 68 73 20 61 72 65 20 75 | e.resulting.large.digraphs.are.u |
29e0 | 73 65 66 75 6c 20 66 6f 72 20 74 65 73 74 69 6e 67 20 6e 65 74 77 6f 72 6b 20 73 6f 66 74 77 61 | seful.for.testing.network.softwa |
2a00 | 72 65 2e 0a 0a 54 68 65 20 67 65 6e 65 72 61 6c 20 70 72 6f 62 6c 65 6d 0a 2d 2d 2d 2d 2d 2d 2d | re...The.general.problem.------- |
2a20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 47 69 76 65 6e 20 6e 75 6d 62 65 72 73 20 6e 2c 20 61 | ------------..Given.numbers.n,.a |
2a40 | 20 70 6f 77 65 72 20 70 20 61 6e 64 20 62 61 73 65 20 62 2c 20 64 65 66 69 6e 65 20 46 28 6e 3b | .power.p.and.base.b,.define.F(n; |
2a60 | 20 70 2c 20 62 29 20 61 73 20 74 68 65 20 73 75 6d 20 6f 66 0a 74 68 65 20 64 69 67 69 74 73 20 | .p,.b).as.the.sum.of.the.digits. |
2a80 | 6f 66 20 6e 20 28 69 6e 20 62 61 73 65 20 62 29 20 72 61 69 73 65 64 20 74 6f 20 74 68 65 20 70 | of.n.(in.base.b).raised.to.the.p |
2aa0 | 6f 77 65 72 20 70 2e 20 54 68 65 20 61 62 6f 76 65 20 65 78 61 6d 70 6c 65 0a 63 6f 72 72 65 73 | ower.p..The.above.example.corres |
2ac0 | 70 6f 6e 64 73 20 74 6f 20 66 28 6e 29 3d 46 28 6e 3b 20 33 2c 31 30 29 2c 20 61 6e 64 20 62 65 | ponds.to.f(n)=F(n;.3,10),.and.be |
2ae0 | 6c 6f 77 20 46 28 6e 3b 20 70 2c 20 62 29 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 73 | low.F(n;.p,.b).is.implemented.as |
2b00 | 0a 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 70 6f 77 65 72 73 75 6d 28 6e 2c 70 2c 62 29 2e 20 54 | .the.function.powersum(n,p,b)..T |
2b20 | 68 65 20 69 74 65 72 61 74 69 76 65 20 64 79 6e 61 6d 69 63 61 6c 20 73 79 73 74 65 6d 20 64 65 | he.iterative.dynamical.system.de |
2b40 | 66 69 6e 65 64 20 62 79 0a 74 68 65 20 6d 61 70 70 69 6e 67 20 6e 3a 2d 3e 66 28 6e 29 20 61 62 | fined.by.the.mapping.n:->f(n).ab |
2b60 | 6f 76 65 20 28 6f 76 65 72 20 33 4e 29 20 63 6f 6e 76 65 72 67 65 73 20 74 6f 20 61 20 73 69 6e | ove.(over.3N).converges.to.a.sin |
2b80 | 67 6c 65 20 66 69 78 65 64 20 70 6f 69 6e 74 3b 0a 31 35 33 2e 20 41 70 70 6c 79 69 6e 67 20 74 | gle.fixed.point;.153..Applying.t |
2ba0 | 68 65 20 6d 61 70 20 74 6f 20 61 6c 6c 20 70 6f 73 69 74 69 76 65 20 69 6e 74 65 67 65 72 73 20 | he.map.to.all.positive.integers. |
2bc0 | 4e 2c 20 6c 65 61 64 73 20 74 6f 20 61 20 64 69 73 63 72 65 74 65 0a 64 79 6e 61 6d 69 63 61 6c | N,.leads.to.a.discrete.dynamical |
2be0 | 20 70 72 6f 63 65 73 73 20 77 69 74 68 20 35 20 66 69 78 65 64 20 70 6f 69 6e 74 73 3a 20 31 2c | .process.with.5.fixed.points:.1, |
2c00 | 20 31 35 33 2c 20 33 37 30 2c 20 33 37 31 2c 20 34 30 37 2e 20 4d 6f 64 75 6c 6f 20 33 0a 74 68 | .153,.370,.371,.407..Modulo.3.th |
2c20 | 6f 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20 31 2c 20 30 2c 20 31 2c 20 32 2c 20 32 2e 20 54 | ose.numbers.are.1,.0,.1,.2,.2..T |
2c40 | 68 65 20 66 75 6e 63 74 69 6f 6e 20 66 20 61 62 6f 76 65 20 68 61 73 20 74 68 65 20 61 64 64 65 | he.function.f.above.has.the.adde |
2c60 | 64 0a 70 72 6f 70 65 72 74 79 20 74 68 61 74 20 69 74 20 6d 61 70 73 20 61 20 6d 75 6c 74 69 70 | d.property.that.it.maps.a.multip |
2c80 | 6c 65 20 6f 66 20 33 20 74 6f 20 61 6e 6f 74 68 65 72 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 33 | le.of.3.to.another.multiple.of.3 |
2ca0 | 3b 20 69 2e 65 2e 20 69 74 0a 69 73 20 69 6e 76 61 72 69 61 6e 74 20 6f 6e 20 74 68 65 20 73 75 | ;.i.e..it.is.invariant.on.the.su |
2cc0 | 62 73 65 74 20 33 4e 2e 0a 0a 0a 54 68 65 20 73 71 75 61 72 69 6e 67 20 6f 66 20 64 69 67 69 74 | bset.3N....The.squaring.of.digit |
2ce0 | 73 20 28 69 6e 20 62 61 73 65 20 31 30 29 20 72 65 73 75 6c 74 20 69 6e 20 63 79 63 6c 65 73 20 | s.(in.base.10).result.in.cycles. |
2d00 | 61 6e 64 20 74 68 65 0a 73 69 6e 67 6c 65 20 66 69 78 65 64 20 70 6f 69 6e 74 20 31 2e 20 49 2e | and.the.single.fixed.point.1..I. |
2d20 | 65 2e 2c 20 66 72 6f 6d 20 61 20 63 65 72 74 61 69 6e 20 70 6f 69 6e 74 20 6f 6e 2c 20 74 68 65 | e.,.from.a.certain.point.on,.the |
2d40 | 20 70 72 6f 63 65 73 73 0a 73 74 61 72 74 73 20 72 65 70 65 61 74 69 6e 67 20 69 74 73 65 6c 66 | .process.starts.repeating.itself |
2d60 | 2e 0a 0a 6b 65 79 77 6f 72 64 73 3a 20 22 52 65 63 75 72 72 69 6e 67 20 44 69 67 69 74 61 6c 20 | ...keywords:."Recurring.Digital. |
2d80 | 49 6e 76 61 72 69 61 6e 74 22 2c 20 22 4e 61 72 63 69 73 73 69 73 74 69 63 20 4e 75 6d 62 65 72 | Invariant",."Narcissistic.Number |
2da0 | 22 2c 0a 22 48 61 70 70 79 20 4e 75 6d 62 65 72 22 0a 0a 54 68 65 20 33 6e 2b 31 20 70 72 6f 62 | ",."Happy.Number"..The.3n+1.prob |
2dc0 | 6c 65 6d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 54 68 65 72 65 20 69 73 20 61 | lem.----------------..There.is.a |
2de0 | 20 72 69 63 68 20 68 69 73 74 6f 72 79 20 6f 66 20 6d 61 74 68 65 6d 61 74 69 63 61 6c 20 72 65 | .rich.history.of.mathematical.re |
2e00 | 63 72 65 61 74 69 6f 6e 73 0a 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 64 69 73 63 72 65 | creations.associated.with.discre |
2e20 | 74 65 20 64 79 6e 61 6d 69 63 61 6c 20 73 79 73 74 65 6d 73 2e 20 20 54 68 65 20 6d 6f 73 74 20 | te.dynamical.systems...The.most. |
2e40 | 66 61 6d 6f 75 73 0a 69 73 20 74 68 65 20 43 6f 6c 6c 61 74 7a 20 33 6e 2b 31 20 70 72 6f 62 6c | famous.is.the.Collatz.3n+1.probl |
2e60 | 65 6d 2e 20 53 65 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 63 6f 6c 6c 61 74 7a 5f 70 72 6f | em..See.the.function.collatz_pro |
2e80 | 62 6c 65 6d 5f 64 69 67 72 61 70 68 20 62 65 6c 6f 77 2e 20 54 68 65 20 43 6f 6c 6c 61 74 7a 20 | blem_digraph.below..The.Collatz. |
2ea0 | 63 6f 6e 6a 65 63 74 75 72 65 0a 2d 2d 2d 20 74 68 61 74 20 65 76 65 72 79 20 6f 72 62 69 74 20 | conjecture.---.that.every.orbit. |
2ec0 | 72 65 74 75 72 6e 73 20 74 6f 20 74 68 65 20 66 69 78 65 64 20 70 6f 69 6e 74 20 31 20 69 6e 20 | returns.to.the.fixed.point.1.in. |
2ee0 | 66 69 6e 69 74 65 20 74 69 6d 65 0a 2d 2d 2d 20 69 73 20 73 74 69 6c 6c 20 75 6e 70 72 6f 76 65 | finite.time.---.is.still.unprove |
2f00 | 6e 2e 20 45 76 65 6e 20 74 68 65 20 67 72 65 61 74 20 50 61 75 6c 20 45 72 64 6f 73 20 73 61 69 | n..Even.the.great.Paul.Erdos.sai |
2f20 | 64 20 22 4d 61 74 68 65 6d 61 74 69 63 73 0a 69 73 20 6e 6f 74 20 79 65 74 20 72 65 61 64 79 20 | d."Mathematics.is.not.yet.ready. |
2f40 | 66 6f 72 20 73 75 63 68 20 70 72 6f 62 6c 65 6d 73 22 2c 20 61 6e 64 20 6f 66 66 65 72 65 64 20 | for.such.problems",.and.offered. |
2f60 | 24 35 30 30 0a 66 6f 72 20 69 74 73 20 73 6f 6c 75 74 69 6f 6e 2e 0a 0a 6b 65 79 77 6f 72 64 73 | $500.for.its.solution...keywords |
2f80 | 3a 20 22 33 6e 2b 31 22 2c 20 22 33 78 2b 31 22 2c 20 22 43 6f 6c 6c 61 74 7a 20 70 72 6f 62 6c | :."3n+1",."3x+1",."Collatz.probl |
2fa0 | 65 6d 22 2c 20 22 54 68 77 61 69 74 65 27 73 20 63 6f 6e 6a 65 63 74 75 72 65 22 0a 22 22 22 0a | em",."Thwaite's.conjecture".""". |
2fc0 | 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 6e 6d 61 78 20 3d 20 31 | .import.networkx.as.nx..nmax.=.1 |
2fe0 | 30 30 30 30 0a 70 20 3d 20 33 0a 0a 0a 64 65 66 20 64 69 67 69 74 73 72 65 70 28 6e 2c 20 62 3d | 0000.p.=.3...def.digitsrep(n,.b= |
3000 | 31 30 29 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 6c 69 73 74 20 6f 66 20 64 69 67 69 74 | 10):....."""Return.list.of.digit |
3020 | 73 20 63 6f 6d 70 72 69 73 69 6e 67 20 6e 20 72 65 70 72 65 73 65 6e 74 65 64 20 69 6e 20 62 61 | s.comprising.n.represented.in.ba |
3040 | 73 65 20 62 2e 0a 20 20 20 20 6e 20 6d 75 73 74 20 62 65 20 61 20 6e 6f 6e 6e 65 67 61 74 69 76 | se.b......n.must.be.a.nonnegativ |
3060 | 65 20 69 6e 74 65 67 65 72 22 22 22 0a 0a 20 20 20 20 69 66 20 6e 20 3c 3d 20 30 3a 0a 20 20 20 | e.integer"""......if.n.<=.0:.... |
3080 | 20 20 20 20 20 72 65 74 75 72 6e 20 5b 30 5d 0a 0a 20 20 20 20 64 6c 69 73 74 20 3d 20 5b 5d 0a | .....return.[0]......dlist.=.[]. |
30a0 | 20 20 20 20 77 68 69 6c 65 20 6e 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 23 20 50 72 65 70 65 | ....while.n.>.0:.........#.Prepe |
30c0 | 6e 64 20 6e 65 78 74 20 6c 65 61 73 74 2d 73 69 67 6e 69 66 69 63 61 6e 74 20 64 69 67 69 74 0a | nd.next.least-significant.digit. |
30e0 | 20 20 20 20 20 20 20 20 64 6c 69 73 74 20 3d 20 5b 6e 20 25 20 62 5d 20 2b 20 64 6c 69 73 74 0a | ........dlist.=.[n.%.b].+.dlist. |
3100 | 20 20 20 20 20 20 20 20 23 20 46 6c 6f 6f 72 2d 64 69 76 69 73 69 6f 6e 0a 20 20 20 20 20 20 20 | ........#.Floor-division........ |
3120 | 20 6e 20 3d 20 6e 20 2f 2f 20 62 0a 20 20 20 20 72 65 74 75 72 6e 20 64 6c 69 73 74 0a 0a 0a 64 | .n.=.n.//.b.....return.dlist...d |
3140 | 65 66 20 70 6f 77 65 72 73 75 6d 28 6e 2c 20 70 2c 20 62 3d 31 30 29 3a 0a 20 20 20 20 22 22 22 | ef.powersum(n,.p,.b=10):.....""" |
3160 | 52 65 74 75 72 6e 20 73 75 6d 20 6f 66 20 64 69 67 69 74 73 20 6f 66 20 6e 20 28 69 6e 20 62 61 | Return.sum.of.digits.of.n.(in.ba |
3180 | 73 65 20 62 29 20 72 61 69 73 65 64 20 74 6f 20 74 68 65 20 70 6f 77 65 72 20 70 2e 22 22 22 0a | se.b).raised.to.the.power.p.""". |
31a0 | 20 20 20 20 64 6c 69 73 74 20 3d 20 64 69 67 69 74 73 72 65 70 28 6e 2c 20 62 29 0a 20 20 20 20 | ....dlist.=.digitsrep(n,.b)..... |
31c0 | 73 75 6d 20 3d 20 30 0a 20 20 20 20 66 6f 72 20 6b 20 69 6e 20 64 6c 69 73 74 3a 0a 20 20 20 20 | sum.=.0.....for.k.in.dlist:..... |
31e0 | 20 20 20 20 73 75 6d 20 2b 3d 20 6b 2a 2a 70 0a 20 20 20 20 72 65 74 75 72 6e 20 73 75 6d 0a 0a | ....sum.+=.k**p.....return.sum.. |
3200 | 0a 64 65 66 20 61 74 74 72 61 63 74 6f 72 31 35 33 5f 67 72 61 70 68 28 6e 2c 20 70 2c 20 6d 75 | .def.attractor153_graph(n,.p,.mu |
3220 | 6c 74 69 70 6c 65 3d 33 2c 20 62 3d 31 30 29 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 64 | ltiple=3,.b=10):....."""Return.d |
3240 | 69 67 72 61 70 68 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 20 6f 66 20 70 6f 77 65 72 73 75 6d | igraph.of.iterations.of.powersum |
3260 | 28 6e 2c 33 2c 31 30 29 2e 22 22 22 0a 20 20 20 20 47 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 | (n,3,10).""".....G.=.nx.DiGraph( |
3280 | 29 0a 20 20 20 20 66 6f 72 20 6b 20 69 6e 20 72 61 6e 67 65 28 31 2c 20 6e 20 2b 20 31 29 3a 0a | ).....for.k.in.range(1,.n.+.1):. |
32a0 | 20 20 20 20 20 20 20 20 69 66 20 6b 20 25 20 6d 75 6c 74 69 70 6c 65 20 3d 3d 20 30 20 61 6e 64 | ........if.k.%.multiple.==.0.and |
32c0 | 20 6b 20 6e 6f 74 20 69 6e 20 47 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 31 20 3d 20 6b 0a | .k.not.in.G:.............k1.=.k. |
32e0 | 20 20 20 20 20 20 20 20 20 20 20 20 6b 6e 65 78 74 20 3d 20 70 6f 77 65 72 73 75 6d 28 6b 31 2c | ............knext.=.powersum(k1, |
3300 | 20 70 2c 20 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 6b 31 20 21 3d 20 6b | .p,.b).............while.k1.!=.k |
3320 | 6e 65 78 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 65 64 67 65 | next:.................G.add_edge |
3340 | 28 6b 31 2c 20 6b 6e 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 31 20 3d | (k1,.knext).................k1.= |
3360 | 20 6b 6e 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 6e 65 78 74 20 3d 20 70 | .knext.................knext.=.p |
3380 | 6f 77 65 72 73 75 6d 28 6b 31 2c 20 70 2c 20 62 29 0a 20 20 20 20 72 65 74 75 72 6e 20 47 0a 0a | owersum(k1,.p,.b).....return.G.. |
33a0 | 0a 64 65 66 20 73 71 75 61 72 69 6e 67 5f 63 79 63 6c 65 5f 67 72 61 70 68 5f 6f 6c 64 28 6e 2c | .def.squaring_cycle_graph_old(n, |
33c0 | 20 62 3d 31 30 29 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 64 69 67 72 61 70 68 20 6f 66 | .b=10):....."""Return.digraph.of |
33e0 | 20 69 74 65 72 61 74 69 6f 6e 73 20 6f 66 20 70 6f 77 65 72 73 75 6d 28 6e 2c 32 2c 31 30 29 2e | .iterations.of.powersum(n,2,10). |
3400 | 22 22 22 0a 20 20 20 20 47 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 29 0a 20 20 20 20 66 6f 72 | """.....G.=.nx.DiGraph().....for |
3420 | 20 6b 20 69 6e 20 72 61 6e 67 65 28 31 2c 20 6e 20 2b 20 31 29 3a 0a 20 20 20 20 20 20 20 20 6b | .k.in.range(1,.n.+.1):.........k |
3440 | 31 20 3d 20 6b 0a 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 6e 6f 64 65 28 6b 31 29 20 20 23 20 | 1.=.k.........G.add_node(k1)..#. |
3460 | 63 61 73 65 20 6b 31 3d 3d 6b 6e 65 78 74 2c 20 61 74 20 6c 65 61 73 74 20 61 64 64 20 6e 6f 64 | case.k1==knext,.at.least.add.nod |
3480 | 65 0a 20 20 20 20 20 20 20 20 6b 6e 65 78 74 20 3d 20 70 6f 77 65 72 73 75 6d 28 6b 31 2c 20 32 | e.........knext.=.powersum(k1,.2 |
34a0 | 2c 20 62 29 0a 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 65 64 67 65 28 6b 31 2c 20 6b 6e 65 78 | ,.b).........G.add_edge(k1,.knex |
34c0 | 74 29 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 6b 31 20 21 3d 20 6b 6e 65 78 74 3a 20 20 23 | t).........while.k1.!=.knext:..# |
34e0 | 20 73 74 6f 70 20 69 66 20 66 69 78 65 64 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 | .stop.if.fixed.point............ |
3500 | 20 6b 31 20 3d 20 6b 6e 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 6e 65 78 74 20 3d 20 | .k1.=.knext.............knext.=. |
3520 | 70 6f 77 65 72 73 75 6d 28 6b 31 2c 20 32 2c 20 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 | powersum(k1,.2,.b).............G |
3540 | 2e 61 64 64 5f 65 64 67 65 28 6b 31 2c 20 6b 6e 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 | .add_edge(k1,.knext)............ |
3560 | 20 69 66 20 47 2e 6f 75 74 5f 64 65 67 72 65 65 28 6b 6e 65 78 74 29 20 3e 3d 20 31 3a 0a 20 20 | .if.G.out_degree(knext).>=.1:... |
3580 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6b 6e 65 78 74 20 68 61 73 20 61 6c 72 65 61 64 | ..............#.knext.has.alread |
35a0 | 79 20 62 65 65 6e 20 69 74 65 72 61 74 65 64 20 69 6e 20 61 6e 64 20 6f 75 74 0a 20 20 20 20 20 | y.been.iterated.in.and.out...... |
35c0 | 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 72 65 74 75 72 6e 20 47 0a 0a 0a | ...........break.....return.G... |
35e0 | 64 65 66 20 73 75 6d 5f 6f 66 5f 64 69 67 69 74 73 5f 67 72 61 70 68 28 6e 6d 61 78 2c 20 62 3d | def.sum_of_digits_graph(nmax,.b= |
3600 | 31 30 29 3a 0a 20 20 20 20 64 65 66 20 66 28 6e 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 | 10):.....def.f(n):.........retur |
3620 | 6e 20 70 6f 77 65 72 73 75 6d 28 6e 2c 20 31 2c 20 62 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 | n.powersum(n,.1,.b)......return. |
3640 | 64 69 73 63 72 65 74 65 5f 64 79 6e 61 6d 69 63 73 5f 64 69 67 72 61 70 68 28 6e 6d 61 78 2c 20 | discrete_dynamics_digraph(nmax,. |
3660 | 66 29 0a 0a 0a 64 65 66 20 73 71 75 61 72 69 6e 67 5f 63 79 63 6c 65 5f 64 69 67 72 61 70 68 28 | f)...def.squaring_cycle_digraph( |
3680 | 6e 6d 61 78 2c 20 62 3d 31 30 29 3a 0a 20 20 20 20 64 65 66 20 66 28 6e 29 3a 0a 20 20 20 20 20 | nmax,.b=10):.....def.f(n):...... |
36a0 | 20 20 20 72 65 74 75 72 6e 20 70 6f 77 65 72 73 75 6d 28 6e 2c 20 32 2c 20 62 29 0a 0a 20 20 20 | ...return.powersum(n,.2,.b)..... |
36c0 | 20 72 65 74 75 72 6e 20 64 69 73 63 72 65 74 65 5f 64 79 6e 61 6d 69 63 73 5f 64 69 67 72 61 70 | .return.discrete_dynamics_digrap |
36e0 | 68 28 6e 6d 61 78 2c 20 66 29 0a 0a 0a 64 65 66 20 63 75 62 69 6e 67 5f 31 35 33 5f 64 69 67 72 | h(nmax,.f)...def.cubing_153_digr |
3700 | 61 70 68 28 6e 6d 61 78 29 3a 0a 20 20 20 20 64 65 66 20 66 28 6e 29 3a 0a 20 20 20 20 20 20 20 | aph(nmax):.....def.f(n):........ |
3720 | 20 72 65 74 75 72 6e 20 70 6f 77 65 72 73 75 6d 28 6e 2c 20 33 2c 20 31 30 29 0a 0a 20 20 20 20 | .return.powersum(n,.3,.10)...... |
3740 | 72 65 74 75 72 6e 20 64 69 73 63 72 65 74 65 5f 64 79 6e 61 6d 69 63 73 5f 64 69 67 72 61 70 68 | return.discrete_dynamics_digraph |
3760 | 28 6e 6d 61 78 2c 20 66 29 0a 0a 0a 64 65 66 20 64 69 73 63 72 65 74 65 5f 64 79 6e 61 6d 69 63 | (nmax,.f)...def.discrete_dynamic |
3780 | 73 5f 64 69 67 72 61 70 68 28 6e 6d 61 78 2c 20 66 2c 20 69 74 65 72 6d 61 78 3d 35 30 30 30 30 | s_digraph(nmax,.f,.itermax=50000 |
37a0 | 29 3a 0a 20 20 20 20 47 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 29 0a 20 20 20 20 66 6f 72 20 | ):.....G.=.nx.DiGraph().....for. |
37c0 | 6b 20 69 6e 20 72 61 6e 67 65 28 31 2c 20 6e 6d 61 78 20 2b 20 31 29 3a 0a 20 20 20 20 20 20 20 | k.in.range(1,.nmax.+.1):........ |
37e0 | 20 6b 6f 6c 64 20 3d 20 6b 0a 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 6e 6f 64 65 28 6b 6f 6c | .kold.=.k.........G.add_node(kol |
3800 | 64 29 0a 20 20 20 20 20 20 20 20 6b 6e 65 77 20 3d 20 66 28 6b 6f 6c 64 29 0a 20 20 20 20 20 20 | d).........knew.=.f(kold)....... |
3820 | 20 20 47 2e 61 64 64 5f 65 64 67 65 28 6b 6f 6c 64 2c 20 6b 6e 65 77 29 0a 20 20 20 20 20 20 20 | ..G.add_edge(kold,.knew)........ |
3840 | 20 77 68 69 6c 65 20 6b 6f 6c 64 20 21 3d 20 6b 6e 65 77 20 61 6e 64 20 6b 6f 6c 64 20 3c 3c 20 | .while.kold.!=.knew.and.kold.<<. |
3860 | 69 74 65 72 6d 61 78 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 69 74 65 72 61 74 65 20 75 | itermax:.............#.iterate.u |
3880 | 6e 74 69 6c 20 66 69 78 65 64 20 70 6f 69 6e 74 20 72 65 61 63 68 65 64 20 6f 72 20 69 74 65 72 | ntil.fixed.point.reached.or.iter |
38a0 | 6d 61 78 20 69 73 20 65 78 63 65 65 64 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 6f 6c 64 | max.is.exceeded.............kold |
38c0 | 20 3d 20 6b 6e 65 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 6e 65 77 20 3d 20 66 28 6b 6f 6c | .=.knew.............knew.=.f(kol |
38e0 | 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 65 64 67 65 28 6b 6f 6c 64 2c 20 | d).............G.add_edge(kold,. |
3900 | 6b 6e 65 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 47 2e 6f 75 74 5f 64 65 67 72 65 | knew).............if.G.out_degre |
3920 | 65 28 6b 6e 65 77 29 20 3e 3d 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | e(knew).>=.1:.................#. |
3940 | 6b 6e 65 77 20 68 61 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 69 74 65 72 61 74 65 64 20 69 | knew.has.already.been.iterated.i |
3960 | 6e 20 61 6e 64 20 6f 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a | n.and.out.................break. |
3980 | 20 20 20 20 72 65 74 75 72 6e 20 47 0a 0a 0a 64 65 66 20 63 6f 6c 6c 61 74 7a 5f 70 72 6f 62 6c | ....return.G...def.collatz_probl |
39a0 | 65 6d 5f 64 69 67 72 61 70 68 28 6e 6d 61 78 29 3a 0a 20 20 20 20 64 65 66 20 66 28 6e 29 3a 0a | em_digraph(nmax):.....def.f(n):. |
39c0 | 20 20 20 20 20 20 20 20 69 66 20 6e 20 25 20 32 20 3d 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 20 | ........if.n.%.2.==.0:.......... |
39e0 | 20 20 20 72 65 74 75 72 6e 20 6e 20 2f 2f 20 32 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 | ...return.n.//.2.........else:.. |
3a00 | 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 33 20 2a 20 6e 20 2b 20 31 0a 0a 20 20 20 | ...........return.3.*.n.+.1..... |
3a20 | 20 72 65 74 75 72 6e 20 64 69 73 63 72 65 74 65 5f 64 79 6e 61 6d 69 63 73 5f 64 69 67 72 61 70 | .return.discrete_dynamics_digrap |
3a40 | 68 28 6e 6d 61 78 2c 20 66 29 0a 0a 0a 64 65 66 20 66 69 78 65 64 5f 70 6f 69 6e 74 73 28 47 29 | h(nmax,.f)...def.fixed_points(G) |
3a60 | 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 66 69 78 65 64 20 | :....."""Return.a.list.of.fixed. |
3a80 | 70 6f 69 6e 74 73 20 66 6f 72 20 74 68 65 20 64 69 73 63 72 65 74 65 20 64 79 6e 61 6d 69 63 61 | points.for.the.discrete.dynamica |
3aa0 | 6c 0a 20 20 20 20 73 79 73 74 65 6d 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 74 68 65 20 | l.....system.represented.by.the. |
3ac0 | 64 69 67 72 61 70 68 20 47 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 5b 6e | digraph.G......""".....return.[n |
3ae0 | 20 66 6f 72 20 6e 20 69 6e 20 47 20 69 66 20 47 2e 6f 75 74 5f 64 65 67 72 65 65 28 6e 29 20 3d | .for.n.in.G.if.G.out_degree(n).= |
3b00 | 3d 20 30 5d 0a 0a 0a 6e 6d 61 78 20 3d 20 31 30 30 30 30 0a 70 72 69 6e 74 28 66 22 42 75 69 6c | =.0]...nmax.=.10000.print(f"Buil |
3b20 | 64 69 6e 67 20 63 75 62 69 6e 67 5f 31 35 33 5f 64 69 67 72 61 70 68 28 7b 6e 6d 61 78 7d 29 22 | ding.cubing_153_digraph({nmax})" |
3b40 | 29 0a 47 20 3d 20 63 75 62 69 6e 67 5f 31 35 33 5f 64 69 67 72 61 70 68 28 6e 6d 61 78 29 0a 70 | ).G.=.cubing_153_digraph(nmax).p |
3b60 | 72 69 6e 74 28 22 52 65 73 75 6c 74 69 6e 67 20 64 69 67 72 61 70 68 20 68 61 73 22 2c 20 6c 65 | rint("Resulting.digraph.has",.le |
3b80 | 6e 28 47 29 2c 20 22 6e 6f 64 65 73 20 61 6e 64 22 2c 20 47 2e 73 69 7a 65 28 29 2c 20 22 20 65 | n(G),."nodes.and",.G.size(),.".e |
3ba0 | 64 67 65 73 22 29 0a 70 72 69 6e 74 28 22 53 68 6f 72 74 65 73 74 20 70 61 74 68 20 66 72 6f 6d | dges").print("Shortest.path.from |
3bc0 | 20 31 37 37 20 74 6f 20 31 35 33 20 69 73 3a 22 29 0a 70 72 69 6e 74 28 6e 78 2e 73 68 6f 72 74 | .177.to.153.is:").print(nx.short |
3be0 | 65 73 74 5f 70 61 74 68 28 47 2c 20 31 37 37 2c 20 31 35 33 29 29 0a 70 72 69 6e 74 28 66 22 66 | est_path(G,.177,.153)).print(f"f |
3c00 | 69 78 65 64 20 70 6f 69 6e 74 73 20 61 72 65 20 7b 66 69 78 65 64 5f 70 6f 69 6e 74 73 28 47 29 | ixed.points.are.{fixed_points(G) |
3c20 | 7d 22 29 0a 50 4b 03 04 14 00 00 00 00 00 0e 7b 57 56 e2 9f eb 7c 8c 09 00 00 8c 09 00 00 27 00 | }").PK.........{WV...|........'. |
3c40 | 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 70 61 72 61 6c 6c 65 6c 5f 62 65 74 77 65 | ..algorithms/plot_parallel_betwe |
3c60 | 65 6e 6e 65 73 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | enness.py""".=================== |
3c80 | 3d 0a 50 61 72 61 6c 6c 65 6c 20 42 65 74 77 65 65 6e 6e 65 73 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d | =.Parallel.Betweenness.========= |
3ca0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 45 78 61 6d 70 6c 65 20 6f 66 20 70 61 72 61 6c 6c 65 6c | ===========..Example.of.parallel |
3cc0 | 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 62 65 74 77 65 65 6e 6e 65 73 73 20 63 | .implementation.of.betweenness.c |
3ce0 | 65 6e 74 72 61 6c 69 74 79 20 75 73 69 6e 67 20 74 68 65 0a 6d 75 6c 74 69 70 72 6f 63 65 73 73 | entrality.using.the.multiprocess |
3d00 | 69 6e 67 20 6d 6f 64 75 6c 65 20 66 72 6f 6d 20 50 79 74 68 6f 6e 20 53 74 61 6e 64 61 72 64 20 | ing.module.from.Python.Standard. |
3d20 | 4c 69 62 72 61 72 79 2e 0a 0a 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 6e 65 | Library...The.function.betweenne |
3d40 | 73 73 20 63 65 6e 74 72 61 6c 69 74 79 20 61 63 63 65 70 74 73 20 61 20 62 75 6e 63 68 20 6f 66 | ss.centrality.accepts.a.bunch.of |
3d60 | 20 6e 6f 64 65 73 20 61 6e 64 20 63 6f 6d 70 75 74 65 73 0a 74 68 65 20 63 6f 6e 74 72 69 62 75 | .nodes.and.computes.the.contribu |
3d80 | 74 69 6f 6e 20 6f 66 20 74 68 6f 73 65 20 6e 6f 64 65 73 20 74 6f 20 74 68 65 20 62 65 74 77 65 | tion.of.those.nodes.to.the.betwe |
3da0 | 65 6e 6e 65 73 73 20 63 65 6e 74 72 61 6c 69 74 79 20 6f 66 20 74 68 65 20 77 68 6f 6c 65 0a 6e | enness.centrality.of.the.whole.n |
3dc0 | 65 74 77 6f 72 6b 2e 20 48 65 72 65 20 77 65 20 64 69 76 69 64 65 20 74 68 65 20 6e 65 74 77 6f | etwork..Here.we.divide.the.netwo |
3de0 | 72 6b 20 69 6e 20 63 68 75 6e 6b 73 20 6f 66 20 6e 6f 64 65 73 20 61 6e 64 20 77 65 20 63 6f 6d | rk.in.chunks.of.nodes.and.we.com |
3e00 | 70 75 74 65 20 74 68 65 69 72 0a 63 6f 6e 74 72 69 62 75 74 69 6f 6e 20 74 6f 20 74 68 65 20 62 | pute.their.contribution.to.the.b |
3e20 | 65 74 77 65 65 6e 6e 65 73 73 20 63 65 6e 74 72 61 6c 69 74 79 20 6f 66 20 74 68 65 20 77 68 6f | etweenness.centrality.of.the.who |
3e40 | 6c 65 20 6e 65 74 77 6f 72 6b 2e 0a 0a 4e 6f 74 65 3a 20 54 68 65 20 65 78 61 6d 70 6c 65 20 6f | le.network...Note:.The.example.o |
3e60 | 75 74 70 75 74 20 62 65 6c 6f 77 20 73 68 6f 77 73 20 74 68 61 74 20 74 68 65 20 6e 6f 6e 2d 70 | utput.below.shows.that.the.non-p |
3e80 | 61 72 61 6c 6c 65 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 0a 66 61 73 74 65 72 | arallel.implementation.is.faster |
3ea0 | 2e 20 54 68 69 73 20 69 73 20 61 20 6c 69 6d 69 74 61 74 69 6f 6e 20 6f 66 20 6f 75 72 20 43 49 | ..This.is.a.limitation.of.our.CI |
3ec0 | 2f 43 44 20 70 69 70 65 6c 69 6e 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 61 20 73 69 6e 67 6c 65 | /CD.pipeline.running.on.a.single |
3ee0 | 20 63 6f 72 65 2e 0a 0a 44 65 70 65 6e 64 69 6e 67 20 6f 6e 20 79 6f 75 72 20 73 65 74 75 70 2c | .core...Depending.on.your.setup, |
3f00 | 20 79 6f 75 20 77 69 6c 6c 20 6c 69 6b 65 6c 79 20 6f 62 73 65 72 76 65 20 61 20 73 70 65 65 64 | .you.will.likely.observe.a.speed |
3f20 | 75 70 2e 0a 22 22 22 0a 66 72 6f 6d 20 6d 75 6c 74 69 70 72 6f 63 65 73 73 69 6e 67 20 69 6d 70 | up..""".from.multiprocessing.imp |
3f40 | 6f 72 74 20 50 6f 6f 6c 0a 69 6d 70 6f 72 74 20 74 69 6d 65 0a 69 6d 70 6f 72 74 20 69 74 65 72 | ort.Pool.import.time.import.iter |
3f60 | 74 6f 6f 6c 73 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 | tools..import.matplotlib.pyplot. |
3f80 | 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 0a 64 | as.plt.import.networkx.as.nx...d |
3fa0 | 65 66 20 63 68 75 6e 6b 73 28 6c 2c 20 6e 29 3a 0a 20 20 20 20 22 22 22 44 69 76 69 64 65 20 61 | ef.chunks(l,.n):....."""Divide.a |
3fc0 | 20 6c 69 73 74 20 6f 66 20 6e 6f 64 65 73 20 60 6c 60 20 69 6e 20 60 6e 60 20 63 68 75 6e 6b 73 | .list.of.nodes.`l`.in.`n`.chunks |
3fe0 | 22 22 22 0a 20 20 20 20 6c 5f 63 20 3d 20 69 74 65 72 28 6c 29 0a 20 20 20 20 77 68 69 6c 65 20 | """.....l_c.=.iter(l).....while. |
4000 | 31 3a 0a 20 20 20 20 20 20 20 20 78 20 3d 20 74 75 70 6c 65 28 69 74 65 72 74 6f 6f 6c 73 2e 69 | 1:.........x.=.tuple(itertools.i |
4020 | 73 6c 69 63 65 28 6c 5f 63 2c 20 6e 29 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 78 3a | slice(l_c,.n)).........if.not.x: |
4040 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 79 69 65 6c | .............return.........yiel |
4060 | 64 20 78 0a 0a 0a 64 65 66 20 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e 74 72 61 6c 69 74 79 | d.x...def.betweenness_centrality |
4080 | 5f 70 61 72 61 6c 6c 65 6c 28 47 2c 20 70 72 6f 63 65 73 73 65 73 3d 4e 6f 6e 65 29 3a 0a 20 20 | _parallel(G,.processes=None):... |
40a0 | 20 20 22 22 22 50 61 72 61 6c 6c 65 6c 20 62 65 74 77 65 65 6e 6e 65 73 73 20 63 65 6e 74 72 61 | .."""Parallel.betweenness.centra |
40c0 | 6c 69 74 79 20 20 66 75 6e 63 74 69 6f 6e 22 22 22 0a 20 20 20 20 70 20 3d 20 50 6f 6f 6c 28 70 | lity..function""".....p.=.Pool(p |
40e0 | 72 6f 63 65 73 73 65 73 3d 70 72 6f 63 65 73 73 65 73 29 0a 20 20 20 20 6e 6f 64 65 5f 64 69 76 | rocesses=processes).....node_div |
4100 | 69 73 6f 72 20 3d 20 6c 65 6e 28 70 2e 5f 70 6f 6f 6c 29 20 2a 20 34 0a 20 20 20 20 6e 6f 64 65 | isor.=.len(p._pool).*.4.....node |
4120 | 5f 63 68 75 6e 6b 73 20 3d 20 6c 69 73 74 28 63 68 75 6e 6b 73 28 47 2e 6e 6f 64 65 73 28 29 2c | _chunks.=.list(chunks(G.nodes(), |
4140 | 20 47 2e 6f 72 64 65 72 28 29 20 2f 2f 20 6e 6f 64 65 5f 64 69 76 69 73 6f 72 29 29 0a 20 20 20 | .G.order().//.node_divisor)).... |
4160 | 20 6e 75 6d 5f 63 68 75 6e 6b 73 20 3d 20 6c 65 6e 28 6e 6f 64 65 5f 63 68 75 6e 6b 73 29 0a 20 | .num_chunks.=.len(node_chunks).. |
4180 | 20 20 20 62 74 5f 73 63 20 3d 20 70 2e 73 74 61 72 6d 61 70 28 0a 20 20 20 20 20 20 20 20 6e 78 | ...bt_sc.=.p.starmap(.........nx |
41a0 | 2e 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e 74 72 61 6c 69 74 79 5f 73 75 62 73 65 74 2c 0a | .betweenness_centrality_subset,. |
41c0 | 20 20 20 20 20 20 20 20 7a 69 70 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 47 5d 20 2a 20 6e | ........zip(.............[G].*.n |
41e0 | 75 6d 5f 63 68 75 6e 6b 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 5f 63 68 75 6e | um_chunks,.............node_chun |
4200 | 6b 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 28 47 29 5d 20 2a 20 6e 75 6d 5f | ks,.............[list(G)].*.num_ |
4220 | 63 68 75 6e 6b 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 54 72 75 65 5d 20 2a 20 6e 75 6d | chunks,.............[True].*.num |
4240 | 5f 63 68 75 6e 6b 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4e 6f 6e 65 5d 20 2a 20 6e 75 | _chunks,.............[None].*.nu |
4260 | 6d 5f 63 68 75 6e 6b 73 2c 0a 20 20 20 20 20 20 20 20 29 2c 0a 20 20 20 20 29 0a 0a 20 20 20 20 | m_chunks,.........),.....)...... |
4280 | 23 20 52 65 64 75 63 65 20 74 68 65 20 70 61 72 74 69 61 6c 20 73 6f 6c 75 74 69 6f 6e 73 0a 20 | #.Reduce.the.partial.solutions.. |
42a0 | 20 20 20 62 74 5f 63 20 3d 20 62 74 5f 73 63 5b 30 5d 0a 20 20 20 20 66 6f 72 20 62 74 20 69 6e | ...bt_c.=.bt_sc[0].....for.bt.in |
42c0 | 20 62 74 5f 73 63 5b 31 3a 5d 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6e 20 69 6e 20 62 74 3a | .bt_sc[1:]:.........for.n.in.bt: |
42e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 74 5f 63 5b 6e 5d 20 2b 3d 20 62 74 5b 6e 5d 0a 20 20 | .............bt_c[n].+=.bt[n]... |
4300 | 20 20 72 65 74 75 72 6e 20 62 74 5f 63 0a 0a 0a 47 5f 62 61 20 3d 20 6e 78 2e 62 61 72 61 62 61 | ..return.bt_c...G_ba.=.nx.baraba |
4320 | 73 69 5f 61 6c 62 65 72 74 5f 67 72 61 70 68 28 31 30 30 30 2c 20 33 29 0a 47 5f 65 72 20 3d 20 | si_albert_graph(1000,.3).G_er.=. |
4340 | 6e 78 2e 67 6e 70 5f 72 61 6e 64 6f 6d 5f 67 72 61 70 68 28 31 30 30 30 2c 20 30 2e 30 31 29 0a | nx.gnp_random_graph(1000,.0.01). |
4360 | 47 5f 77 73 20 3d 20 6e 78 2e 63 6f 6e 6e 65 63 74 65 64 5f 77 61 74 74 73 5f 73 74 72 6f 67 61 | G_ws.=.nx.connected_watts_stroga |
4380 | 74 7a 5f 67 72 61 70 68 28 31 30 30 30 2c 20 34 2c 20 30 2e 31 29 0a 66 6f 72 20 47 20 69 6e 20 | tz_graph(1000,.4,.0.1).for.G.in. |
43a0 | 5b 47 5f 62 61 2c 20 47 5f 65 72 2c 20 47 5f 77 73 5d 3a 0a 20 20 20 20 70 72 69 6e 74 28 22 22 | [G_ba,.G_er,.G_ws]:.....print("" |
43c0 | 29 0a 20 20 20 20 70 72 69 6e 74 28 22 43 6f 6d 70 75 74 69 6e 67 20 62 65 74 77 65 65 6e 6e 65 | ).....print("Computing.betweenne |
43e0 | 73 73 20 63 65 6e 74 72 61 6c 69 74 79 20 66 6f 72 3a 22 29 0a 20 20 20 20 70 72 69 6e 74 28 47 | ss.centrality.for:").....print(G |
4400 | 29 0a 20 20 20 20 70 72 69 6e 74 28 22 5c 74 50 61 72 61 6c 6c 65 6c 20 76 65 72 73 69 6f 6e 22 | ).....print("\tParallel.version" |
4420 | 29 0a 20 20 20 20 73 74 61 72 74 20 3d 20 74 69 6d 65 2e 74 69 6d 65 28 29 0a 20 20 20 20 62 74 | ).....start.=.time.time().....bt |
4440 | 20 3d 20 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e 74 72 61 6c 69 74 79 5f 70 61 72 61 6c 6c | .=.betweenness_centrality_parall |
4460 | 65 6c 28 47 29 0a 20 20 20 20 70 72 69 6e 74 28 66 22 5c 74 5c 74 54 69 6d 65 3a 20 7b 28 74 69 | el(G).....print(f"\t\tTime:.{(ti |
4480 | 6d 65 2e 74 69 6d 65 28 29 20 2d 20 73 74 61 72 74 29 3a 2e 34 46 7d 20 73 65 63 6f 6e 64 73 22 | me.time().-.start):.4F}.seconds" |
44a0 | 29 0a 20 20 20 20 70 72 69 6e 74 28 66 22 5c 74 5c 74 42 65 74 77 65 65 6e 6e 65 73 73 20 63 65 | ).....print(f"\t\tBetweenness.ce |
44c0 | 6e 74 72 61 6c 69 74 79 20 66 6f 72 20 6e 6f 64 65 20 30 3a 20 7b 62 74 5b 30 5d 3a 2e 35 66 7d | ntrality.for.node.0:.{bt[0]:.5f} |
44e0 | 22 29 0a 20 20 20 20 70 72 69 6e 74 28 22 5c 74 4e 6f 6e 2d 50 61 72 61 6c 6c 65 6c 20 76 65 72 | ").....print("\tNon-Parallel.ver |
4500 | 73 69 6f 6e 22 29 0a 20 20 20 20 73 74 61 72 74 20 3d 20 74 69 6d 65 2e 74 69 6d 65 28 29 0a 20 | sion").....start.=.time.time().. |
4520 | 20 20 20 62 74 20 3d 20 6e 78 2e 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e 74 72 61 6c 69 74 | ...bt.=.nx.betweenness_centralit |
4540 | 79 28 47 29 0a 20 20 20 20 70 72 69 6e 74 28 66 22 5c 74 5c 74 54 69 6d 65 3a 20 7b 28 74 69 6d | y(G).....print(f"\t\tTime:.{(tim |
4560 | 65 2e 74 69 6d 65 28 29 20 2d 20 73 74 61 72 74 29 3a 2e 34 46 7d 20 73 65 63 6f 6e 64 73 22 29 | e.time().-.start):.4F}.seconds") |
4580 | 0a 20 20 20 20 70 72 69 6e 74 28 66 22 5c 74 5c 74 42 65 74 77 65 65 6e 6e 65 73 73 20 63 65 6e | .....print(f"\t\tBetweenness.cen |
45a0 | 74 72 61 6c 69 74 79 20 66 6f 72 20 6e 6f 64 65 20 30 3a 20 7b 62 74 5b 30 5d 3a 2e 35 66 7d 22 | trality.for.node.0:.{bt[0]:.5f}" |
45c0 | 29 0a 70 72 69 6e 74 28 22 22 29 0a 0a 6e 78 2e 64 72 61 77 28 47 5f 62 61 2c 20 6e 6f 64 65 5f | ).print("")..nx.draw(G_ba,.node_ |
45e0 | 73 69 7a 65 3d 31 30 30 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 0a | size=100).plt.show().PK......... |
4600 | 7b 57 56 28 8a 4a da 4e 08 00 00 4e 08 00 00 29 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c | {WV(.J.N...N...)...algorithms/pl |
4620 | 6f 74 5f 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e 74 72 61 6c 69 74 79 2e 70 79 22 22 22 0a | ot_betweenness_centrality.py""". |
4640 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 42 65 74 77 65 65 6e 6e 65 | ======================.Betweenne |
4660 | 73 73 20 43 65 6e 74 72 61 6c 69 74 79 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ss.Centrality.================== |
4680 | 3d 3d 3d 3d 0a 0a 42 65 74 77 65 65 6e 6e 65 73 73 20 63 65 6e 74 72 61 6c 69 74 79 20 6d 65 61 | ====..Betweenness.centrality.mea |
46a0 | 73 75 72 65 73 20 6f 66 20 70 6f 73 69 74 69 76 65 20 67 65 6e 65 20 66 75 6e 63 74 69 6f 6e 61 | sures.of.positive.gene.functiona |
46c0 | 6c 20 61 73 73 6f 63 69 61 74 69 6f 6e 73 0a 75 73 69 6e 67 20 57 6f 72 6d 4e 65 74 20 76 2e 33 | l.associations.using.WormNet.v.3 |
46e0 | 2d 47 53 2e 0a 0a 44 61 74 61 20 66 72 6f 6d 3a 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 69 6e 65 | -GS...Data.from:.https://www.ine |
4700 | 74 62 69 6f 2e 6f 72 67 2f 77 6f 72 6d 6e 65 74 2f 64 6f 77 6e 6c 6f 61 64 6e 65 74 77 6f 72 6b | tbio.org/wormnet/downloadnetwork |
4720 | 2e 70 68 70 0a 22 22 22 0a 0a 66 72 6f 6d 20 72 61 6e 64 6f 6d 20 69 6d 70 6f 72 74 20 73 61 6d | .php."""..from.random.import.sam |
4740 | 70 6c 65 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 | ple.import.networkx.as.nx.import |
4760 | 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 0a 23 20 47 6f 6c | .matplotlib.pyplot.as.plt..#.Gol |
4780 | 64 20 73 74 61 6e 64 61 72 64 20 64 61 74 61 20 6f 66 20 70 6f 73 69 74 69 76 65 20 67 65 6e 65 | d.standard.data.of.positive.gene |
47a0 | 20 66 75 6e 63 74 69 6f 6e 61 6c 20 61 73 73 6f 63 69 61 74 69 6f 6e 73 0a 23 20 66 72 6f 6d 20 | .functional.associations.#.from. |
47c0 | 68 74 74 70 73 3a 2f 2f 77 77 77 2e 69 6e 65 74 62 69 6f 2e 6f 72 67 2f 77 6f 72 6d 6e 65 74 2f | https://www.inetbio.org/wormnet/ |
47e0 | 64 6f 77 6e 6c 6f 61 64 6e 65 74 77 6f 72 6b 2e 70 68 70 0a 47 20 3d 20 6e 78 2e 72 65 61 64 5f | downloadnetwork.php.G.=.nx.read_ |
4800 | 65 64 67 65 6c 69 73 74 28 22 57 6f 72 6d 4e 65 74 2e 76 33 2e 62 65 6e 63 68 6d 61 72 6b 2e 74 | edgelist("WormNet.v3.benchmark.t |
4820 | 78 74 22 29 0a 0a 23 20 72 65 6d 6f 76 65 20 72 61 6e 64 6f 6d 6c 79 20 73 65 6c 65 63 74 65 64 | xt")..#.remove.randomly.selected |
4840 | 20 6e 6f 64 65 73 20 28 74 6f 20 6d 61 6b 65 20 65 78 61 6d 70 6c 65 20 66 61 73 74 29 0a 6e 75 | .nodes.(to.make.example.fast).nu |
4860 | 6d 5f 74 6f 5f 72 65 6d 6f 76 65 20 3d 20 69 6e 74 28 6c 65 6e 28 47 29 20 2f 20 31 2e 35 29 0a | m_to_remove.=.int(len(G)./.1.5). |
4880 | 6e 6f 64 65 73 20 3d 20 73 61 6d 70 6c 65 28 6c 69 73 74 28 47 2e 6e 6f 64 65 73 29 2c 20 6e 75 | nodes.=.sample(list(G.nodes),.nu |
48a0 | 6d 5f 74 6f 5f 72 65 6d 6f 76 65 29 0a 47 2e 72 65 6d 6f 76 65 5f 6e 6f 64 65 73 5f 66 72 6f 6d | m_to_remove).G.remove_nodes_from |
48c0 | 28 6e 6f 64 65 73 29 0a 0a 23 20 72 65 6d 6f 76 65 20 6c 6f 77 2d 64 65 67 72 65 65 20 6e 6f 64 | (nodes)..#.remove.low-degree.nod |
48e0 | 65 73 0a 6c 6f 77 5f 64 65 67 72 65 65 20 3d 20 5b 6e 20 66 6f 72 20 6e 2c 20 64 20 69 6e 20 47 | es.low_degree.=.[n.for.n,.d.in.G |
4900 | 2e 64 65 67 72 65 65 28 29 20 69 66 20 64 20 3c 20 31 30 5d 0a 47 2e 72 65 6d 6f 76 65 5f 6e 6f | .degree().if.d.<.10].G.remove_no |
4920 | 64 65 73 5f 66 72 6f 6d 28 6c 6f 77 5f 64 65 67 72 65 65 29 0a 0a 23 20 6c 61 72 67 65 73 74 20 | des_from(low_degree)..#.largest. |
4940 | 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 0a 63 6f 6d 70 6f 6e 65 6e 74 73 20 3d | connected.component.components.= |
4960 | 20 6e 78 2e 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 0a 6c 61 72 67 | .nx.connected_components(G).larg |
4980 | 65 73 74 5f 63 6f 6d 70 6f 6e 65 6e 74 20 3d 20 6d 61 78 28 63 6f 6d 70 6f 6e 65 6e 74 73 2c 20 | est_component.=.max(components,. |
49a0 | 6b 65 79 3d 6c 65 6e 29 0a 48 20 3d 20 47 2e 73 75 62 67 72 61 70 68 28 6c 61 72 67 65 73 74 5f | key=len).H.=.G.subgraph(largest_ |
49c0 | 63 6f 6d 70 6f 6e 65 6e 74 29 0a 0a 23 20 63 6f 6d 70 75 74 65 20 63 65 6e 74 72 61 6c 69 74 79 | component)..#.compute.centrality |
49e0 | 0a 63 65 6e 74 72 61 6c 69 74 79 20 3d 20 6e 78 2e 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e | .centrality.=.nx.betweenness_cen |
4a00 | 74 72 61 6c 69 74 79 28 48 2c 20 6b 3d 31 30 2c 20 65 6e 64 70 6f 69 6e 74 73 3d 54 72 75 65 29 | trality(H,.k=10,.endpoints=True) |
4a20 | 0a 0a 23 20 63 6f 6d 70 75 74 65 20 63 6f 6d 6d 75 6e 69 74 79 20 73 74 72 75 63 74 75 72 65 0a | ..#.compute.community.structure. |
4a40 | 6c 70 63 20 3d 20 6e 78 2e 63 6f 6d 6d 75 6e 69 74 79 2e 6c 61 62 65 6c 5f 70 72 6f 70 61 67 61 | lpc.=.nx.community.label_propaga |
4a60 | 74 69 6f 6e 5f 63 6f 6d 6d 75 6e 69 74 69 65 73 28 48 29 0a 63 6f 6d 6d 75 6e 69 74 79 5f 69 6e | tion_communities(H).community_in |
4a80 | 64 65 78 20 3d 20 7b 6e 3a 20 69 20 66 6f 72 20 69 2c 20 63 6f 6d 20 69 6e 20 65 6e 75 6d 65 72 | dex.=.{n:.i.for.i,.com.in.enumer |
4aa0 | 61 74 65 28 6c 70 63 29 20 66 6f 72 20 6e 20 69 6e 20 63 6f 6d 7d 0a 0a 23 23 23 23 20 64 72 61 | ate(lpc).for.n.in.com}..####.dra |
4ac0 | 77 20 67 72 61 70 68 20 23 23 23 23 0a 66 69 67 2c 20 61 78 20 3d 20 70 6c 74 2e 73 75 62 70 6c | w.graph.####.fig,.ax.=.plt.subpl |
4ae0 | 6f 74 73 28 66 69 67 73 69 7a 65 3d 28 32 30 2c 20 31 35 29 29 0a 70 6f 73 20 3d 20 6e 78 2e 73 | ots(figsize=(20,.15)).pos.=.nx.s |
4b00 | 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 48 2c 20 6b 3d 30 2e 31 35 2c 20 73 65 65 64 3d 34 35 37 | pring_layout(H,.k=0.15,.seed=457 |
4b20 | 32 33 32 31 29 0a 6e 6f 64 65 5f 63 6f 6c 6f 72 20 3d 20 5b 63 6f 6d 6d 75 6e 69 74 79 5f 69 6e | 2321).node_color.=.[community_in |
4b40 | 64 65 78 5b 6e 5d 20 66 6f 72 20 6e 20 69 6e 20 48 5d 0a 6e 6f 64 65 5f 73 69 7a 65 20 3d 20 5b | dex[n].for.n.in.H].node_size.=.[ |
4b60 | 76 20 2a 20 32 30 30 30 30 20 66 6f 72 20 76 20 69 6e 20 63 65 6e 74 72 61 6c 69 74 79 2e 76 61 | v.*.20000.for.v.in.centrality.va |
4b80 | 6c 75 65 73 28 29 5d 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 28 0a 20 20 20 20 48 2c | lues()].nx.draw_networkx(.....H, |
4ba0 | 0a 20 20 20 20 70 6f 73 3d 70 6f 73 2c 0a 20 20 20 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 | .....pos=pos,.....with_labels=Fa |
4bc0 | 6c 73 65 2c 0a 20 20 20 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 6e 6f 64 65 5f 63 6f 6c 6f 72 2c 0a | lse,.....node_color=node_color,. |
4be0 | 20 20 20 20 6e 6f 64 65 5f 73 69 7a 65 3d 6e 6f 64 65 5f 73 69 7a 65 2c 0a 20 20 20 20 65 64 67 | ....node_size=node_size,.....edg |
4c00 | 65 5f 63 6f 6c 6f 72 3d 22 67 61 69 6e 73 62 6f 72 6f 22 2c 0a 20 20 20 20 61 6c 70 68 61 3d 30 | e_color="gainsboro",.....alpha=0 |
4c20 | 2e 34 2c 0a 29 0a 0a 23 20 54 69 74 6c 65 2f 6c 65 67 65 6e 64 0a 66 6f 6e 74 20 3d 20 7b 22 63 | .4,.)..#.Title/legend.font.=.{"c |
4c40 | 6f 6c 6f 72 22 3a 20 22 6b 22 2c 20 22 66 6f 6e 74 77 65 69 67 68 74 22 3a 20 22 62 6f 6c 64 22 | olor":."k",."fontweight":."bold" |
4c60 | 2c 20 22 66 6f 6e 74 73 69 7a 65 22 3a 20 32 30 7d 0a 61 78 2e 73 65 74 5f 74 69 74 6c 65 28 22 | ,."fontsize":.20}.ax.set_title(" |
4c80 | 47 65 6e 65 20 66 75 6e 63 74 69 6f 6e 61 6c 20 61 73 73 6f 63 69 61 74 69 6f 6e 20 6e 65 74 77 | Gene.functional.association.netw |
4ca0 | 6f 72 6b 20 28 43 2e 20 65 6c 65 67 61 6e 73 29 22 2c 20 66 6f 6e 74 29 0a 23 20 43 68 61 6e 67 | ork.(C..elegans)",.font).#.Chang |
4cc0 | 65 20 66 6f 6e 74 20 63 6f 6c 6f 72 20 66 6f 72 20 6c 65 67 65 6e 64 0a 66 6f 6e 74 5b 22 63 6f | e.font.color.for.legend.font["co |
4ce0 | 6c 6f 72 22 5d 20 3d 20 22 72 22 0a 0a 61 78 2e 74 65 78 74 28 0a 20 20 20 20 30 2e 38 30 2c 0a | lor"].=."r"..ax.text(.....0.80,. |
4d00 | 20 20 20 20 30 2e 31 30 2c 0a 20 20 20 20 22 6e 6f 64 65 20 63 6f 6c 6f 72 20 3d 20 63 6f 6d 6d | ....0.10,....."node.color.=.comm |
4d20 | 75 6e 69 74 79 20 73 74 72 75 63 74 75 72 65 22 2c 0a 20 20 20 20 68 6f 72 69 7a 6f 6e 74 61 6c | unity.structure",.....horizontal |
4d40 | 61 6c 69 67 6e 6d 65 6e 74 3d 22 63 65 6e 74 65 72 22 2c 0a 20 20 20 20 74 72 61 6e 73 66 6f 72 | alignment="center",.....transfor |
4d60 | 6d 3d 61 78 2e 74 72 61 6e 73 41 78 65 73 2c 0a 20 20 20 20 66 6f 6e 74 64 69 63 74 3d 66 6f 6e | m=ax.transAxes,.....fontdict=fon |
4d80 | 74 2c 0a 29 0a 61 78 2e 74 65 78 74 28 0a 20 20 20 20 30 2e 38 30 2c 0a 20 20 20 20 30 2e 30 36 | t,.).ax.text(.....0.80,.....0.06 |
4da0 | 2c 0a 20 20 20 20 22 6e 6f 64 65 20 73 69 7a 65 20 3d 20 62 65 74 77 65 65 6e 6e 65 73 73 20 63 | ,....."node.size.=.betweenness.c |
4dc0 | 65 6e 74 72 61 6c 69 74 79 22 2c 0a 20 20 20 20 68 6f 72 69 7a 6f 6e 74 61 6c 61 6c 69 67 6e 6d | entrality",.....horizontalalignm |
4de0 | 65 6e 74 3d 22 63 65 6e 74 65 72 22 2c 0a 20 20 20 20 74 72 61 6e 73 66 6f 72 6d 3d 61 78 2e 74 | ent="center",.....transform=ax.t |
4e00 | 72 61 6e 73 41 78 65 73 2c 0a 20 20 20 20 66 6f 6e 74 64 69 63 74 3d 66 6f 6e 74 2c 0a 29 0a 0a | ransAxes,.....fontdict=font,.).. |
4e20 | 23 20 52 65 73 69 7a 65 20 66 69 67 75 72 65 20 66 6f 72 20 6c 61 62 65 6c 20 72 65 61 64 61 62 | #.Resize.figure.for.label.readab |
4e40 | 69 6c 69 74 79 0a 61 78 2e 6d 61 72 67 69 6e 73 28 30 2e 31 2c 20 30 2e 30 35 29 0a 66 69 67 2e | ility.ax.margins(0.1,.0.05).fig. |
4e60 | 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 70 | tight_layout().plt.axis("off").p |
4e80 | 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 0e 7b 57 56 1c 5a 38 01 a9 04 00 00 | lt.show().PK.........{WV.Z8..... |
4ea0 | a9 04 00 00 1d 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 64 61 76 69 73 5f 63 6c | ........algorithms/plot_davis_cl |
4ec0 | 75 62 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 44 61 76 69 73 20 43 6c 75 62 0a 3d | ub.py""".==========.Davis.Club.= |
4ee0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 44 61 76 69 73 20 53 6f 75 74 68 65 72 6e 20 43 6c 75 62 20 57 | =========..Davis.Southern.Club.W |
4f00 | 6f 6d 65 6e 0a 0a 53 68 6f 77 73 20 68 6f 77 20 74 6f 20 6d 61 6b 65 20 75 6e 69 70 61 72 74 69 | omen..Shows.how.to.make.uniparti |
4f20 | 74 65 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 67 72 61 70 68 20 61 6e 64 20 | te.projections.of.the.graph.and. |
4f40 | 63 6f 6d 70 75 74 65 20 74 68 65 0a 70 72 6f 70 65 72 74 69 65 73 20 6f 66 20 74 68 6f 73 65 20 | compute.the.properties.of.those. |
4f60 | 67 72 61 70 68 73 2e 0a 0a 54 68 65 73 65 20 64 61 74 61 20 77 65 72 65 20 63 6f 6c 6c 65 63 74 | graphs...These.data.were.collect |
4f80 | 65 64 20 62 79 20 44 61 76 69 73 20 65 74 20 61 6c 2e 20 69 6e 20 74 68 65 20 31 39 33 30 73 2e | ed.by.Davis.et.al..in.the.1930s. |
4fa0 | 0a 54 68 65 79 20 72 65 70 72 65 73 65 6e 74 20 6f 62 73 65 72 76 65 64 20 61 74 74 65 6e 64 61 | .They.represent.observed.attenda |
4fc0 | 6e 63 65 20 61 74 20 31 34 20 73 6f 63 69 61 6c 20 65 76 65 6e 74 73 20 62 79 20 31 38 20 53 6f | nce.at.14.social.events.by.18.So |
4fe0 | 75 74 68 65 72 6e 20 77 6f 6d 65 6e 2e 0a 54 68 65 20 67 72 61 70 68 20 69 73 20 62 69 70 61 72 | uthern.women..The.graph.is.bipar |
5000 | 74 69 74 65 20 28 63 6c 75 62 73 2c 20 77 6f 6d 65 6e 29 2e 0a 22 22 22 0a 69 6d 70 6f 72 74 20 | tite.(clubs,.women)..""".import. |
5020 | 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 | matplotlib.pyplot.as.plt.import. |
5040 | 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 66 72 6f 6d 20 6e 65 74 77 6f 72 6b 78 2e 61 6c 67 | networkx.as.nx.from.networkx.alg |
5060 | 6f 72 69 74 68 6d 73 20 69 6d 70 6f 72 74 20 62 69 70 61 72 74 69 74 65 0a 0a 47 20 3d 20 6e 78 | orithms.import.bipartite..G.=.nx |
5080 | 2e 64 61 76 69 73 5f 73 6f 75 74 68 65 72 6e 5f 77 6f 6d 65 6e 5f 67 72 61 70 68 28 29 0a 77 6f | .davis_southern_women_graph().wo |
50a0 | 6d 65 6e 20 3d 20 47 2e 67 72 61 70 68 5b 22 74 6f 70 22 5d 0a 63 6c 75 62 73 20 3d 20 47 2e 67 | men.=.G.graph["top"].clubs.=.G.g |
50c0 | 72 61 70 68 5b 22 62 6f 74 74 6f 6d 22 5d 0a 0a 70 72 69 6e 74 28 22 42 69 61 64 6a 61 63 65 6e | raph["bottom"]..print("Biadjacen |
50e0 | 63 79 20 6d 61 74 72 69 78 22 29 0a 70 72 69 6e 74 28 62 69 70 61 72 74 69 74 65 2e 62 69 61 64 | cy.matrix").print(bipartite.biad |
5100 | 6a 61 63 65 6e 63 79 5f 6d 61 74 72 69 78 28 47 2c 20 77 6f 6d 65 6e 2c 20 63 6c 75 62 73 29 29 | jacency_matrix(G,.women,.clubs)) |
5120 | 0a 0a 23 20 70 72 6f 6a 65 63 74 20 62 69 70 61 72 74 69 74 65 20 67 72 61 70 68 20 6f 6e 74 6f | ..#.project.bipartite.graph.onto |
5140 | 20 77 6f 6d 65 6e 20 6e 6f 64 65 73 0a 57 20 3d 20 62 69 70 61 72 74 69 74 65 2e 70 72 6f 6a 65 | .women.nodes.W.=.bipartite.proje |
5160 | 63 74 65 64 5f 67 72 61 70 68 28 47 2c 20 77 6f 6d 65 6e 29 0a 70 72 69 6e 74 28 29 0a 70 72 69 | cted_graph(G,.women).print().pri |
5180 | 6e 74 28 22 23 46 72 69 65 6e 64 73 2c 20 4d 65 6d 62 65 72 22 29 0a 66 6f 72 20 77 20 69 6e 20 | nt("#Friends,.Member").for.w.in. |
51a0 | 77 6f 6d 65 6e 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b 57 2e 64 65 67 72 65 65 28 77 29 7d | women:.....print(f"{W.degree(w)} |
51c0 | 20 7b 77 7d 22 29 0a 0a 23 20 70 72 6f 6a 65 63 74 20 62 69 70 61 72 74 69 74 65 20 67 72 61 70 | .{w}")..#.project.bipartite.grap |
51e0 | 68 20 6f 6e 74 6f 20 77 6f 6d 65 6e 20 6e 6f 64 65 73 20 6b 65 65 70 69 6e 67 20 6e 75 6d 62 65 | h.onto.women.nodes.keeping.numbe |
5200 | 72 20 6f 66 20 63 6f 2d 6f 63 63 75 72 65 6e 63 65 0a 23 20 74 68 65 20 64 65 67 72 65 65 20 63 | r.of.co-occurence.#.the.degree.c |
5220 | 6f 6d 70 75 74 65 64 20 69 73 20 77 65 69 67 68 74 65 64 20 61 6e 64 20 63 6f 75 6e 74 73 20 74 | omputed.is.weighted.and.counts.t |
5240 | 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 73 68 61 72 65 64 20 63 6f 6e 74 61 63 | he.total.number.of.shared.contac |
5260 | 74 73 0a 57 20 3d 20 62 69 70 61 72 74 69 74 65 2e 77 65 69 67 68 74 65 64 5f 70 72 6f 6a 65 63 | ts.W.=.bipartite.weighted_projec |
5280 | 74 65 64 5f 67 72 61 70 68 28 47 2c 20 77 6f 6d 65 6e 29 0a 70 72 69 6e 74 28 29 0a 70 72 69 6e | ted_graph(G,.women).print().prin |
52a0 | 74 28 22 23 46 72 69 65 6e 64 20 6d 65 65 74 69 6e 67 73 2c 20 4d 65 6d 62 65 72 22 29 0a 66 6f | t("#Friend.meetings,.Member").fo |
52c0 | 72 20 77 20 69 6e 20 77 6f 6d 65 6e 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b 57 2e 64 65 67 | r.w.in.women:.....print(f"{W.deg |
52e0 | 72 65 65 28 77 2c 20 77 65 69 67 68 74 3d 27 77 65 69 67 68 74 27 29 7d 20 7b 77 7d 22 29 0a 0a | ree(w,.weight='weight')}.{w}").. |
5300 | 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 3d 36 | pos.=.nx.spring_layout(G,.seed=6 |
5320 | 34 38 29 20 20 23 20 53 65 65 64 20 6c 61 79 6f 75 74 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 | 48)..#.Seed.layout.for.reproduci |
5340 | 62 6c 65 20 6e 6f 64 65 20 70 6f 73 69 74 69 6f 6e 73 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f | ble.node.positions.nx.draw(G,.po |
5360 | 73 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 0d 7b 57 56 39 4e 07 68 | s).plt.show().PK.........{WV9N.h |
5380 | a8 0d 00 00 a8 0d 00 00 1b 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 63 69 72 63 | ............algorithms/plot_circ |
53a0 | 75 69 74 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 0a 43 69 72 63 75 69 74 73 0a 3d 3d 3d | uits.py""".========.Circuits.=== |
53c0 | 3d 3d 3d 3d 3d 0a 0a 43 6f 6e 76 65 72 74 20 61 20 42 6f 6f 6c 65 61 6e 20 63 69 72 63 75 69 74 | =====..Convert.a.Boolean.circuit |
53e0 | 20 74 6f 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 20 42 6f 6f 6c 65 61 6e 20 66 6f 72 6d 75 6c | .to.an.equivalent.Boolean.formul |
5400 | 61 2e 0a 0a 41 20 42 6f 6f 6c 65 61 6e 20 63 69 72 63 75 69 74 20 63 61 6e 20 62 65 20 65 78 70 | a...A.Boolean.circuit.can.be.exp |
5420 | 6f 6e 65 6e 74 69 61 6c 6c 79 20 6d 6f 72 65 20 65 78 70 72 65 73 73 69 76 65 20 74 68 61 6e 20 | onentially.more.expressive.than. |
5440 | 61 6e 0a 65 71 75 69 76 61 6c 65 6e 74 20 66 6f 72 6d 75 6c 61 20 69 6e 20 74 68 65 20 77 6f 72 | an.equivalent.formula.in.the.wor |
5460 | 73 74 20 63 61 73 65 2c 20 73 69 6e 63 65 20 74 68 65 20 63 69 72 63 75 69 74 20 63 61 6e 20 72 | st.case,.since.the.circuit.can.r |
5480 | 65 75 73 65 0a 73 75 62 63 69 72 63 75 69 74 73 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 2c | euse.subcircuits.multiple.times, |
54a0 | 20 77 68 65 72 65 61 73 20 61 20 66 6f 72 6d 75 6c 61 20 63 61 6e 6e 6f 74 20 72 65 75 73 65 20 | .whereas.a.formula.cannot.reuse. |
54c0 | 73 75 62 66 6f 72 6d 75 6c 61 73 0a 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63 65 2e 20 54 68 75 73 | subformulas.more.than.once..Thus |
54e0 | 20 63 72 65 61 74 69 6e 67 20 61 20 42 6f 6f 6c 65 61 6e 20 66 6f 72 6d 75 6c 61 20 66 72 6f 6d | .creating.a.Boolean.formula.from |
5500 | 20 61 20 42 6f 6f 6c 65 61 6e 20 63 69 72 63 75 69 74 0a 69 6e 20 74 68 69 73 20 77 61 79 20 6d | .a.Boolean.circuit.in.this.way.m |
5520 | 61 79 20 62 65 20 69 6e 66 65 61 73 69 62 6c 65 20 69 66 20 74 68 65 20 63 69 72 63 75 69 74 20 | ay.be.infeasible.if.the.circuit. |
5540 | 69 73 20 6c 61 72 67 65 2e 0a 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 | is.large...""".import.matplotlib |
5560 | 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 | .pyplot.as.plt.import.networkx.a |
5580 | 73 20 6e 78 0a 0a 0a 64 65 66 20 63 69 72 63 75 69 74 5f 74 6f 5f 66 6f 72 6d 75 6c 61 28 63 69 | s.nx...def.circuit_to_formula(ci |
55a0 | 72 63 75 69 74 29 3a 0a 20 20 20 20 23 20 43 6f 6e 76 65 72 74 20 74 68 65 20 63 69 72 63 75 69 | rcuit):.....#.Convert.the.circui |
55c0 | 74 20 74 6f 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 20 66 6f 72 6d 75 6c 61 2e 0a 20 20 20 20 | t.to.an.equivalent.formula...... |
55e0 | 66 6f 72 6d 75 6c 61 20 3d 20 6e 78 2e 64 61 67 5f 74 6f 5f 62 72 61 6e 63 68 69 6e 67 28 63 69 | formula.=.nx.dag_to_branching(ci |
5600 | 72 63 75 69 74 29 0a 20 20 20 20 23 20 54 72 61 6e 73 66 65 72 20 74 68 65 20 6f 70 65 72 61 74 | rcuit).....#.Transfer.the.operat |
5620 | 6f 72 20 6f 72 20 76 61 72 69 61 62 6c 65 20 6c 61 62 65 6c 73 20 66 6f 72 20 65 61 63 68 20 6e | or.or.variable.labels.for.each.n |
5640 | 6f 64 65 20 66 72 6f 6d 20 74 68 65 0a 20 20 20 20 23 20 63 69 72 63 75 69 74 20 74 6f 20 74 68 | ode.from.the.....#.circuit.to.th |
5660 | 65 20 66 6f 72 6d 75 6c 61 2e 0a 20 20 20 20 66 6f 72 20 76 20 69 6e 20 66 6f 72 6d 75 6c 61 3a | e.formula......for.v.in.formula: |
5680 | 0a 20 20 20 20 20 20 20 20 73 6f 75 72 63 65 20 3d 20 66 6f 72 6d 75 6c 61 2e 6e 6f 64 65 73 5b | .........source.=.formula.nodes[ |
56a0 | 76 5d 5b 22 73 6f 75 72 63 65 22 5d 0a 20 20 20 20 20 20 20 20 66 6f 72 6d 75 6c 61 2e 6e 6f 64 | v]["source"].........formula.nod |
56c0 | 65 73 5b 76 5d 5b 22 6c 61 62 65 6c 22 5d 20 3d 20 63 69 72 63 75 69 74 2e 6e 6f 64 65 73 5b 73 | es[v]["label"].=.circuit.nodes[s |
56e0 | 6f 75 72 63 65 5d 5b 22 6c 61 62 65 6c 22 5d 0a 20 20 20 20 72 65 74 75 72 6e 20 66 6f 72 6d 75 | ource]["label"].....return.formu |
5700 | 6c 61 0a 0a 0a 64 65 66 20 66 6f 72 6d 75 6c 61 5f 74 6f 5f 73 74 72 69 6e 67 28 66 6f 72 6d 75 | la...def.formula_to_string(formu |
5720 | 6c 61 29 3a 0a 20 20 20 20 64 65 66 20 5f 74 6f 5f 73 74 72 69 6e 67 28 66 6f 72 6d 75 6c 61 2c | la):.....def._to_string(formula, |
5740 | 20 72 6f 6f 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 49 66 20 74 68 65 72 65 20 61 72 65 20 6e | .root):.........#.If.there.are.n |
5760 | 6f 20 63 68 69 6c 64 72 65 6e 2c 20 74 68 69 73 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 6e | o.children,.this.is.a.variable.n |
5780 | 6f 64 65 2e 0a 20 20 20 20 20 20 20 20 6c 61 62 65 6c 20 3d 20 66 6f 72 6d 75 6c 61 2e 6e 6f 64 | ode..........label.=.formula.nod |
57a0 | 65 73 5b 72 6f 6f 74 5d 5b 22 6c 61 62 65 6c 22 5d 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 | es[root]["label"].........if.not |
57c0 | 20 66 6f 72 6d 75 6c 61 5b 72 6f 6f 74 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 | .formula[root]:.............retu |
57e0 | 72 6e 20 6c 61 62 65 6c 0a 20 20 20 20 20 20 20 20 23 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 | rn.label.........#.Otherwise,.th |
5800 | 69 73 20 69 73 20 61 6e 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 20 20 20 20 20 20 63 68 69 6c 64 | is.is.an.operator..........child |
5820 | 72 65 6e 20 3d 20 66 6f 72 6d 75 6c 61 5b 72 6f 6f 74 5d 0a 20 20 20 20 20 20 20 20 23 20 49 66 | ren.=.formula[root].........#.If |
5840 | 20 6f 6e 65 20 63 68 69 6c 64 2c 20 74 68 65 20 6c 61 62 65 6c 20 6d 75 73 74 20 62 65 20 61 20 | .one.child,.the.label.must.be.a. |
5860 | 4e 4f 54 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 63 68 69 | NOT.operator..........if.len(chi |
5880 | 6c 64 72 65 6e 29 20 3d 3d 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c 64 20 3d | ldren).==.1:.............child.= |
58a0 | 20 6e 78 2e 75 74 69 6c 73 2e 61 72 62 69 74 72 61 72 79 5f 65 6c 65 6d 65 6e 74 28 63 68 69 6c | .nx.utils.arbitrary_element(chil |
58c0 | 64 72 65 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 22 7b 6c 61 62 65 | dren).............return.f"{labe |
58e0 | 6c 7d 28 7b 5f 74 6f 5f 73 74 72 69 6e 67 28 66 6f 72 6d 75 6c 61 2c 20 63 68 69 6c 64 29 7d 29 | l}({_to_string(formula,.child)}) |
5900 | 22 0a 20 20 20 20 20 20 20 20 23 20 4e 42 20 22 6c 65 66 74 22 20 61 6e 64 20 22 72 69 67 68 74 | ".........#.NB."left".and."right |
5920 | 22 20 68 65 72 65 20 61 72 65 20 61 20 6c 69 74 74 6c 65 20 6d 69 73 6c 65 61 64 69 6e 67 3a 20 | ".here.are.a.little.misleading:. |
5940 | 74 68 65 72 65 20 69 73 0a 20 20 20 20 20 20 20 20 23 20 6e 6f 20 6f 72 64 65 72 20 6f 6e 20 74 | there.is.........#.no.order.on.t |
5960 | 68 65 20 63 68 69 6c 64 72 65 6e 20 6f 66 20 61 20 6e 6f 64 65 2e 20 54 68 61 74 27 73 20 6f 6b | he.children.of.a.node..That's.ok |
5980 | 61 79 20 62 65 63 61 75 73 65 20 74 68 65 0a 20 20 20 20 20 20 20 20 23 20 42 6f 6f 6c 65 61 6e | ay.because.the.........#.Boolean |
59a0 | 20 41 4e 44 20 61 6e 64 20 4f 52 20 6f 70 65 72 61 74 6f 72 73 20 61 72 65 20 73 79 6d 6d 65 74 | .AND.and.OR.operators.are.symmet |
59c0 | 72 69 63 2e 20 49 74 20 6a 75 73 74 20 6d 65 61 6e 73 20 74 68 61 74 0a 20 20 20 20 20 20 20 20 | ric..It.just.means.that......... |
59e0 | 23 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20 74 68 65 20 6f 70 65 72 61 6e 64 73 20 63 61 6e 6e | #.the.order.of.the.operands.cann |
5a00 | 6f 74 20 62 65 20 70 72 65 64 69 63 74 65 64 20 61 6e 64 20 68 65 6e 63 65 20 74 68 65 0a 20 20 | ot.be.predicted.and.hence.the... |
5a20 | 20 20 20 20 20 20 23 20 66 75 6e 63 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 6e 65 63 65 73 73 | ......#.function.does.not.necess |
5a40 | 61 72 69 6c 79 20 62 65 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 6f 6e 20 65 76 65 | arily.behave.the.same.way.on.eve |
5a60 | 72 79 0a 20 20 20 20 20 20 20 20 23 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 | ry.........#.invocation......... |
5a80 | 20 6c 65 66 74 2c 20 72 69 67 68 74 20 3d 20 66 6f 72 6d 75 6c 61 5b 72 6f 6f 74 5d 0a 20 20 20 | .left,.right.=.formula[root].... |
5aa0 | 20 20 20 20 20 6c 65 66 74 5f 73 75 62 66 6f 72 6d 75 6c 61 20 3d 20 5f 74 6f 5f 73 74 72 69 6e | .....left_subformula.=._to_strin |
5ac0 | 67 28 66 6f 72 6d 75 6c 61 2c 20 6c 65 66 74 29 0a 20 20 20 20 20 20 20 20 72 69 67 68 74 5f 73 | g(formula,.left).........right_s |
5ae0 | 75 62 66 6f 72 6d 75 6c 61 20 3d 20 5f 74 6f 5f 73 74 72 69 6e 67 28 66 6f 72 6d 75 6c 61 2c 20 | ubformula.=._to_string(formula,. |
5b00 | 72 69 67 68 74 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 22 28 7b 6c 65 66 74 5f 73 | right).........return.f"({left_s |
5b20 | 75 62 66 6f 72 6d 75 6c 61 7d 20 7b 6c 61 62 65 6c 7d 20 7b 72 69 67 68 74 5f 73 75 62 66 6f 72 | ubformula}.{label}.{right_subfor |
5b40 | 6d 75 6c 61 7d 29 22 0a 0a 20 20 20 20 72 6f 6f 74 20 3d 20 6e 65 78 74 28 76 20 66 6f 72 20 76 | mula})"......root.=.next(v.for.v |
5b60 | 2c 20 64 20 69 6e 20 66 6f 72 6d 75 6c 61 2e 69 6e 5f 64 65 67 72 65 65 28 29 20 69 66 20 64 20 | ,.d.in.formula.in_degree().if.d. |
5b80 | 3d 3d 20 30 29 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 74 6f 5f 73 74 72 69 6e 67 28 66 6f 72 6d | ==.0).....return._to_string(form |
5ba0 | 75 6c 61 2c 20 72 6f 6f 74 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ula,.root)...################### |
5bc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
5be0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 43 | ############################.#.C |
5c00 | 72 65 61 74 65 20 61 6e 20 65 78 61 6d 70 6c 65 20 42 6f 6f 6c 65 61 6e 20 63 69 72 63 75 69 74 | reate.an.example.Boolean.circuit |
5c20 | 2e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#.---------------------------- |
5c40 | 2d 2d 2d 2d 2d 2d 0a 23 0a 23 20 54 68 69 73 20 63 69 72 63 75 69 74 20 68 61 73 20 61 20 e2 88 | ------.#.#.This.circuit.has.a... |
5c60 | a7 20 61 74 20 74 68 65 20 6f 75 74 70 75 74 20 61 6e 64 20 74 77 6f 20 e2 88 a8 73 20 61 74 20 | ..at.the.output.and.two....s.at. |
5c80 | 74 68 65 20 6e 65 78 74 20 6c 61 79 65 72 2e 0a 23 20 54 68 65 20 74 68 69 72 64 20 6c 61 79 65 | the.next.layer..#.The.third.laye |
5ca0 | 72 20 68 61 73 20 61 20 76 61 72 69 61 62 6c 65 20 78 20 74 68 61 74 20 61 70 70 65 61 72 73 20 | r.has.a.variable.x.that.appears. |
5cc0 | 69 6e 20 74 68 65 20 6c 65 66 74 20 e2 88 a8 2c 20 61 0a 23 20 76 61 72 69 61 62 6c 65 20 79 20 | in.the.left....,.a.#.variable.y. |
5ce0 | 74 68 61 74 20 61 70 70 65 61 72 73 20 69 6e 20 62 6f 74 68 20 74 68 65 20 6c 65 66 74 20 61 6e | that.appears.in.both.the.left.an |
5d00 | 64 20 72 69 67 68 74 20 e2 88 a8 73 2c 20 61 6e 64 20 61 0a 23 20 6e 65 67 61 74 69 6f 6e 20 66 | d.right....s,.and.a.#.negation.f |
5d20 | 6f 72 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 7a 20 74 68 61 74 20 61 70 70 65 61 72 73 20 61 | or.the.variable.z.that.appears.a |
5d40 | 73 20 74 68 65 20 73 6f 6c 65 20 6e 6f 64 65 20 69 6e 20 74 68 65 0a 23 20 66 6f 75 72 74 68 20 | s.the.sole.node.in.the.#.fourth. |
5d60 | 6c 61 79 65 72 2e 0a 63 69 72 63 75 69 74 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 29 0a 23 20 | layer..circuit.=.nx.DiGraph().#. |
5d80 | 4c 61 79 65 72 20 30 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 6e 6f 64 65 28 30 2c 20 6c 61 62 65 | Layer.0.circuit.add_node(0,.labe |
5da0 | 6c 3d 22 e2 88 a7 22 2c 20 6c 61 79 65 72 3d 30 29 0a 23 20 4c 61 79 65 72 20 31 0a 63 69 72 63 | l="...",.layer=0).#.Layer.1.circ |
5dc0 | 75 69 74 2e 61 64 64 5f 6e 6f 64 65 28 31 2c 20 6c 61 62 65 6c 3d 22 e2 88 a8 22 2c 20 6c 61 79 | uit.add_node(1,.label="...",.lay |
5de0 | 65 72 3d 31 29 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 6e 6f 64 65 28 32 2c 20 6c 61 62 65 6c 3d | er=1).circuit.add_node(2,.label= |
5e00 | 22 e2 88 a8 22 2c 20 6c 61 79 65 72 3d 31 29 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 65 64 67 65 | "...",.layer=1).circuit.add_edge |
5e20 | 28 30 2c 20 31 29 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 65 64 67 65 28 30 2c 20 32 29 0a 23 20 | (0,.1).circuit.add_edge(0,.2).#. |
5e40 | 4c 61 79 65 72 20 32 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 6e 6f 64 65 28 33 2c 20 6c 61 62 65 | Layer.2.circuit.add_node(3,.labe |
5e60 | 6c 3d 22 78 22 2c 20 6c 61 79 65 72 3d 32 29 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 6e 6f 64 65 | l="x",.layer=2).circuit.add_node |
5e80 | 28 34 2c 20 6c 61 62 65 6c 3d 22 79 22 2c 20 6c 61 79 65 72 3d 32 29 0a 63 69 72 63 75 69 74 2e | (4,.label="y",.layer=2).circuit. |
5ea0 | 61 64 64 5f 6e 6f 64 65 28 35 2c 20 6c 61 62 65 6c 3d 22 c2 ac 22 2c 20 6c 61 79 65 72 3d 32 29 | add_node(5,.label="..",.layer=2) |
5ec0 | 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 65 64 67 65 28 31 2c 20 33 29 0a 63 69 72 63 75 69 74 2e | .circuit.add_edge(1,.3).circuit. |
5ee0 | 61 64 64 5f 65 64 67 65 28 31 2c 20 34 29 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 65 64 67 65 28 | add_edge(1,.4).circuit.add_edge( |
5f00 | 32 2c 20 34 29 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 65 64 67 65 28 32 2c 20 35 29 0a 23 20 4c | 2,.4).circuit.add_edge(2,.5).#.L |
5f20 | 61 79 65 72 20 33 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 6e 6f 64 65 28 36 2c 20 6c 61 62 65 6c | ayer.3.circuit.add_node(6,.label |
5f40 | 3d 22 7a 22 2c 20 6c 61 79 65 72 3d 33 29 0a 63 69 72 63 75 69 74 2e 61 64 64 5f 65 64 67 65 28 | ="z",.layer=3).circuit.add_edge( |
5f60 | 35 2c 20 36 29 0a 23 20 43 6f 6e 76 65 72 74 20 74 68 65 20 63 69 72 63 75 69 74 20 74 6f 20 61 | 5,.6).#.Convert.the.circuit.to.a |
5f80 | 6e 20 65 71 75 69 76 61 6c 65 6e 74 20 66 6f 72 6d 75 6c 61 2e 0a 66 6f 72 6d 75 6c 61 20 3d 20 | n.equivalent.formula..formula.=. |
5fa0 | 63 69 72 63 75 69 74 5f 74 6f 5f 66 6f 72 6d 75 6c 61 28 63 69 72 63 75 69 74 29 0a 70 72 69 6e | circuit_to_formula(circuit).prin |
5fc0 | 74 28 66 6f 72 6d 75 6c 61 5f 74 6f 5f 73 74 72 69 6e 67 28 66 6f 72 6d 75 6c 61 29 29 0a 0a 0a | t(formula_to_string(formula))... |
5fe0 | 6c 61 62 65 6c 73 20 3d 20 6e 78 2e 67 65 74 5f 6e 6f 64 65 5f 61 74 74 72 69 62 75 74 65 73 28 | labels.=.nx.get_node_attributes( |
6000 | 63 69 72 63 75 69 74 2c 20 22 6c 61 62 65 6c 22 29 0a 6f 70 74 69 6f 6e 73 20 3d 20 7b 0a 20 20 | circuit,."label").options.=.{... |
6020 | 20 20 22 6e 6f 64 65 5f 73 69 7a 65 22 3a 20 36 30 30 2c 0a 20 20 20 20 22 61 6c 70 68 61 22 3a | .."node_size":.600,....."alpha": |
6040 | 20 30 2e 35 2c 0a 20 20 20 20 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 3a 20 22 62 6c 75 65 22 2c 0a | .0.5,....."node_color":."blue",. |
6060 | 20 20 20 20 22 6c 61 62 65 6c 73 22 3a 20 6c 61 62 65 6c 73 2c 0a 20 20 20 20 22 66 6f 6e 74 5f | ...."labels":.labels,....."font_ |
6080 | 73 69 7a 65 22 3a 20 32 32 2c 0a 7d 0a 70 6c 74 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d | size":.22,.}.plt.figure(figsize= |
60a0 | 28 38 2c 20 38 29 29 0a 70 6f 73 20 3d 20 6e 78 2e 6d 75 6c 74 69 70 61 72 74 69 74 65 5f 6c 61 | (8,.8)).pos.=.nx.multipartite_la |
60c0 | 79 6f 75 74 28 63 69 72 63 75 69 74 2c 20 73 75 62 73 65 74 5f 6b 65 79 3d 22 6c 61 79 65 72 22 | yout(circuit,.subset_key="layer" |
60e0 | 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 28 63 69 72 63 75 69 74 2c 20 70 6f 73 2c | ).nx.draw_networkx(circuit,.pos, |
6100 | 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 70 6c 74 2e 74 69 74 6c 65 28 66 6f 72 6d 75 6c 61 5f 74 6f | .**options).plt.title(formula_to |
6120 | 5f 73 74 72 69 6e 67 28 66 6f 72 6d 75 6c 61 29 29 0a 70 6c 74 2e 61 78 69 73 28 22 65 71 75 61 | _string(formula)).plt.axis("equa |
6140 | 6c 22 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 0d 7b 57 56 a4 7c 15 | l").plt.show().PK.........{WV.|. |
6160 | e2 76 0a 00 00 76 0a 00 00 1d 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 62 6c 6f | .v...v.......algorithms/plot_blo |
6180 | 63 6b 6d 6f 64 65 6c 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 42 6c 6f 63 6b 6d 6f | ckmodel.py""".==========.Blockmo |
61a0 | 64 65 6c 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 45 78 61 6d 70 6c 65 20 6f 66 20 63 72 65 61 74 | del.==========..Example.of.creat |
61c0 | 69 6e 67 20 61 20 62 6c 6f 63 6b 20 6d 6f 64 65 6c 20 75 73 69 6e 67 20 74 68 65 20 71 75 6f 74 | ing.a.block.model.using.the.quot |
61e0 | 69 65 6e 74 5f 67 72 61 70 68 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 4e 58 2e 20 20 44 61 74 61 | ient_graph.function.in.NX...Data |
6200 | 0a 75 73 65 64 20 69 73 20 74 68 65 20 48 61 72 74 66 6f 72 64 2c 20 43 54 20 64 72 75 67 20 75 | .used.is.the.Hartford,.CT.drug.u |
6220 | 73 65 72 73 20 6e 65 74 77 6f 72 6b 3a 3a 0a 0a 20 20 20 20 40 61 72 74 69 63 6c 65 7b 77 65 65 | sers.network::......@article{wee |
6240 | 6b 73 32 30 30 32 73 6f 63 69 61 6c 2c 0a 20 20 20 20 20 20 74 69 74 6c 65 3d 7b 53 6f 63 69 61 | ks2002social,.......title={Socia |
6260 | 6c 20 6e 65 74 77 6f 72 6b 73 20 6f 66 20 64 72 75 67 20 75 73 65 72 73 20 69 6e 20 68 69 67 68 | l.networks.of.drug.users.in.high |
6280 | 2d 72 69 73 6b 20 73 69 74 65 73 3a 20 46 69 6e 64 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 | -risk.sites:.Finding.the.connect |
62a0 | 69 6f 6e 73 7d 2c 0a 20 20 20 20 20 20 75 72 6c 20 3d 20 7b 68 74 74 70 73 3a 2f 2f 64 6f 69 2e | ions},.......url.=.{https://doi. |
62c0 | 6f 72 67 2f 31 30 2e 31 30 32 33 2f 41 3a 31 30 31 35 34 35 37 34 30 30 38 39 37 7d 2c 0a 20 20 | org/10.1023/A:1015457400897},... |
62e0 | 20 20 20 20 64 6f 69 20 3d 20 7b 31 30 2e 31 30 32 33 2f 41 3a 31 30 31 35 34 35 37 34 30 30 38 | ....doi.=.{10.1023/A:10154574008 |
6300 | 39 37 7d 2c 0a 20 20 20 20 20 20 61 75 74 68 6f 72 3d 7b 57 65 65 6b 73 2c 20 4d 61 72 67 61 72 | 97},.......author={Weeks,.Margar |
6320 | 65 74 20 52 20 61 6e 64 20 43 6c 61 69 72 2c 20 53 63 6f 74 74 20 61 6e 64 20 42 6f 72 67 61 74 | et.R.and.Clair,.Scott.and.Borgat |
6340 | 74 69 2c 20 53 74 65 70 68 65 6e 20 50 20 61 6e 64 20 52 61 64 64 61 2c 20 4b 69 6d 20 61 6e 64 | ti,.Stephen.P.and.Radda,.Kim.and |
6360 | 20 53 63 68 65 6e 73 75 6c 2c 20 4a 65 61 6e 20 4a 7d 2c 0a 20 20 20 20 20 20 6a 6f 75 72 6e 61 | .Schensul,.Jean.J},.......journa |
6380 | 6c 3d 7b 7b 41 49 44 53 20 61 6e 64 20 42 65 68 61 76 69 6f 72 7d 7d 2c 0a 20 20 20 20 20 20 76 | l={{AIDS.and.Behavior}},.......v |
63a0 | 6f 6c 75 6d 65 3d 7b 36 7d 2c 0a 20 20 20 20 20 20 6e 75 6d 62 65 72 3d 7b 32 7d 2c 0a 20 20 20 | olume={6},.......number={2},.... |
63c0 | 20 20 20 70 61 67 65 73 3d 7b 31 39 33 2d 2d 32 30 36 7d 2c 0a 20 20 20 20 20 20 79 65 61 72 3d | ...pages={193--206},.......year= |
63e0 | 7b 32 30 30 32 7d 2c 0a 20 20 20 20 20 20 70 75 62 6c 69 73 68 65 72 3d 7b 53 70 72 69 6e 67 65 | {2002},.......publisher={Springe |
6400 | 72 7d 0a 20 20 20 20 7d 0a 0a 22 22 22 0a 0a 66 72 6f 6d 20 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 | r}.....}.."""..from.collections. |
6420 | 69 6d 70 6f 72 74 20 64 65 66 61 75 6c 74 64 69 63 74 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c | import.defaultdict..import.matpl |
6440 | 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f | otlib.pyplot.as.plt.import.netwo |
6460 | 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 66 72 6f | rkx.as.nx.import.numpy.as.np.fro |
6480 | 6d 20 73 63 69 70 79 2e 63 6c 75 73 74 65 72 20 69 6d 70 6f 72 74 20 68 69 65 72 61 72 63 68 79 | m.scipy.cluster.import.hierarchy |
64a0 | 0a 66 72 6f 6d 20 73 63 69 70 79 2e 73 70 61 74 69 61 6c 20 69 6d 70 6f 72 74 20 64 69 73 74 61 | .from.scipy.spatial.import.dista |
64c0 | 6e 63 65 0a 0a 0a 64 65 66 20 63 72 65 61 74 65 5f 68 63 28 47 29 3a 0a 20 20 20 20 22 22 22 43 | nce...def.create_hc(G):....."""C |
64e0 | 72 65 61 74 65 73 20 68 69 65 72 61 72 63 68 69 63 61 6c 20 63 6c 75 73 74 65 72 20 6f 66 20 67 | reates.hierarchical.cluster.of.g |
6500 | 72 61 70 68 20 47 20 66 72 6f 6d 20 64 69 73 74 61 6e 63 65 20 6d 61 74 72 69 78 22 22 22 0a 20 | raph.G.from.distance.matrix""".. |
6520 | 20 20 20 70 61 74 68 5f 6c 65 6e 67 74 68 20 3d 20 6e 78 2e 61 6c 6c 5f 70 61 69 72 73 5f 73 68 | ...path_length.=.nx.all_pairs_sh |
6540 | 6f 72 74 65 73 74 5f 70 61 74 68 5f 6c 65 6e 67 74 68 28 47 29 0a 20 20 20 20 64 69 73 74 61 6e | ortest_path_length(G).....distan |
6560 | 63 65 73 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6c 65 6e 28 47 29 2c 20 6c 65 6e 28 47 29 29 29 | ces.=.np.zeros((len(G),.len(G))) |
6580 | 0a 20 20 20 20 66 6f 72 20 75 2c 20 70 20 69 6e 20 70 61 74 68 5f 6c 65 6e 67 74 68 3a 0a 20 20 | .....for.u,.p.in.path_length:... |
65a0 | 20 20 20 20 20 20 66 6f 72 20 76 2c 20 64 20 69 6e 20 70 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 | ......for.v,.d.in.p.items():.... |
65c0 | 20 20 20 20 20 20 20 20 20 64 69 73 74 61 6e 63 65 73 5b 75 5d 5b 76 5d 20 3d 20 64 0a 20 20 20 | .........distances[u][v].=.d.... |
65e0 | 20 23 20 43 72 65 61 74 65 20 68 69 65 72 61 72 63 68 69 63 61 6c 20 63 6c 75 73 74 65 72 0a 20 | .#.Create.hierarchical.cluster.. |
6600 | 20 20 20 59 20 3d 20 64 69 73 74 61 6e 63 65 2e 73 71 75 61 72 65 66 6f 72 6d 28 64 69 73 74 61 | ...Y.=.distance.squareform(dista |
6620 | 6e 63 65 73 29 0a 20 20 20 20 5a 20 3d 20 68 69 65 72 61 72 63 68 79 2e 63 6f 6d 70 6c 65 74 65 | nces).....Z.=.hierarchy.complete |
6640 | 28 59 29 20 20 23 20 43 72 65 61 74 65 73 20 48 43 20 75 73 69 6e 67 20 66 61 72 74 68 65 73 74 | (Y)..#.Creates.HC.using.farthest |
6660 | 20 70 6f 69 6e 74 20 6c 69 6e 6b 61 67 65 0a 20 20 20 20 23 20 54 68 69 73 20 70 61 72 74 69 74 | .point.linkage.....#.This.partit |
6680 | 69 6f 6e 20 73 65 6c 65 63 74 69 6f 6e 20 69 73 20 61 72 62 69 74 72 61 72 79 2c 20 66 6f 72 20 | ion.selection.is.arbitrary,.for. |
66a0 | 69 6c 6c 75 73 74 72 69 76 65 20 70 75 72 70 6f 73 65 73 0a 20 20 20 20 6d 65 6d 62 65 72 73 68 | illustrive.purposes.....membersh |
66c0 | 69 70 20 3d 20 6c 69 73 74 28 68 69 65 72 61 72 63 68 79 2e 66 63 6c 75 73 74 65 72 28 5a 2c 20 | ip.=.list(hierarchy.fcluster(Z,. |
66e0 | 74 3d 31 2e 31 35 29 29 0a 20 20 20 20 23 20 43 72 65 61 74 65 20 63 6f 6c 6c 65 63 74 69 6f 6e | t=1.15)).....#.Create.collection |
6700 | 20 6f 66 20 6c 69 73 74 73 20 66 6f 72 20 62 6c 6f 63 6b 6d 6f 64 65 6c 0a 20 20 20 20 70 61 72 | .of.lists.for.blockmodel.....par |
6720 | 74 69 74 69 6f 6e 20 3d 20 64 65 66 61 75 6c 74 64 69 63 74 28 6c 69 73 74 29 0a 20 20 20 20 66 | tition.=.defaultdict(list).....f |
6740 | 6f 72 20 6e 2c 20 70 20 69 6e 20 7a 69 70 28 6c 69 73 74 28 72 61 6e 67 65 28 6c 65 6e 28 47 29 | or.n,.p.in.zip(list(range(len(G) |
6760 | 29 29 2c 20 6d 65 6d 62 65 72 73 68 69 70 29 3a 0a 20 20 20 20 20 20 20 20 70 61 72 74 69 74 69 | )),.membership):.........partiti |
6780 | 6f 6e 5b 70 5d 2e 61 70 70 65 6e 64 28 6e 29 0a 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 28 | on[p].append(n).....return.list( |
67a0 | 70 61 72 74 69 74 69 6f 6e 2e 76 61 6c 75 65 73 28 29 29 0a 0a 0a 47 20 3d 20 6e 78 2e 72 65 61 | partition.values())...G.=.nx.rea |
67c0 | 64 5f 65 64 67 65 6c 69 73 74 28 22 68 61 72 74 66 6f 72 64 5f 64 72 75 67 2e 65 64 67 65 6c 69 | d_edgelist("hartford_drug.edgeli |
67e0 | 73 74 22 29 0a 0a 23 20 45 78 74 72 61 63 74 20 6c 61 72 67 65 73 74 20 63 6f 6e 6e 65 63 74 65 | st")..#.Extract.largest.connecte |
6800 | 64 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 6e 74 6f 20 67 72 61 70 68 20 48 0a 48 20 3d 20 47 2e 73 | d.component.into.graph.H.H.=.G.s |
6820 | 75 62 67 72 61 70 68 28 6e 65 78 74 28 6e 78 2e 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e | ubgraph(next(nx.connected_compon |
6840 | 65 6e 74 73 28 47 29 29 29 0a 23 20 4d 61 6b 65 73 20 6c 69 66 65 20 65 61 73 69 65 72 20 74 6f | ents(G))).#.Makes.life.easier.to |
6860 | 20 68 61 76 65 20 63 6f 6e 73 65 63 75 74 69 76 65 6c 79 20 6c 61 62 65 6c 65 64 20 69 6e 74 65 | .have.consecutively.labeled.inte |
6880 | 67 65 72 20 6e 6f 64 65 73 0a 48 20 3d 20 6e 78 2e 63 6f 6e 76 65 72 74 5f 6e 6f 64 65 5f 6c 61 | ger.nodes.H.=.nx.convert_node_la |
68a0 | 62 65 6c 73 5f 74 6f 5f 69 6e 74 65 67 65 72 73 28 48 29 0a 23 20 43 72 65 61 74 65 20 70 61 72 | bels_to_integers(H).#.Create.par |
68c0 | 74 69 74 69 6f 6e 73 20 77 69 74 68 20 68 69 65 72 61 72 63 68 69 63 61 6c 20 63 6c 75 73 74 65 | titions.with.hierarchical.cluste |
68e0 | 72 69 6e 67 0a 70 61 72 74 69 74 69 6f 6e 73 20 3d 20 63 72 65 61 74 65 5f 68 63 28 48 29 0a 23 | ring.partitions.=.create_hc(H).# |
6900 | 20 42 75 69 6c 64 20 62 6c 6f 63 6b 6d 6f 64 65 6c 20 67 72 61 70 68 0a 42 4d 20 3d 20 6e 78 2e | .Build.blockmodel.graph.BM.=.nx. |
6920 | 71 75 6f 74 69 65 6e 74 5f 67 72 61 70 68 28 48 2c 20 70 61 72 74 69 74 69 6f 6e 73 2c 20 72 65 | quotient_graph(H,.partitions,.re |
6940 | 6c 61 62 65 6c 3d 54 72 75 65 29 0a 0a 23 20 44 72 61 77 20 6f 72 69 67 69 6e 61 6c 20 67 72 61 | label=True)..#.Draw.original.gra |
6960 | 70 68 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 48 2c 20 69 74 65 | ph.pos.=.nx.spring_layout(H,.ite |
6980 | 72 61 74 69 6f 6e 73 3d 31 30 30 2c 20 73 65 65 64 3d 38 33 29 20 20 23 20 53 65 65 64 20 66 6f | rations=100,.seed=83)..#.Seed.fo |
69a0 | 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 79 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 32 31 | r.reproducibility.plt.subplot(21 |
69c0 | 31 29 0a 6e 78 2e 64 72 61 77 28 48 2c 20 70 6f 73 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 | 1).nx.draw(H,.pos,.with_labels=F |
69e0 | 61 6c 73 65 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 31 30 29 0a 0a 23 20 44 72 61 77 20 62 6c 6f 63 | alse,.node_size=10)..#.Draw.bloc |
6a00 | 6b 20 6d 6f 64 65 6c 20 77 69 74 68 20 77 65 69 67 68 74 65 64 20 65 64 67 65 73 20 61 6e 64 20 | k.model.with.weighted.edges.and. |
6a20 | 6e 6f 64 65 73 20 73 69 7a 65 64 20 62 79 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 74 65 72 6e 61 | nodes.sized.by.number.of.interna |
6a40 | 6c 20 6e 6f 64 65 73 0a 6e 6f 64 65 5f 73 69 7a 65 20 3d 20 5b 42 4d 2e 6e 6f 64 65 73 5b 78 5d | l.nodes.node_size.=.[BM.nodes[x] |
6a60 | 5b 22 6e 6e 6f 64 65 73 22 5d 20 2a 20 31 30 20 66 6f 72 20 78 20 69 6e 20 42 4d 2e 6e 6f 64 65 | ["nnodes"].*.10.for.x.in.BM.node |
6a80 | 73 28 29 5d 0a 65 64 67 65 5f 77 69 64 74 68 20 3d 20 5b 28 32 20 2a 20 64 5b 22 77 65 69 67 68 | s()].edge_width.=.[(2.*.d["weigh |
6aa0 | 74 22 5d 29 20 66 6f 72 20 28 75 2c 20 76 2c 20 64 29 20 69 6e 20 42 4d 2e 65 64 67 65 73 28 64 | t"]).for.(u,.v,.d).in.BM.edges(d |
6ac0 | 61 74 61 3d 54 72 75 65 29 5d 0a 23 20 53 65 74 20 70 6f 73 69 74 69 6f 6e 73 20 74 6f 20 6d 65 | ata=True)].#.Set.positions.to.me |
6ae0 | 61 6e 20 6f 66 20 70 6f 73 69 74 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6e 61 6c 20 6e 6f 64 65 | an.of.positions.of.internal.node |
6b00 | 73 20 66 72 6f 6d 20 6f 72 69 67 69 6e 61 6c 20 67 72 61 70 68 0a 70 6f 73 42 4d 20 3d 20 7b 7d | s.from.original.graph.posBM.=.{} |
6b20 | 0a 66 6f 72 20 6e 20 69 6e 20 42 4d 3a 0a 20 20 20 20 78 79 20 3d 20 6e 70 2e 61 72 72 61 79 28 | .for.n.in.BM:.....xy.=.np.array( |
6b40 | 5b 70 6f 73 5b 75 5d 20 66 6f 72 20 75 20 69 6e 20 42 4d 2e 6e 6f 64 65 73 5b 6e 5d 5b 22 67 72 | [pos[u].for.u.in.BM.nodes[n]["gr |
6b60 | 61 70 68 22 5d 5d 29 0a 20 20 20 20 70 6f 73 42 4d 5b 6e 5d 20 3d 20 78 79 2e 6d 65 61 6e 28 61 | aph"]]).....posBM[n].=.xy.mean(a |
6b80 | 78 69 73 3d 30 29 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 32 31 32 29 0a 6e 78 2e 64 72 61 77 28 | xis=0).plt.subplot(212).nx.draw( |
6ba0 | 42 4d 2c 20 70 6f 73 42 4d 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 6e 6f 64 65 5f 73 69 7a 65 2c 20 | BM,.posBM,.node_size=node_size,. |
6bc0 | 77 69 64 74 68 3d 65 64 67 65 5f 77 69 64 74 68 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 | width=edge_width,.with_labels=Fa |
6be0 | 6c 73 65 29 0a 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a | lse).plt.axis("off").plt.show(). |
6c00 | 50 4b 03 04 14 00 00 00 00 00 0a 7b 57 56 d2 bd 8b 1b 17 10 00 00 17 10 00 00 1e 00 00 00 61 6c | PK.........{WV................al |
6c20 | 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 62 65 61 6d 5f 73 65 61 72 63 68 2e 70 79 22 22 22 0a | gorithms/plot_beam_search.py""". |
6c40 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 42 65 61 6d 20 53 65 61 72 63 68 0a 3d 3d 3d 3d 3d 3d 3d 3d | ===========.Beam.Search.======== |
6c60 | 3d 3d 3d 0a 0a 42 65 61 6d 20 73 65 61 72 63 68 20 77 69 74 68 20 64 79 6e 61 6d 69 63 20 62 65 | ===..Beam.search.with.dynamic.be |
6c80 | 61 6d 20 77 69 64 74 68 2e 0a 0a 54 68 65 20 70 72 6f 67 72 65 73 73 69 76 65 20 77 69 64 65 6e | am.width...The.progressive.widen |
6ca0 | 69 6e 67 20 62 65 61 6d 20 73 65 61 72 63 68 20 72 65 70 65 61 74 65 64 6c 79 20 65 78 65 63 75 | ing.beam.search.repeatedly.execu |
6cc0 | 74 65 73 20 61 20 62 65 61 6d 20 73 65 61 72 63 68 0a 77 69 74 68 20 69 6e 63 72 65 61 73 69 6e | tes.a.beam.search.with.increasin |
6ce0 | 67 20 62 65 61 6d 20 77 69 64 74 68 20 75 6e 74 69 6c 20 74 68 65 20 74 61 72 67 65 74 20 6e 6f | g.beam.width.until.the.target.no |
6d00 | 64 65 20 69 73 20 66 6f 75 6e 64 2e 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6d 61 74 68 0a 0a 69 6d | de.is.found..""".import.math..im |
6d20 | 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d | port.matplotlib.pyplot.as.plt.im |
6d40 | 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 0a 64 65 66 20 70 72 6f 67 72 65 | port.networkx.as.nx...def.progre |
6d60 | 73 73 69 76 65 5f 77 69 64 65 6e 69 6e 67 5f 73 65 61 72 63 68 28 47 2c 20 73 6f 75 72 63 65 2c | ssive_widening_search(G,.source, |
6d80 | 20 76 61 6c 75 65 2c 20 63 6f 6e 64 69 74 69 6f 6e 2c 20 69 6e 69 74 69 61 6c 5f 77 69 64 74 68 | .value,.condition,.initial_width |
6da0 | 3d 31 29 3a 0a 20 20 20 20 22 22 22 50 72 6f 67 72 65 73 73 69 76 65 20 77 69 64 65 6e 69 6e 67 | =1):....."""Progressive.widening |
6dc0 | 20 62 65 61 6d 20 73 65 61 72 63 68 20 74 6f 20 66 69 6e 64 20 61 20 6e 6f 64 65 2e 0a 0a 20 20 | .beam.search.to.find.a.node..... |
6de0 | 20 20 54 68 65 20 70 72 6f 67 72 65 73 73 69 76 65 20 77 69 64 65 6e 69 6e 67 20 62 65 61 6d 20 | ..The.progressive.widening.beam. |
6e00 | 73 65 61 72 63 68 20 69 6e 76 6f 6c 76 65 73 20 61 20 72 65 70 65 61 74 65 64 20 62 65 61 6d 0a | search.involves.a.repeated.beam. |
6e20 | 20 20 20 20 73 65 61 72 63 68 2c 20 73 74 61 72 74 69 6e 67 20 77 69 74 68 20 61 20 73 6d 61 6c | ....search,.starting.with.a.smal |
6e40 | 6c 20 62 65 61 6d 20 77 69 64 74 68 20 74 68 65 6e 20 65 78 74 65 6e 64 69 6e 67 20 74 6f 0a 20 | l.beam.width.then.extending.to.. |
6e60 | 20 20 20 70 72 6f 67 72 65 73 73 69 76 65 6c 79 20 6c 61 72 67 65 72 20 62 65 61 6d 20 77 69 64 | ...progressively.larger.beam.wid |
6e80 | 74 68 73 20 69 66 20 74 68 65 20 74 61 72 67 65 74 20 6e 6f 64 65 20 69 73 20 6e 6f 74 0a 20 20 | ths.if.the.target.node.is.not... |
6ea0 | 20 20 66 6f 75 6e 64 2e 20 54 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 69 6d | ..found..This.implementation.sim |
6ec0 | 70 6c 79 20 72 65 74 75 72 6e 73 20 74 68 65 20 66 69 72 73 74 20 6e 6f 64 65 20 66 6f 75 6e 64 | ply.returns.the.first.node.found |
6ee0 | 20 74 68 61 74 0a 20 20 20 20 6d 61 74 63 68 65 73 20 74 68 65 20 74 65 72 6d 69 6e 61 74 69 6f | .that.....matches.the.terminatio |
6f00 | 6e 20 63 6f 6e 64 69 74 69 6f 6e 2e 0a 0a 20 20 20 20 60 47 60 20 69 73 20 61 20 4e 65 74 77 6f | n.condition.......`G`.is.a.Netwo |
6f20 | 72 6b 58 20 67 72 61 70 68 2e 0a 0a 20 20 20 20 60 73 6f 75 72 63 65 60 20 69 73 20 61 20 6e 6f | rkX.graph.......`source`.is.a.no |
6f40 | 64 65 20 69 6e 20 74 68 65 20 67 72 61 70 68 2e 20 54 68 65 20 73 65 61 72 63 68 20 66 6f 72 20 | de.in.the.graph..The.search.for. |
6f60 | 74 68 65 20 6e 6f 64 65 20 6f 66 20 69 6e 74 65 72 65 73 74 0a 20 20 20 20 62 65 67 69 6e 73 20 | the.node.of.interest.....begins. |
6f80 | 68 65 72 65 20 61 6e 64 20 65 78 74 65 6e 64 73 20 6f 6e 6c 79 20 74 6f 20 74 68 6f 73 65 20 6e | here.and.extends.only.to.those.n |
6fa0 | 6f 64 65 73 20 69 6e 20 74 68 65 20 28 77 65 61 6b 6c 79 29 0a 20 20 20 20 63 6f 6e 6e 65 63 74 | odes.in.the.(weakly).....connect |
6fc0 | 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 74 68 69 73 20 6e 6f 64 65 2e 0a 0a 20 20 20 20 | ed.component.of.this.node....... |
6fe0 | 60 76 61 6c 75 65 60 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 | `value`.is.a.function.that.retur |
7000 | 6e 73 20 61 20 72 65 61 6c 20 6e 75 6d 62 65 72 20 69 6e 64 69 63 61 74 69 6e 67 20 68 6f 77 20 | ns.a.real.number.indicating.how. |
7020 | 67 6f 6f 64 0a 20 20 20 20 61 20 70 6f 74 65 6e 74 69 61 6c 20 6e 65 69 67 68 62 6f 72 20 6e 6f | good.....a.potential.neighbor.no |
7040 | 64 65 20 69 73 20 77 68 65 6e 20 64 65 63 69 64 69 6e 67 20 77 68 69 63 68 20 6e 65 69 67 68 62 | de.is.when.deciding.which.neighb |
7060 | 6f 72 20 6e 6f 64 65 73 20 74 6f 0a 20 20 20 20 65 6e 71 75 65 75 65 20 69 6e 20 74 68 65 20 62 | or.nodes.to.....enqueue.in.the.b |
7080 | 72 65 61 64 74 68 2d 66 69 72 73 74 20 73 65 61 72 63 68 2e 20 4f 6e 6c 79 20 74 68 65 20 62 65 | readth-first.search..Only.the.be |
70a0 | 73 74 20 6e 6f 64 65 73 20 77 69 74 68 69 6e 20 74 68 65 0a 20 20 20 20 63 75 72 72 65 6e 74 20 | st.nodes.within.the.....current. |
70c0 | 62 65 61 6d 20 77 69 64 74 68 20 77 69 6c 6c 20 62 65 20 65 6e 71 75 65 75 65 64 20 61 74 20 65 | beam.width.will.be.enqueued.at.e |
70e0 | 61 63 68 20 73 74 65 70 2e 0a 0a 20 20 20 20 60 63 6f 6e 64 69 74 69 6f 6e 60 20 69 73 20 74 68 | ach.step.......`condition`.is.th |
7100 | 65 20 74 65 72 6d 69 6e 61 74 69 6f 6e 20 63 6f 6e 64 69 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 | e.termination.condition.for.the. |
7120 | 73 65 61 72 63 68 2e 20 54 68 69 73 20 69 73 20 61 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 | search..This.is.a.....function.t |
7140 | 68 61 74 20 74 61 6b 65 73 20 61 20 6e 6f 64 65 20 61 73 20 69 6e 70 75 74 20 61 6e 64 20 72 65 | hat.takes.a.node.as.input.and.re |
7160 | 74 75 72 6e 20 61 20 42 6f 6f 6c 65 61 6e 20 69 6e 64 69 63 61 74 69 6e 67 0a 20 20 20 20 77 68 | turn.a.Boolean.indicating.....wh |
7180 | 65 74 68 65 72 20 74 68 65 20 6e 6f 64 65 20 69 73 20 74 68 65 20 74 61 72 67 65 74 2e 20 49 66 | ether.the.node.is.the.target..If |
71a0 | 20 6e 6f 20 6e 6f 64 65 20 6d 61 74 63 68 65 73 20 74 68 65 20 74 65 72 6d 69 6e 61 74 69 6f 6e | .no.node.matches.the.termination |
71c0 | 0a 20 20 20 20 63 6f 6e 64 69 74 69 6f 6e 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 61 | .....condition,.this.function.ra |
71e0 | 69 73 65 73 20 3a 65 78 63 3a 60 4e 6f 64 65 4e 6f 74 46 6f 75 6e 64 60 2e 0a 0a 20 20 20 20 60 | ises.:exc:`NodeNotFound`.......` |
7200 | 69 6e 69 74 69 61 6c 5f 77 69 64 74 68 60 20 69 73 20 74 68 65 20 73 74 61 72 74 69 6e 67 20 62 | initial_width`.is.the.starting.b |
7220 | 65 61 6d 20 77 69 64 74 68 20 66 6f 72 20 74 68 65 20 62 65 61 6d 20 73 65 61 72 63 68 20 28 74 | eam.width.for.the.beam.search.(t |
7240 | 68 65 0a 20 20 20 20 64 65 66 61 75 6c 74 20 69 73 20 6f 6e 65 29 2e 20 49 66 20 6e 6f 20 6e 6f | he.....default.is.one)..If.no.no |
7260 | 64 65 20 6d 61 74 63 68 69 6e 67 20 74 68 65 20 60 63 6f 6e 64 69 74 69 6f 6e 60 20 69 73 20 66 | de.matching.the.`condition`.is.f |
7280 | 6f 75 6e 64 20 77 69 74 68 0a 20 20 20 20 74 68 69 73 20 62 65 61 6d 20 77 69 64 74 68 2c 20 74 | ound.with.....this.beam.width,.t |
72a0 | 68 65 20 62 65 61 6d 20 73 65 61 72 63 68 20 69 73 20 72 65 73 74 61 72 74 65 64 20 66 72 6f 6d | he.beam.search.is.restarted.from |
72c0 | 20 74 68 65 20 60 73 6f 75 72 63 65 60 20 6e 6f 64 65 0a 20 20 20 20 77 69 74 68 20 61 20 62 65 | .the.`source`.node.....with.a.be |
72e0 | 61 6d 20 77 69 64 74 68 20 74 68 61 74 20 69 73 20 74 77 69 63 65 20 61 73 20 6c 61 72 67 65 20 | am.width.that.is.twice.as.large. |
7300 | 28 73 6f 20 74 68 65 20 62 65 61 6d 20 77 69 64 74 68 0a 20 20 20 20 69 6e 63 72 65 61 73 65 73 | (so.the.beam.width.....increases |
7320 | 20 65 78 70 6f 6e 65 6e 74 69 61 6c 6c 79 29 2e 20 54 68 65 20 73 65 61 72 63 68 20 74 65 72 6d | .exponentially)..The.search.term |
7340 | 69 6e 61 74 65 73 20 61 66 74 65 72 20 74 68 65 20 62 65 61 6d 20 77 69 64 74 68 0a 20 20 20 20 | inates.after.the.beam.width..... |
7360 | 65 78 63 65 65 64 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6e 6f 64 65 73 20 69 6e 20 74 | exceeds.the.number.of.nodes.in.t |
7380 | 68 65 20 67 72 61 70 68 2e 0a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 23 20 43 68 65 63 6b 20 66 | he.graph.......""".....#.Check.f |
73a0 | 6f 72 20 74 68 65 20 73 70 65 63 69 61 6c 20 63 61 73 65 20 69 6e 20 77 68 69 63 68 20 74 68 65 | or.the.special.case.in.which.the |
73c0 | 20 73 6f 75 72 63 65 20 6e 6f 64 65 20 73 61 74 69 73 66 69 65 73 20 74 68 65 0a 20 20 20 20 23 | .source.node.satisfies.the.....# |
73e0 | 20 74 65 72 6d 69 6e 61 74 69 6f 6e 20 63 6f 6e 64 69 74 69 6f 6e 2e 0a 20 20 20 20 69 66 20 63 | .termination.condition......if.c |
7400 | 6f 6e 64 69 74 69 6f 6e 28 73 6f 75 72 63 65 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e | ondition(source):.........return |
7420 | 20 73 6f 75 72 63 65 0a 20 20 20 20 23 20 54 68 65 20 6c 61 72 67 65 73 74 20 70 6f 73 73 69 62 | .source.....#.The.largest.possib |
7440 | 6c 65 20 76 61 6c 75 65 20 6f 66 20 60 69 60 20 69 6e 20 74 68 69 73 20 72 61 6e 67 65 20 79 69 | le.value.of.`i`.in.this.range.yi |
7460 | 65 6c 64 73 20 61 20 77 69 64 74 68 20 61 74 0a 20 20 20 20 23 20 6c 65 61 73 74 20 74 68 65 20 | elds.a.width.at.....#.least.the. |
7480 | 6e 75 6d 62 65 72 20 6f 66 20 6e 6f 64 65 73 20 69 6e 20 74 68 65 20 67 72 61 70 68 2c 20 73 6f | number.of.nodes.in.the.graph,.so |
74a0 | 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 0a 20 20 20 20 23 20 60 | .the.final.invocation.of.....#.` |
74c0 | 62 66 73 5f 62 65 61 6d 5f 65 64 67 65 73 60 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f | bfs_beam_edges`.is.equivalent.to |
74e0 | 20 61 20 70 6c 61 69 6e 20 6f 6c 64 20 62 72 65 61 64 74 68 2d 66 69 72 73 74 0a 20 20 20 20 23 | .a.plain.old.breadth-first.....# |
7500 | 20 73 65 61 72 63 68 2e 20 54 68 65 72 65 66 6f 72 65 2c 20 61 6c 6c 20 6e 6f 64 65 73 20 77 69 | .search..Therefore,.all.nodes.wi |
7520 | 6c 6c 20 65 76 65 6e 74 75 61 6c 6c 79 20 62 65 20 76 69 73 69 74 65 64 2e 0a 20 20 20 20 6c 6f | ll.eventually.be.visited......lo |
7540 | 67 5f 6d 20 3d 20 6d 61 74 68 2e 63 65 69 6c 28 6d 61 74 68 2e 6c 6f 67 32 28 6c 65 6e 28 47 29 | g_m.=.math.ceil(math.log2(len(G) |
7560 | 29 29 0a 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 6f 67 5f 6d 29 3a 0a 20 20 | )).....for.i.in.range(log_m):... |
7580 | 20 20 20 20 20 20 77 69 64 74 68 20 3d 20 69 6e 69 74 69 61 6c 5f 77 69 64 74 68 20 2a 20 70 6f | ......width.=.initial_width.*.po |
75a0 | 77 28 32 2c 20 69 29 0a 20 20 20 20 20 20 20 20 23 20 53 69 6e 63 65 20 77 65 20 61 72 65 20 61 | w(2,.i).........#.Since.we.are.a |
75c0 | 6c 77 61 79 73 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 73 61 6d 65 20 73 6f 75 | lways.starting.from.the.same.sou |
75e0 | 72 63 65 20 6e 6f 64 65 2c 20 74 68 69 73 0a 20 20 20 20 20 20 20 20 23 20 73 65 61 72 63 68 20 | rce.node,.this.........#.search. |
7600 | 6d 61 79 20 76 69 73 69 74 20 74 68 65 20 73 61 6d 65 20 6e 6f 64 65 73 20 6d 61 6e 79 20 74 69 | may.visit.the.same.nodes.many.ti |
7620 | 6d 65 73 20 28 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 0a 20 20 20 20 20 20 20 20 23 20 | mes.(depending.on.the.........#. |
7640 | 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 60 76 61 6c 75 65 60 20 66 75 | implementation.of.the.`value`.fu |
7660 | 6e 63 74 69 6f 6e 29 2e 0a 20 20 20 20 20 20 20 20 66 6f 72 20 75 2c 20 76 20 69 6e 20 6e 78 2e | nction)..........for.u,.v.in.nx. |
7680 | 62 66 73 5f 62 65 61 6d 5f 65 64 67 65 73 28 47 2c 20 73 6f 75 72 63 65 2c 20 76 61 6c 75 65 2c | bfs_beam_edges(G,.source,.value, |
76a0 | 20 77 69 64 74 68 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 6f 6e 64 69 74 69 6f | .width):.............if.conditio |
76c0 | 6e 28 76 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 0a 20 | n(v):.................return.v.. |
76e0 | 20 20 20 23 20 41 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 73 69 6e 63 65 20 61 6c 6c 20 6e 6f | ...#.At.this.point,.since.all.no |
7700 | 64 65 73 20 68 61 76 65 20 62 65 65 6e 20 76 69 73 69 74 65 64 2c 20 77 65 20 6b 6e 6f 77 20 74 | des.have.been.visited,.we.know.t |
7720 | 68 61 74 0a 20 20 20 20 23 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 20 73 61 74 69 | hat.....#.none.of.the.nodes.sati |
7740 | 73 66 69 65 64 20 74 68 65 20 74 65 72 6d 69 6e 61 74 69 6f 6e 20 63 6f 6e 64 69 74 69 6f 6e 2e | sfied.the.termination.condition. |
7760 | 0a 20 20 20 20 72 61 69 73 65 20 6e 78 2e 4e 6f 64 65 4e 6f 74 46 6f 75 6e 64 28 22 6e 6f 20 6e | .....raise.nx.NodeNotFound("no.n |
7780 | 6f 64 65 20 73 61 74 69 73 66 69 65 64 20 74 68 65 20 74 65 72 6d 69 6e 61 74 69 6f 6e 20 63 6f | ode.satisfied.the.termination.co |
77a0 | 6e 64 69 74 69 6f 6e 22 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ndition")...#################### |
77c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
77e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 53 65 | ###########################.#.Se |
7800 | 61 72 63 68 20 66 6f 72 20 61 20 6e 6f 64 65 20 77 69 74 68 20 68 69 67 68 20 63 65 6e 74 72 61 | arch.for.a.node.with.high.centra |
7820 | 6c 69 74 79 2e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | lity..#.------------------------ |
7840 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 0a 23 20 57 65 20 67 65 6e 65 72 61 74 65 20 | ---------------.#.#.We.generate. |
7860 | 61 20 72 61 6e 64 6f 6d 20 67 72 61 70 68 2c 20 63 6f 6d 70 75 74 65 20 74 68 65 20 63 65 6e 74 | a.random.graph,.compute.the.cent |
7880 | 72 61 6c 69 74 79 20 6f 66 20 65 61 63 68 20 6e 6f 64 65 2c 20 74 68 65 6e 20 70 65 72 66 6f 72 | rality.of.each.node,.then.perfor |
78a0 | 6d 0a 23 20 74 68 65 20 70 72 6f 67 72 65 73 73 69 76 65 20 77 69 64 65 6e 69 6e 67 20 73 65 61 | m.#.the.progressive.widening.sea |
78c0 | 72 63 68 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 66 69 6e 64 20 61 20 6e 6f 64 65 20 6f 66 20 68 | rch.in.order.to.find.a.node.of.h |
78e0 | 69 67 68 20 63 65 6e 74 72 61 6c 69 74 79 2e 0a 0a 23 20 53 65 74 20 61 20 73 65 65 64 20 66 6f | igh.centrality...#.Set.a.seed.fo |
7900 | 72 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 67 65 6e 65 72 61 74 69 6f 6e 20 73 6f 20 74 68 | r.random.number.generation.so.th |
7920 | 65 20 65 78 61 6d 70 6c 65 20 69 73 20 72 65 70 72 6f 64 75 63 69 62 6c 65 0a 73 65 65 64 20 3d | e.example.is.reproducible.seed.= |
7940 | 20 38 39 0a 0a 47 20 3d 20 6e 78 2e 67 6e 70 5f 72 61 6e 64 6f 6d 5f 67 72 61 70 68 28 31 30 30 | .89..G.=.nx.gnp_random_graph(100 |
7960 | 2c 20 30 2e 35 2c 20 73 65 65 64 3d 73 65 65 64 29 0a 63 65 6e 74 72 61 6c 69 74 79 20 3d 20 6e | ,.0.5,.seed=seed).centrality.=.n |
7980 | 78 2e 65 69 67 65 6e 76 65 63 74 6f 72 5f 63 65 6e 74 72 61 6c 69 74 79 28 47 29 0a 61 76 67 5f | x.eigenvector_centrality(G).avg_ |
79a0 | 63 65 6e 74 72 61 6c 69 74 79 20 3d 20 73 75 6d 28 63 65 6e 74 72 61 6c 69 74 79 2e 76 61 6c 75 | centrality.=.sum(centrality.valu |
79c0 | 65 73 28 29 29 20 2f 20 6c 65 6e 28 47 29 0a 0a 0a 64 65 66 20 68 61 73 5f 68 69 67 68 5f 63 65 | es())./.len(G)...def.has_high_ce |
79e0 | 6e 74 72 61 6c 69 74 79 28 76 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 63 65 6e 74 72 61 6c 69 | ntrality(v):.....return.centrali |
7a00 | 74 79 5b 76 5d 20 3e 3d 20 61 76 67 5f 63 65 6e 74 72 61 6c 69 74 79 0a 0a 0a 73 6f 75 72 63 65 | ty[v].>=.avg_centrality...source |
7a20 | 20 3d 20 30 0a 76 61 6c 75 65 20 3d 20 63 65 6e 74 72 61 6c 69 74 79 2e 67 65 74 0a 63 6f 6e 64 | .=.0.value.=.centrality.get.cond |
7a40 | 69 74 69 6f 6e 20 3d 20 68 61 73 5f 68 69 67 68 5f 63 65 6e 74 72 61 6c 69 74 79 0a 0a 66 6f 75 | ition.=.has_high_centrality..fou |
7a60 | 6e 64 5f 6e 6f 64 65 20 3d 20 70 72 6f 67 72 65 73 73 69 76 65 5f 77 69 64 65 6e 69 6e 67 5f 73 | nd_node.=.progressive_widening_s |
7a80 | 65 61 72 63 68 28 47 2c 20 73 6f 75 72 63 65 2c 20 76 61 6c 75 65 2c 20 63 6f 6e 64 69 74 69 6f | earch(G,.source,.value,.conditio |
7aa0 | 6e 29 0a 63 20 3d 20 63 65 6e 74 72 61 6c 69 74 79 5b 66 6f 75 6e 64 5f 6e 6f 64 65 5d 0a 70 72 | n).c.=.centrality[found_node].pr |
7ac0 | 69 6e 74 28 66 22 66 6f 75 6e 64 20 6e 6f 64 65 20 7b 66 6f 75 6e 64 5f 6e 6f 64 65 7d 20 77 69 | int(f"found.node.{found_node}.wi |
7ae0 | 74 68 20 63 65 6e 74 72 61 6c 69 74 79 20 7b 63 7d 22 29 0a 0a 0a 23 20 44 72 61 77 20 67 72 61 | th.centrality.{c}")...#.Draw.gra |
7b00 | 70 68 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 | ph.pos.=.nx.spring_layout(G,.see |
7b20 | 64 3d 73 65 65 64 29 0a 6f 70 74 69 6f 6e 73 20 3d 20 7b 0a 20 20 20 20 22 6e 6f 64 65 5f 63 6f | d=seed).options.=.{....."node_co |
7b40 | 6c 6f 72 22 3a 20 22 62 6c 75 65 22 2c 0a 20 20 20 20 22 6e 6f 64 65 5f 73 69 7a 65 22 3a 20 32 | lor":."blue",....."node_size":.2 |
7b60 | 30 2c 0a 20 20 20 20 22 65 64 67 65 5f 63 6f 6c 6f 72 22 3a 20 22 67 72 65 79 22 2c 0a 20 20 20 | 0,....."edge_color":."grey",.... |
7b80 | 20 22 6c 69 6e 65 77 69 64 74 68 73 22 3a 20 30 2c 0a 20 20 20 20 22 77 69 64 74 68 22 3a 20 30 | ."linewidths":.0,....."width":.0 |
7ba0 | 2e 31 2c 0a 7d 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 | .1,.}.nx.draw(G,.pos,.**options) |
7bc0 | 0a 23 20 44 72 61 77 20 6e 6f 64 65 20 77 69 74 68 20 68 69 67 68 20 63 65 6e 74 72 61 6c 69 74 | .#.Draw.node.with.high.centralit |
7be0 | 79 20 61 73 20 6c 61 72 67 65 20 61 6e 64 20 72 65 64 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f | y.as.large.and.red.nx.draw_netwo |
7c00 | 72 6b 78 5f 6e 6f 64 65 73 28 47 2c 20 70 6f 73 2c 20 6e 6f 64 65 6c 69 73 74 3d 5b 66 6f 75 6e | rkx_nodes(G,.pos,.nodelist=[foun |
7c20 | 64 5f 6e 6f 64 65 5d 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 31 30 30 2c 20 6e 6f 64 65 5f 63 6f 6c | d_node],.node_size=100,.node_col |
7c40 | 6f 72 3d 22 72 22 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 20 7b 57 | or="r").plt.show().PK.........{W |
7c60 | 56 40 59 d4 42 4a 19 00 00 4a 19 00 00 1c 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 | V@Y.BJ...J.......algorithms/plot |
7c80 | 5f 73 75 62 67 72 61 70 68 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 53 75 62 67 72 | _subgraphs.py""".=========.Subgr |
7ca0 | 61 70 68 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 45 78 61 6d 70 6c 65 20 6f 66 20 70 61 72 74 69 74 | aphs.=========.Example.of.partit |
7cc0 | 69 6f 6e 69 6e 67 20 61 20 64 69 72 65 63 74 65 64 20 67 72 61 70 68 20 77 69 74 68 20 6e 6f 64 | ioning.a.directed.graph.with.nod |
7ce0 | 65 73 20 6c 61 62 65 6c 65 64 20 61 73 0a 73 75 70 70 6f 72 74 65 64 20 61 6e 64 20 75 6e 73 75 | es.labeled.as.supported.and.unsu |
7d00 | 70 70 6f 72 74 65 64 20 6e 6f 64 65 73 20 69 6e 74 6f 20 61 20 6c 69 73 74 20 6f 66 20 73 75 62 | pported.nodes.into.a.list.of.sub |
7d20 | 67 72 61 70 68 73 0a 74 68 61 74 20 63 6f 6e 74 61 69 6e 20 6f 6e 6c 79 20 65 6e 74 69 72 65 6c | graphs.that.contain.only.entirel |
7d40 | 79 20 73 75 70 70 6f 72 74 65 64 20 6f 72 20 65 6e 74 69 72 65 6c 79 20 75 6e 73 75 70 70 6f 72 | y.supported.or.entirely.unsuppor |
7d60 | 74 65 64 20 6e 6f 64 65 73 2e 0a 41 64 6f 70 74 65 64 20 66 72 6f 6d 20 0a 68 74 74 70 73 3a 2f | ted.nodes..Adopted.from..https:/ |
7d80 | 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6c 6f 62 70 63 67 2f 70 79 74 68 6f 6e 5f 65 78 61 6d 70 6c | /github.com/lobpcg/python_exampl |
7da0 | 65 73 2f 62 6c 6f 62 2f 6d 61 73 74 65 72 2f 6e 65 74 77 6f 72 6b 78 5f 65 78 61 6d 70 6c 65 2e | es/blob/master/networkx_example. |
7dc0 | 70 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d | py."""..import.networkx.as.nx.im |
7de0 | 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 0a 0a | port.matplotlib.pyplot.as.plt... |
7e00 | 64 65 66 20 67 72 61 70 68 5f 70 61 72 74 69 74 69 6f 6e 69 6e 67 28 47 2c 20 70 6c 6f 74 74 69 | def.graph_partitioning(G,.plotti |
7e20 | 6e 67 3d 54 72 75 65 29 3a 0a 20 20 20 20 22 22 22 50 61 72 74 69 74 69 6f 6e 20 61 20 64 69 72 | ng=True):....."""Partition.a.dir |
7e40 | 65 63 74 65 64 20 67 72 61 70 68 20 69 6e 74 6f 20 61 20 6c 69 73 74 20 6f 66 20 73 75 62 67 72 | ected.graph.into.a.list.of.subgr |
7e60 | 61 70 68 73 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 0a 20 20 20 20 6f 6e 6c 79 20 65 6e 74 69 72 | aphs.that.contain.....only.entir |
7e80 | 65 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 72 20 65 6e 74 69 72 65 6c 79 20 75 6e 73 75 70 70 | ely.supported.or.entirely.unsupp |
7ea0 | 6f 72 74 65 64 20 6e 6f 64 65 73 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 23 20 43 61 74 65 67 | orted.nodes......""".....#.Categ |
7ec0 | 6f 72 69 7a 65 20 6e 6f 64 65 73 20 62 79 20 74 68 65 69 72 20 6e 6f 64 65 5f 74 79 70 65 20 61 | orize.nodes.by.their.node_type.a |
7ee0 | 74 74 72 69 62 75 74 65 0a 20 20 20 20 73 75 70 70 6f 72 74 65 64 5f 6e 6f 64 65 73 20 3d 20 7b | ttribute.....supported_nodes.=.{ |
7f00 | 6e 20 66 6f 72 20 6e 2c 20 64 20 69 6e 20 47 2e 6e 6f 64 65 73 28 64 61 74 61 3d 22 6e 6f 64 65 | n.for.n,.d.in.G.nodes(data="node |
7f20 | 5f 74 79 70 65 22 29 20 69 66 20 64 20 3d 3d 20 22 73 75 70 70 6f 72 74 65 64 22 7d 0a 20 20 20 | _type").if.d.==."supported"}.... |
7f40 | 20 75 6e 73 75 70 70 6f 72 74 65 64 5f 6e 6f 64 65 73 20 3d 20 7b 6e 20 66 6f 72 20 6e 2c 20 64 | .unsupported_nodes.=.{n.for.n,.d |
7f60 | 20 69 6e 20 47 2e 6e 6f 64 65 73 28 64 61 74 61 3d 22 6e 6f 64 65 5f 74 79 70 65 22 29 20 69 66 | .in.G.nodes(data="node_type").if |
7f80 | 20 64 20 3d 3d 20 22 75 6e 73 75 70 70 6f 72 74 65 64 22 7d 0a 0a 20 20 20 20 23 20 4d 61 6b 65 | .d.==."unsupported"}......#.Make |
7fa0 | 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 67 72 61 70 68 2e 0a 20 20 20 20 48 20 3d 20 47 2e | .a.copy.of.the.graph......H.=.G. |
7fc0 | 63 6f 70 79 28 29 0a 20 20 20 20 23 20 52 65 6d 6f 76 65 20 61 6c 6c 20 65 64 67 65 73 20 63 6f | copy().....#.Remove.all.edges.co |
7fe0 | 6e 6e 65 63 74 69 6e 67 20 73 75 70 70 6f 72 74 65 64 20 61 6e 64 20 75 6e 73 75 70 70 6f 72 74 | nnecting.supported.and.unsupport |
8000 | 65 64 20 6e 6f 64 65 73 2e 0a 20 20 20 20 48 2e 72 65 6d 6f 76 65 5f 65 64 67 65 73 5f 66 72 6f | ed.nodes......H.remove_edges_fro |
8020 | 6d 28 0a 20 20 20 20 20 20 20 20 28 6e 2c 20 6e 62 72 2c 20 64 29 0a 20 20 20 20 20 20 20 20 66 | m(.........(n,.nbr,.d).........f |
8040 | 6f 72 20 6e 2c 20 6e 62 72 73 20 69 6e 20 47 2e 61 64 6a 2e 69 74 65 6d 73 28 29 0a 20 20 20 20 | or.n,.nbrs.in.G.adj.items()..... |
8060 | 20 20 20 20 69 66 20 6e 20 69 6e 20 73 75 70 70 6f 72 74 65 64 5f 6e 6f 64 65 73 0a 20 20 20 20 | ....if.n.in.supported_nodes..... |
8080 | 20 20 20 20 66 6f 72 20 6e 62 72 2c 20 64 20 69 6e 20 6e 62 72 73 2e 69 74 65 6d 73 28 29 0a 20 | ....for.nbr,.d.in.nbrs.items().. |
80a0 | 20 20 20 20 20 20 20 69 66 20 6e 62 72 20 69 6e 20 75 6e 73 75 70 70 6f 72 74 65 64 5f 6e 6f 64 | .......if.nbr.in.unsupported_nod |
80c0 | 65 73 0a 20 20 20 20 29 0a 20 20 20 20 48 2e 72 65 6d 6f 76 65 5f 65 64 67 65 73 5f 66 72 6f 6d | es.....).....H.remove_edges_from |
80e0 | 28 0a 20 20 20 20 20 20 20 20 28 6e 2c 20 6e 62 72 2c 20 64 29 0a 20 20 20 20 20 20 20 20 66 6f | (.........(n,.nbr,.d).........fo |
8100 | 72 20 6e 2c 20 6e 62 72 73 20 69 6e 20 47 2e 61 64 6a 2e 69 74 65 6d 73 28 29 0a 20 20 20 20 20 | r.n,.nbrs.in.G.adj.items()...... |
8120 | 20 20 20 69 66 20 6e 20 69 6e 20 75 6e 73 75 70 70 6f 72 74 65 64 5f 6e 6f 64 65 73 0a 20 20 20 | ...if.n.in.unsupported_nodes.... |
8140 | 20 20 20 20 20 66 6f 72 20 6e 62 72 2c 20 64 20 69 6e 20 6e 62 72 73 2e 69 74 65 6d 73 28 29 0a | .....for.nbr,.d.in.nbrs.items(). |
8160 | 20 20 20 20 20 20 20 20 69 66 20 6e 62 72 20 69 6e 20 73 75 70 70 6f 72 74 65 64 5f 6e 6f 64 65 | ........if.nbr.in.supported_node |
8180 | 73 0a 20 20 20 20 29 0a 0a 20 20 20 20 23 20 43 6f 6c 6c 65 63 74 20 61 6c 6c 20 72 65 6d 6f 76 | s.....)......#.Collect.all.remov |
81a0 | 65 64 20 65 64 67 65 73 20 66 6f 72 20 72 65 63 6f 6e 73 74 72 75 63 74 69 6f 6e 2e 0a 20 20 20 | ed.edges.for.reconstruction..... |
81c0 | 20 47 5f 6d 69 6e 75 73 5f 48 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 29 0a 20 20 20 20 47 5f | .G_minus_H.=.nx.DiGraph().....G_ |
81e0 | 6d 69 6e 75 73 5f 48 2e 61 64 64 5f 65 64 67 65 73 5f 66 72 6f 6d 28 73 65 74 28 47 2e 65 64 67 | minus_H.add_edges_from(set(G.edg |
8200 | 65 73 29 20 2d 20 73 65 74 28 48 2e 65 64 67 65 73 29 29 0a 0a 20 20 20 20 69 66 20 70 6c 6f 74 | es).-.set(H.edges))......if.plot |
8220 | 74 69 6e 67 3a 0a 20 20 20 20 20 20 20 20 23 20 50 6c 6f 74 20 74 68 65 20 73 74 72 69 70 70 65 | ting:.........#.Plot.the.strippe |
8240 | 64 20 67 72 61 70 68 20 77 69 74 68 20 74 68 65 20 65 64 67 65 73 20 72 65 6d 6f 76 65 64 2e 0a | d.graph.with.the.edges.removed.. |
8260 | 20 20 20 20 20 20 20 20 5f 6e 6f 64 65 5f 63 6f 6c 6f 72 73 20 3d 20 5b 63 20 66 6f 72 20 5f 2c | ........_node_colors.=.[c.for._, |
8280 | 20 63 20 69 6e 20 48 2e 6e 6f 64 65 73 28 64 61 74 61 3d 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 29 | .c.in.H.nodes(data="node_color") |
82a0 | 5d 0a 20 20 20 20 20 20 20 20 5f 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 | ]........._pos.=.nx.spring_layou |
82c0 | 74 28 48 29 0a 20 20 20 20 20 20 20 20 70 6c 74 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d | t(H).........plt.figure(figsize= |
82e0 | 28 38 2c 20 38 29 29 0a 20 20 20 20 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 | (8,.8)).........nx.draw_networkx |
8300 | 5f 65 64 67 65 73 28 48 2c 20 5f 70 6f 73 2c 20 61 6c 70 68 61 3d 30 2e 33 2c 20 65 64 67 65 5f | _edges(H,._pos,.alpha=0.3,.edge_ |
8320 | 63 6f 6c 6f 72 3d 22 6b 22 29 0a 20 20 20 20 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f | color="k").........nx.draw_netwo |
8340 | 72 6b 78 5f 6e 6f 64 65 73 28 48 2c 20 5f 70 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 5f 6e | rkx_nodes(H,._pos,.node_color=_n |
8360 | 6f 64 65 5f 63 6f 6c 6f 72 73 29 0a 20 20 20 20 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 | ode_colors).........nx.draw_netw |
8380 | 6f 72 6b 78 5f 6c 61 62 65 6c 73 28 48 2c 20 5f 70 6f 73 2c 20 66 6f 6e 74 5f 73 69 7a 65 3d 31 | orkx_labels(H,._pos,.font_size=1 |
83a0 | 34 29 0a 20 20 20 20 20 20 20 20 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 20 20 20 20 20 | 4).........plt.axis("off")...... |
83c0 | 20 20 20 70 6c 74 2e 74 69 74 6c 65 28 22 54 68 65 20 73 74 72 69 70 70 65 64 20 67 72 61 70 68 | ...plt.title("The.stripped.graph |
83e0 | 20 77 69 74 68 20 74 68 65 20 65 64 67 65 73 20 72 65 6d 6f 76 65 64 2e 22 29 0a 20 20 20 20 20 | .with.the.edges.removed.")...... |
8400 | 20 20 20 70 6c 74 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 20 20 23 20 50 6c 6f 74 20 74 68 65 | ...plt.show().........#.Plot.the |
8420 | 20 74 68 65 20 65 64 67 65 73 20 72 65 6d 6f 76 65 64 2e 0a 20 20 20 20 20 20 20 20 5f 70 6f 73 | .the.edges.removed.........._pos |
8440 | 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 5f 6d 69 6e 75 73 5f 48 29 0a 20 | .=.nx.spring_layout(G_minus_H).. |
8460 | 20 20 20 20 20 20 20 70 6c 74 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 38 2c 20 38 29 | .......plt.figure(figsize=(8,.8) |
8480 | 29 0a 20 20 20 20 20 20 20 20 6e 63 6c 20 3d 20 5b 47 2e 6e 6f 64 65 73 5b 6e 5d 5b 22 6e 6f 64 | ).........ncl.=.[G.nodes[n]["nod |
84a0 | 65 5f 63 6f 6c 6f 72 22 5d 20 66 6f 72 20 6e 20 69 6e 20 47 5f 6d 69 6e 75 73 5f 48 2e 6e 6f 64 | e_color"].for.n.in.G_minus_H.nod |
84c0 | 65 73 5d 0a 20 20 20 20 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 | es].........nx.draw_networkx_edg |
84e0 | 65 73 28 47 5f 6d 69 6e 75 73 5f 48 2c 20 5f 70 6f 73 2c 20 61 6c 70 68 61 3d 30 2e 33 2c 20 65 | es(G_minus_H,._pos,.alpha=0.3,.e |
8500 | 64 67 65 5f 63 6f 6c 6f 72 3d 22 6b 22 29 0a 20 20 20 20 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e | dge_color="k").........nx.draw_n |
8520 | 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 47 5f 6d 69 6e 75 73 5f 48 2c 20 5f 70 6f 73 2c 20 6e | etworkx_nodes(G_minus_H,._pos,.n |
8540 | 6f 64 65 5f 63 6f 6c 6f 72 3d 6e 63 6c 29 0a 20 20 20 20 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e | ode_color=ncl).........nx.draw_n |
8560 | 65 74 77 6f 72 6b 78 5f 6c 61 62 65 6c 73 28 47 5f 6d 69 6e 75 73 5f 48 2c 20 5f 70 6f 73 2c 20 | etworkx_labels(G_minus_H,._pos,. |
8580 | 66 6f 6e 74 5f 73 69 7a 65 3d 31 34 29 0a 20 20 20 20 20 20 20 20 70 6c 74 2e 61 78 69 73 28 22 | font_size=14).........plt.axis(" |
85a0 | 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 70 6c 74 2e 74 69 74 6c 65 28 22 54 68 65 20 72 65 6d | off").........plt.title("The.rem |
85c0 | 6f 76 65 64 20 65 64 67 65 73 2e 22 29 0a 20 20 20 20 20 20 20 20 70 6c 74 2e 73 68 6f 77 28 29 | oved.edges.").........plt.show() |
85e0 | 0a 0a 20 20 20 20 23 20 46 69 6e 64 20 74 68 65 20 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f | ......#.Find.the.connected.compo |
8600 | 6e 65 6e 74 73 20 69 6e 20 74 68 65 20 73 74 72 69 70 70 65 64 20 75 6e 64 69 72 65 63 74 65 64 | nents.in.the.stripped.undirected |
8620 | 20 67 72 61 70 68 2e 0a 20 20 20 20 23 20 41 6e 64 20 75 73 65 20 74 68 65 20 73 65 74 73 2c 20 | .graph......#.And.use.the.sets,. |
8640 | 73 70 65 63 69 66 79 69 6e 67 20 74 68 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2c 20 74 6f 20 70 61 | specifying.the.components,.to.pa |
8660 | 72 74 69 74 69 6f 6e 0a 20 20 20 20 23 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 69 72 65 63 | rtition.....#.the.original.direc |
8680 | 74 65 64 20 67 72 61 70 68 20 69 6e 74 6f 20 61 20 6c 69 73 74 20 6f 66 20 64 69 72 65 63 74 65 | ted.graph.into.a.list.of.directe |
86a0 | 64 20 73 75 62 67 72 61 70 68 73 0a 20 20 20 20 23 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 20 6f | d.subgraphs.....#.that.contain.o |
86c0 | 6e 6c 79 20 65 6e 74 69 72 65 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 72 20 65 6e 74 69 72 65 | nly.entirely.supported.or.entire |
86e0 | 6c 79 20 75 6e 73 75 70 70 6f 72 74 65 64 20 6e 6f 64 65 73 2e 0a 20 20 20 20 73 75 62 67 72 61 | ly.unsupported.nodes......subgra |
8700 | 70 68 73 20 3d 20 5b 0a 20 20 20 20 20 20 20 20 48 2e 73 75 62 67 72 61 70 68 28 63 29 2e 63 6f | phs.=.[.........H.subgraph(c).co |
8720 | 70 79 28 29 20 66 6f 72 20 63 20 69 6e 20 6e 78 2e 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f | py().for.c.in.nx.connected_compo |
8740 | 6e 65 6e 74 73 28 48 2e 74 6f 5f 75 6e 64 69 72 65 63 74 65 64 28 29 29 0a 20 20 20 20 5d 0a 0a | nents(H.to_undirected()).....].. |
8760 | 20 20 20 20 72 65 74 75 72 6e 20 73 75 62 67 72 61 70 68 73 2c 20 47 5f 6d 69 6e 75 73 5f 48 0a | ....return.subgraphs,.G_minus_H. |
8780 | 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ..############################## |
87a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
87c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 43 72 65 61 74 65 20 61 6e 20 65 78 | #################.#.Create.an.ex |
87e0 | 61 6d 70 6c 65 20 64 69 72 65 63 74 65 64 20 67 72 61 70 68 2e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d | ample.directed.graph..#.-------- |
8800 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 0a 23 20 54 68 | -------------------------.#.#.Th |
8820 | 69 73 20 64 69 72 65 63 74 65 64 20 67 72 61 70 68 20 68 61 73 20 6f 6e 65 20 69 6e 70 75 74 20 | is.directed.graph.has.one.input. |
8840 | 6e 6f 64 65 20 6c 61 62 65 6c 65 64 20 60 69 6e 60 20 61 6e 64 20 70 6c 6f 74 74 65 64 20 69 6e | node.labeled.`in`.and.plotted.in |
8860 | 20 62 6c 75 65 20 63 6f 6c 6f 72 0a 23 20 61 6e 64 20 6f 6e 65 20 6f 75 74 70 75 74 20 6e 6f 64 | .blue.color.#.and.one.output.nod |
8880 | 65 20 6c 61 62 65 6c 65 64 20 60 6f 75 74 60 20 61 6e 64 20 70 6c 6f 74 74 65 64 20 69 6e 20 6d | e.labeled.`out`.and.plotted.in.m |
88a0 | 61 67 65 6e 74 61 20 63 6f 6c 6f 72 2e 0a 23 20 54 68 65 20 6f 74 68 65 72 20 73 69 78 20 6e 6f | agenta.color..#.The.other.six.no |
88c0 | 64 65 73 20 61 72 65 20 63 6c 61 73 73 69 66 69 65 64 20 61 73 20 66 6f 75 72 20 60 73 75 70 70 | des.are.classified.as.four.`supp |
88e0 | 6f 72 74 65 64 60 20 70 6c 6f 74 74 65 64 20 69 6e 20 67 72 65 65 6e 20 63 6f 6c 6f 72 0a 23 20 | orted`.plotted.in.green.color.#. |
8900 | 61 6e 64 20 74 77 6f 20 60 75 6e 73 75 70 70 6f 72 74 65 64 60 20 70 6c 6f 74 74 65 64 20 69 6e | and.two.`unsupported`.plotted.in |
8920 | 20 72 65 64 20 63 6f 6c 6f 72 2e 20 54 68 65 20 67 6f 61 6c 20 69 73 20 63 6f 6d 70 75 74 69 6e | .red.color..The.goal.is.computin |
8940 | 67 20 61 20 6c 69 73 74 0a 23 20 6f 66 20 73 75 62 67 72 61 70 68 73 20 74 68 61 74 20 63 6f 6e | g.a.list.#.of.subgraphs.that.con |
8960 | 74 61 69 6e 20 6f 6e 6c 79 20 65 6e 74 69 72 65 6c 79 20 60 73 75 70 70 6f 72 74 65 64 60 20 6f | tain.only.entirely.`supported`.o |
8980 | 72 20 60 75 6e 73 75 70 70 6f 72 74 65 64 60 20 6e 6f 64 65 73 2e 0a 47 5f 65 78 20 3d 20 6e 78 | r.`unsupported`.nodes..G_ex.=.nx |
89a0 | 2e 44 69 47 72 61 70 68 28 29 0a 47 5f 65 78 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 5b | .DiGraph().G_ex.add_nodes_from([ |
89c0 | 22 49 6e 22 5d 2c 20 6e 6f 64 65 5f 74 79 70 65 3d 22 69 6e 70 75 74 22 2c 20 6e 6f 64 65 5f 63 | "In"],.node_type="input",.node_c |
89e0 | 6f 6c 6f 72 3d 22 62 22 29 0a 47 5f 65 78 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 5b 22 | olor="b").G_ex.add_nodes_from([" |
8a00 | 41 22 2c 20 22 43 22 2c 20 22 45 22 2c 20 22 46 22 5d 2c 20 6e 6f 64 65 5f 74 79 70 65 3d 22 73 | A",."C",."E",."F"],.node_type="s |
8a20 | 75 70 70 6f 72 74 65 64 22 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 67 22 29 0a 47 5f 65 78 2e | upported",.node_color="g").G_ex. |
8a40 | 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 5b 22 42 22 2c 20 22 44 22 5d 2c 20 6e 6f 64 65 5f | add_nodes_from(["B",."D"],.node_ |
8a60 | 74 79 70 65 3d 22 75 6e 73 75 70 70 6f 72 74 65 64 22 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 | type="unsupported",.node_color=" |
8a80 | 72 22 29 0a 47 5f 65 78 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 5b 22 4f 75 74 22 5d 2c | r").G_ex.add_nodes_from(["Out"], |
8aa0 | 20 6e 6f 64 65 5f 74 79 70 65 3d 22 6f 75 74 70 75 74 22 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d | .node_type="output",.node_color= |
8ac0 | 22 6d 22 29 0a 47 5f 65 78 2e 61 64 64 5f 65 64 67 65 73 5f 66 72 6f 6d 28 0a 20 20 20 20 5b 0a | "m").G_ex.add_edges_from(.....[. |
8ae0 | 20 20 20 20 20 20 20 20 28 22 49 6e 22 2c 20 22 41 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 41 | ........("In",."A"),.........("A |
8b00 | 22 2c 20 22 42 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 42 22 2c 20 22 43 22 29 2c 0a 20 20 20 | ",."B"),.........("B",."C"),.... |
8b20 | 20 20 20 20 20 28 22 42 22 2c 20 22 44 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 44 22 2c 20 22 | .....("B",."D"),.........("D",." |
8b40 | 45 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 43 22 2c 20 22 46 22 29 2c 0a 20 20 20 20 20 20 20 | E"),.........("C",."F"),........ |
8b60 | 20 28 22 45 22 2c 20 22 46 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 46 22 2c 20 22 4f 75 74 22 | .("E",."F"),.........("F",."Out" |
8b80 | 29 2c 0a 20 20 20 20 5d 0a 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ),.....].)..#################### |
8ba0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8bc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c | ###########################.#.Pl |
8be0 | 6f 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 67 72 61 70 68 2e 0a 23 20 2d 2d 2d 2d 2d 2d 2d | ot.the.original.graph..#.------- |
8c00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 0a 6e 6f 64 65 5f 63 6f 6c 6f 72 5f 6c | -----------------.#.node_color_l |
8c20 | 69 73 74 20 3d 20 5b 6e 63 20 66 6f 72 20 5f 2c 20 6e 63 20 69 6e 20 47 5f 65 78 2e 6e 6f 64 65 | ist.=.[nc.for._,.nc.in.G_ex.node |
8c40 | 73 28 64 61 74 61 3d 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 29 5d 0a 70 6f 73 20 3d 20 6e 78 2e 73 | s(data="node_color")].pos.=.nx.s |
8c60 | 70 65 63 74 72 61 6c 5f 6c 61 79 6f 75 74 28 47 5f 65 78 29 0a 70 6c 74 2e 66 69 67 75 72 65 28 | pectral_layout(G_ex).plt.figure( |
8c80 | 66 69 67 73 69 7a 65 3d 28 38 2c 20 38 29 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 | figsize=(8,.8)).nx.draw_networkx |
8ca0 | 5f 65 64 67 65 73 28 47 5f 65 78 2c 20 70 6f 73 2c 20 61 6c 70 68 61 3d 30 2e 33 2c 20 65 64 67 | _edges(G_ex,.pos,.alpha=0.3,.edg |
8cc0 | 65 5f 63 6f 6c 6f 72 3d 22 6b 22 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f | e_color="k").nx.draw_networkx_no |
8ce0 | 64 65 73 28 47 5f 65 78 2c 20 70 6f 73 2c 20 61 6c 70 68 61 3d 30 2e 38 2c 20 6e 6f 64 65 5f 63 | des(G_ex,.pos,.alpha=0.8,.node_c |
8d00 | 6f 6c 6f 72 3d 6e 6f 64 65 5f 63 6f 6c 6f 72 5f 6c 69 73 74 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 | olor=node_color_list).nx.draw_ne |
8d20 | 74 77 6f 72 6b 78 5f 6c 61 62 65 6c 73 28 47 5f 65 78 2c 20 70 6f 73 2c 20 66 6f 6e 74 5f 73 69 | tworkx_labels(G_ex,.pos,.font_si |
8d40 | 7a 65 3d 31 34 29 0a 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 70 6c 74 2e 74 69 74 6c 65 | ze=14).plt.axis("off").plt.title |
8d60 | 28 22 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 67 72 61 70 68 2e 22 29 0a 70 6c 74 2e 73 68 6f 77 | ("The.original.graph.").plt.show |
8d80 | 28 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ()..############################ |
8da0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8dc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 43 61 6c 63 75 6c 61 74 65 20 | ###################.#.Calculate. |
8de0 | 74 68 65 20 73 75 62 67 72 61 70 68 73 20 77 69 74 68 20 70 6c 6f 74 74 69 6e 67 20 61 6c 6c 20 | the.subgraphs.with.plotting.all. |
8e00 | 72 65 73 75 6c 74 73 20 6f 66 20 69 6e 74 65 6d 65 64 69 61 74 65 20 73 74 65 70 73 2e 0a 23 20 | results.of.intemediate.steps..#. |
8e20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
8e40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
8e60 | 2d 2d 2d 2d 2d 2d 2d 0a 23 0a 73 75 62 67 72 61 70 68 73 5f 6f 66 5f 47 5f 65 78 2c 20 72 65 6d | -------.#.subgraphs_of_G_ex,.rem |
8e80 | 6f 76 65 64 5f 65 64 67 65 73 20 3d 20 67 72 61 70 68 5f 70 61 72 74 69 74 69 6f 6e 69 6e 67 28 | oved_edges.=.graph_partitioning( |
8ea0 | 47 5f 65 78 2c 20 70 6c 6f 74 74 69 6e 67 3d 54 72 75 65 29 0a 0a 23 23 23 23 23 23 23 23 23 23 | G_ex,.plotting=True)..########## |
8ec0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8ee0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8f00 | 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 74 68 65 20 72 65 73 75 6c 74 73 3a 20 65 76 65 72 79 20 | #####.#.Plot.the.results:.every. |
8f20 | 73 75 62 67 72 61 70 68 20 69 6e 20 74 68 65 20 6c 69 73 74 2e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d | subgraph.in.the.list..#.-------- |
8f40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
8f60 | 2d 2d 2d 2d 2d 0a 23 0a 66 6f 72 20 73 75 62 67 72 61 70 68 20 69 6e 20 73 75 62 67 72 61 70 68 | -----.#.for.subgraph.in.subgraph |
8f80 | 73 5f 6f 66 5f 47 5f 65 78 3a 0a 20 20 20 20 5f 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f | s_of_G_ex:....._pos.=.nx.spring_ |
8fa0 | 6c 61 79 6f 75 74 28 73 75 62 67 72 61 70 68 29 0a 20 20 20 20 70 6c 74 2e 66 69 67 75 72 65 28 | layout(subgraph).....plt.figure( |
8fc0 | 66 69 67 73 69 7a 65 3d 28 38 2c 20 38 29 29 0a 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 | figsize=(8,.8)).....nx.draw_netw |
8fe0 | 6f 72 6b 78 5f 65 64 67 65 73 28 73 75 62 67 72 61 70 68 2c 20 5f 70 6f 73 2c 20 61 6c 70 68 61 | orkx_edges(subgraph,._pos,.alpha |
9000 | 3d 30 2e 33 2c 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 22 6b 22 29 0a 20 20 20 20 6e 6f 64 65 5f 63 | =0.3,.edge_color="k").....node_c |
9020 | 6f 6c 6f 72 5f 6c 69 73 74 5f 63 20 3d 20 5b 6e 63 20 66 6f 72 20 5f 2c 20 6e 63 20 69 6e 20 73 | olor_list_c.=.[nc.for._,.nc.in.s |
9040 | 75 62 67 72 61 70 68 2e 6e 6f 64 65 73 28 64 61 74 61 3d 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 29 | ubgraph.nodes(data="node_color") |
9060 | 5d 0a 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 73 75 62 | ].....nx.draw_networkx_nodes(sub |
9080 | 67 72 61 70 68 2c 20 5f 70 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 6e 6f 64 65 5f 63 6f 6c | graph,._pos,.node_color=node_col |
90a0 | 6f 72 5f 6c 69 73 74 5f 63 29 0a 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f | or_list_c).....nx.draw_networkx_ |
90c0 | 6c 61 62 65 6c 73 28 73 75 62 67 72 61 70 68 2c 20 5f 70 6f 73 2c 20 66 6f 6e 74 5f 73 69 7a 65 | labels(subgraph,._pos,.font_size |
90e0 | 3d 31 34 29 0a 20 20 20 20 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 20 20 20 20 70 6c 74 | =14).....plt.axis("off").....plt |
9100 | 2e 74 69 74 6c 65 28 22 4f 6e 65 20 6f 66 20 74 68 65 20 73 75 62 67 72 61 70 68 73 2e 22 29 0a | .title("One.of.the.subgraphs."). |
9120 | 20 20 20 20 70 6c 74 2e 73 68 6f 77 28 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ....plt.show()..################ |
9140 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9160 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a | ###############################. |
9180 | 23 20 50 75 74 20 74 68 65 20 67 72 61 70 68 20 62 61 63 6b 20 66 72 6f 6d 20 74 68 65 20 6c 69 | #.Put.the.graph.back.from.the.li |
91a0 | 73 74 20 6f 66 20 73 75 62 67 72 61 70 68 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | st.of.subgraphs.#.-------------- |
91c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a | -------------------------------. |
91e0 | 23 0a 47 5f 65 78 5f 72 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 29 0a 23 20 43 6f 6d 70 6f 73 | #.G_ex_r.=.nx.DiGraph().#.Compos |
9200 | 69 6e 67 20 61 6c 6c 20 73 75 62 67 72 61 70 68 73 2e 0a 66 6f 72 20 73 75 62 67 72 61 70 68 20 | ing.all.subgraphs..for.subgraph. |
9220 | 69 6e 20 73 75 62 67 72 61 70 68 73 5f 6f 66 5f 47 5f 65 78 3a 0a 20 20 20 20 47 5f 65 78 5f 72 | in.subgraphs_of_G_ex:.....G_ex_r |
9240 | 20 3d 20 6e 78 2e 63 6f 6d 70 6f 73 65 28 47 5f 65 78 5f 72 2c 20 73 75 62 67 72 61 70 68 29 0a | .=.nx.compose(G_ex_r,.subgraph). |
9260 | 23 20 41 64 64 69 6e 67 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 73 74 6f 72 65 64 20 65 | #.Adding.the.previously.stored.e |
9280 | 64 67 65 73 2e 0a 47 5f 65 78 5f 72 2e 61 64 64 5f 65 64 67 65 73 5f 66 72 6f 6d 28 72 65 6d 6f | dges..G_ex_r.add_edges_from(remo |
92a0 | 76 65 64 5f 65 64 67 65 73 2e 65 64 67 65 73 28 29 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 | ved_edges.edges())..############ |
92c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
92e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9300 | 23 23 23 0a 23 20 43 68 65 63 6b 20 74 68 61 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 67 72 | ###.#.Check.that.the.original.gr |
9320 | 61 70 68 20 61 6e 64 20 74 68 65 20 72 65 63 6f 6e 73 74 72 75 63 74 65 64 20 67 72 61 70 68 73 | aph.and.the.reconstructed.graphs |
9340 | 20 61 72 65 20 69 73 6f 6d 6f 72 70 68 69 63 2e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .are.isomorphic..#.------------- |
9360 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
9380 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 0a | -----------------------------.#. |
93a0 | 61 73 73 65 72 74 20 6e 78 2e 69 73 5f 69 73 6f 6d 6f 72 70 68 69 63 28 47 5f 65 78 2c 20 47 5f | assert.nx.is_isomorphic(G_ex,.G_ |
93c0 | 65 78 5f 72 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ex_r)..######################### |
93e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9400 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 74 68 | ######################.#.Plot.th |
9420 | 65 20 72 65 63 6f 6e 73 74 72 75 63 74 65 64 20 67 72 61 70 68 2e 0a 23 20 2d 2d 2d 2d 2d 2d 2d | e.reconstructed.graph..#.------- |
9440 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 0a 6e 6f 64 65 5f 63 6f | ----------------------.#.node_co |
9460 | 6c 6f 72 5f 6c 69 73 74 20 3d 20 5b 6e 63 20 66 6f 72 20 5f 2c 20 6e 63 20 69 6e 20 47 5f 65 78 | lor_list.=.[nc.for._,.nc.in.G_ex |
9480 | 5f 72 2e 6e 6f 64 65 73 28 64 61 74 61 3d 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 29 5d 0a 70 6f 73 | _r.nodes(data="node_color")].pos |
94a0 | 20 3d 20 6e 78 2e 73 70 65 63 74 72 61 6c 5f 6c 61 79 6f 75 74 28 47 5f 65 78 5f 72 29 0a 70 6c | .=.nx.spectral_layout(G_ex_r).pl |
94c0 | 74 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 38 2c 20 38 29 29 0a 6e 78 2e 64 72 61 77 | t.figure(figsize=(8,.8)).nx.draw |
94e0 | 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 47 5f 65 78 5f 72 2c 20 70 6f 73 2c 20 61 6c 70 | _networkx_edges(G_ex_r,.pos,.alp |
9500 | 68 61 3d 30 2e 33 2c 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 22 6b 22 29 0a 6e 78 2e 64 72 61 77 5f | ha=0.3,.edge_color="k").nx.draw_ |
9520 | 6e 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 47 5f 65 78 5f 72 2c 20 70 6f 73 2c 20 61 6c 70 68 | networkx_nodes(G_ex_r,.pos,.alph |
9540 | 61 3d 30 2e 38 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 6e 6f 64 65 5f 63 6f 6c 6f 72 5f 6c 69 73 | a=0.8,.node_color=node_color_lis |
9560 | 74 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6c 61 62 65 6c 73 28 47 5f 65 78 5f | t).nx.draw_networkx_labels(G_ex_ |
9580 | 72 2c 20 70 6f 73 2c 20 66 6f 6e 74 5f 73 69 7a 65 3d 31 34 29 0a 70 6c 74 2e 61 78 69 73 28 22 | r,.pos,.font_size=14).plt.axis(" |
95a0 | 6f 66 66 22 29 0a 70 6c 74 2e 74 69 74 6c 65 28 22 54 68 65 20 72 65 63 6f 6e 73 74 72 75 63 74 | off").plt.title("The.reconstruct |
95c0 | 65 64 20 67 72 61 70 68 2e 22 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 | ed.graph.").plt.show().PK....... |
95e0 | 00 1d 7b 57 56 bf 97 02 92 0f 04 00 00 0f 04 00 00 16 00 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f | ..{WV................algorithms/ |
9600 | 70 6c 6f 74 5f 72 63 6d 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | plot_rcm.py""".================= |
9620 | 3d 3d 3d 3d 3d 0a 52 65 76 65 72 73 65 20 43 75 74 68 69 6c 6c 2d 2d 4d 63 4b 65 65 0a 3d 3d 3d | =====.Reverse.Cuthill--McKee.=== |
9640 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 43 75 74 68 69 6c 6c 2d 4d 63 4b | ===================..Cuthill-McK |
9660 | 65 65 20 6f 72 64 65 72 69 6e 67 20 6f 66 20 6d 61 74 72 69 63 65 73 0a 0a 54 68 65 20 72 65 76 | ee.ordering.of.matrices..The.rev |
9680 | 65 72 73 65 20 43 75 74 68 69 6c 6c 2d 2d 4d 63 4b 65 65 20 61 6c 67 6f 72 69 74 68 6d 20 67 69 | erse.Cuthill--McKee.algorithm.gi |
96a0 | 76 65 73 20 61 20 73 70 61 72 73 65 20 6d 61 74 72 69 78 20 6f 72 64 65 72 69 6e 67 20 74 68 61 | ves.a.sparse.matrix.ordering.tha |
96c0 | 74 0a 72 65 64 75 63 65 73 20 74 68 65 20 6d 61 74 72 69 78 20 62 61 6e 64 77 69 64 74 68 2e 0a | t.reduces.the.matrix.bandwidth.. |
96e0 | 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d | """..import.numpy.as.np.import.m |
9700 | 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 73 | atplotlib.pyplot.as.plt.import.s |
9720 | 65 61 62 6f 72 6e 20 61 73 20 73 6e 73 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 | eaborn.as.sns.import.networkx.as |
9740 | 20 6e 78 0a 0a 0a 23 20 62 75 69 6c 64 20 6c 6f 77 2d 62 61 6e 64 77 69 64 74 68 20 6d 61 74 72 | .nx...#.build.low-bandwidth.matr |
9760 | 69 78 0a 47 20 3d 20 6e 78 2e 67 72 69 64 5f 32 64 5f 67 72 61 70 68 28 33 2c 20 33 29 0a 72 63 | ix.G.=.nx.grid_2d_graph(3,.3).rc |
9780 | 6d 20 3d 20 6c 69 73 74 28 6e 78 2e 75 74 69 6c 73 2e 72 65 76 65 72 73 65 5f 63 75 74 68 69 6c | m.=.list(nx.utils.reverse_cuthil |
97a0 | 6c 5f 6d 63 6b 65 65 5f 6f 72 64 65 72 69 6e 67 28 47 29 29 0a 70 72 69 6e 74 28 22 6f 72 64 65 | l_mckee_ordering(G)).print("orde |
97c0 | 72 69 6e 67 22 2c 20 72 63 6d 29 0a 0a 70 72 69 6e 74 28 22 75 6e 6f 72 64 65 72 65 64 20 4c 61 | ring",.rcm)..print("unordered.La |
97e0 | 70 6c 61 63 69 61 6e 20 6d 61 74 72 69 78 22 29 0a 41 20 3d 20 6e 78 2e 6c 61 70 6c 61 63 69 61 | placian.matrix").A.=.nx.laplacia |
9800 | 6e 5f 6d 61 74 72 69 78 28 47 29 0a 78 2c 20 79 20 3d 20 6e 70 2e 6e 6f 6e 7a 65 72 6f 28 41 29 | n_matrix(G).x,.y.=.np.nonzero(A) |
9820 | 0a 23 20 70 72 69 6e 74 28 66 22 6c 6f 77 65 72 20 62 61 6e 64 77 69 64 74 68 3a 20 7b 28 79 20 | .#.print(f"lower.bandwidth:.{(y. |
9840 | 2d 20 78 29 2e 6d 61 78 28 29 7d 22 29 0a 23 20 70 72 69 6e 74 28 66 22 75 70 70 65 72 20 62 61 | -.x).max()}").#.print(f"upper.ba |
9860 | 6e 64 77 69 64 74 68 3a 20 7b 28 78 20 2d 20 79 29 2e 6d 61 78 28 29 7d 22 29 0a 70 72 69 6e 74 | ndwidth:.{(x.-.y).max()}").print |
9880 | 28 66 22 62 61 6e 64 77 69 64 74 68 3a 20 7b 28 79 20 2d 20 78 29 2e 6d 61 78 28 29 20 2b 20 28 | (f"bandwidth:.{(y.-.x).max().+.( |
98a0 | 78 20 2d 20 79 29 2e 6d 61 78 28 29 20 2b 20 31 7d 22 29 0a 70 72 69 6e 74 28 41 29 0a 0a 42 20 | x.-.y).max().+.1}").print(A)..B. |
98c0 | 3d 20 6e 78 2e 6c 61 70 6c 61 63 69 61 6e 5f 6d 61 74 72 69 78 28 47 2c 20 6e 6f 64 65 6c 69 73 | =.nx.laplacian_matrix(G,.nodelis |
98e0 | 74 3d 72 63 6d 29 0a 70 72 69 6e 74 28 22 6c 6f 77 2d 62 61 6e 64 77 69 64 74 68 20 4c 61 70 6c | t=rcm).print("low-bandwidth.Lapl |
9900 | 61 63 69 61 6e 20 6d 61 74 72 69 78 22 29 0a 78 2c 20 79 20 3d 20 6e 70 2e 6e 6f 6e 7a 65 72 6f | acian.matrix").x,.y.=.np.nonzero |
9920 | 28 42 29 0a 23 20 70 72 69 6e 74 28 66 22 6c 6f 77 65 72 20 62 61 6e 64 77 69 64 74 68 3a 20 7b | (B).#.print(f"lower.bandwidth:.{ |
9940 | 28 79 20 2d 20 78 29 2e 6d 61 78 28 29 7d 22 29 0a 23 20 70 72 69 6e 74 28 66 22 75 70 70 65 72 | (y.-.x).max()}").#.print(f"upper |
9960 | 20 62 61 6e 64 77 69 64 74 68 3a 20 7b 28 78 20 2d 20 79 29 2e 6d 61 78 28 29 7d 22 29 0a 70 72 | .bandwidth:.{(x.-.y).max()}").pr |
9980 | 69 6e 74 28 66 22 62 61 6e 64 77 69 64 74 68 3a 20 7b 28 79 20 2d 20 78 29 2e 6d 61 78 28 29 20 | int(f"bandwidth:.{(y.-.x).max(). |
99a0 | 2b 20 28 78 20 2d 20 79 29 2e 6d 61 78 28 29 20 2b 20 31 7d 22 29 0a 70 72 69 6e 74 28 42 29 0a | +.(x.-.y).max().+.1}").print(B). |
99c0 | 0a 73 6e 73 2e 68 65 61 74 6d 61 70 28 42 2e 74 6f 64 65 6e 73 65 28 29 2c 20 63 62 61 72 3d 46 | .sns.heatmap(B.todense(),.cbar=F |
99e0 | 61 6c 73 65 2c 20 73 71 75 61 72 65 3d 54 72 75 65 2c 20 6c 69 6e 65 77 69 64 74 68 73 3d 30 2e | alse,.square=True,.linewidths=0. |
9a00 | 35 2c 20 61 6e 6e 6f 74 3d 54 72 75 65 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 | 5,.annot=True).plt.show().PK.... |
9a20 | 00 00 00 00 fb 7a 57 56 cd e1 fa d2 29 04 00 00 29 04 00 00 18 00 00 00 62 61 73 69 63 2f 70 6c | .....zWV....)...).......basic/pl |
9a40 | 6f 74 5f 70 72 6f 70 65 72 74 69 65 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 50 | ot_properties.py""".==========.P |
9a60 | 72 6f 70 65 72 74 69 65 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 43 6f 6d 70 75 74 65 20 73 6f | roperties.==========..Compute.so |
9a80 | 6d 65 20 6e 65 74 77 6f 72 6b 20 70 72 6f 70 65 72 74 69 65 73 20 66 6f 72 20 74 68 65 20 6c 6f | me.network.properties.for.the.lo |
9aa0 | 6c 6c 69 70 6f 70 20 67 72 61 70 68 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f | llipop.graph.."""..import.matplo |
9ac0 | 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 | tlib.pyplot.as.plt.import.networ |
9ae0 | 6b 78 20 61 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 6c 6f 6c 6c 69 70 6f 70 5f 67 72 61 70 68 28 | kx.as.nx..G.=.nx.lollipop_graph( |
9b00 | 34 2c 20 36 29 0a 0a 70 61 74 68 6c 65 6e 67 74 68 73 20 3d 20 5b 5d 0a 0a 70 72 69 6e 74 28 22 | 4,.6)..pathlengths.=.[]..print(" |
9b20 | 73 6f 75 72 63 65 20 76 65 72 74 65 78 20 7b 74 61 72 67 65 74 3a 6c 65 6e 67 74 68 2c 20 7d 22 | source.vertex.{target:length,.}" |
9b40 | 29 0a 66 6f 72 20 76 20 69 6e 20 47 2e 6e 6f 64 65 73 28 29 3a 0a 20 20 20 20 73 70 6c 20 3d 20 | ).for.v.in.G.nodes():.....spl.=. |
9b60 | 64 69 63 74 28 6e 78 2e 73 69 6e 67 6c 65 5f 73 6f 75 72 63 65 5f 73 68 6f 72 74 65 73 74 5f 70 | dict(nx.single_source_shortest_p |
9b80 | 61 74 68 5f 6c 65 6e 67 74 68 28 47 2c 20 76 29 29 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b 76 | ath_length(G,.v)).....print(f"{v |
9ba0 | 7d 20 7b 73 70 6c 7d 20 22 29 0a 20 20 20 20 66 6f 72 20 70 20 69 6e 20 73 70 6c 3a 0a 20 20 20 | }.{spl}.").....for.p.in.spl:.... |
9bc0 | 20 20 20 20 20 70 61 74 68 6c 65 6e 67 74 68 73 2e 61 70 70 65 6e 64 28 73 70 6c 5b 70 5d 29 0a | .....pathlengths.append(spl[p]). |
9be0 | 0a 70 72 69 6e 74 28 29 0a 70 72 69 6e 74 28 66 22 61 76 65 72 61 67 65 20 73 68 6f 72 74 65 73 | .print().print(f"average.shortes |
9c00 | 74 20 70 61 74 68 20 6c 65 6e 67 74 68 20 7b 73 75 6d 28 70 61 74 68 6c 65 6e 67 74 68 73 29 20 | t.path.length.{sum(pathlengths). |
9c20 | 2f 20 6c 65 6e 28 70 61 74 68 6c 65 6e 67 74 68 73 29 7d 22 29 0a 0a 23 20 68 69 73 74 6f 67 72 | /.len(pathlengths)}")..#.histogr |
9c40 | 61 6d 20 6f 66 20 70 61 74 68 20 6c 65 6e 67 74 68 73 0a 64 69 73 74 20 3d 20 7b 7d 0a 66 6f 72 | am.of.path.lengths.dist.=.{}.for |
9c60 | 20 70 20 69 6e 20 70 61 74 68 6c 65 6e 67 74 68 73 3a 0a 20 20 20 20 69 66 20 70 20 69 6e 20 64 | .p.in.pathlengths:.....if.p.in.d |
9c80 | 69 73 74 3a 0a 20 20 20 20 20 20 20 20 64 69 73 74 5b 70 5d 20 2b 3d 20 31 0a 20 20 20 20 65 6c | ist:.........dist[p].+=.1.....el |
9ca0 | 73 65 3a 0a 20 20 20 20 20 20 20 20 64 69 73 74 5b 70 5d 20 3d 20 31 0a 0a 70 72 69 6e 74 28 29 | se:.........dist[p].=.1..print() |
9cc0 | 0a 70 72 69 6e 74 28 22 6c 65 6e 67 74 68 20 23 70 61 74 68 73 22 29 0a 76 65 72 74 73 20 3d 20 | .print("length.#paths").verts.=. |
9ce0 | 64 69 73 74 2e 6b 65 79 73 28 29 0a 66 6f 72 20 64 20 69 6e 20 73 6f 72 74 65 64 28 76 65 72 74 | dist.keys().for.d.in.sorted(vert |
9d00 | 73 29 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b 64 7d 20 7b 64 69 73 74 5b 64 5d 7d 22 29 0a | s):.....print(f"{d}.{dist[d]}"). |
9d20 | 0a 70 72 69 6e 74 28 66 22 72 61 64 69 75 73 3a 20 7b 6e 78 2e 72 61 64 69 75 73 28 47 29 7d 22 | .print(f"radius:.{nx.radius(G)}" |
9d40 | 29 0a 70 72 69 6e 74 28 66 22 64 69 61 6d 65 74 65 72 3a 20 7b 6e 78 2e 64 69 61 6d 65 74 65 72 | ).print(f"diameter:.{nx.diameter |
9d60 | 28 47 29 7d 22 29 0a 70 72 69 6e 74 28 66 22 65 63 63 65 6e 74 72 69 63 69 74 79 3a 20 7b 6e 78 | (G)}").print(f"eccentricity:.{nx |
9d80 | 2e 65 63 63 65 6e 74 72 69 63 69 74 79 28 47 29 7d 22 29 0a 70 72 69 6e 74 28 66 22 63 65 6e 74 | .eccentricity(G)}").print(f"cent |
9da0 | 65 72 3a 20 7b 6e 78 2e 63 65 6e 74 65 72 28 47 29 7d 22 29 0a 70 72 69 6e 74 28 66 22 70 65 72 | er:.{nx.center(G)}").print(f"per |
9dc0 | 69 70 68 65 72 79 3a 20 7b 6e 78 2e 70 65 72 69 70 68 65 72 79 28 47 29 7d 22 29 0a 70 72 69 6e | iphery:.{nx.periphery(G)}").prin |
9de0 | 74 28 66 22 64 65 6e 73 69 74 79 3a 20 7b 6e 78 2e 64 65 6e 73 69 74 79 28 47 29 7d 22 29 0a 0a | t(f"density:.{nx.density(G)}").. |
9e00 | 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 3d 33 | pos.=.nx.spring_layout(G,.seed=3 |
9e20 | 30 36 38 29 20 20 23 20 53 65 65 64 20 6c 61 79 6f 75 74 20 66 6f 72 20 72 65 70 72 6f 64 75 63 | 068)..#.Seed.layout.for.reproduc |
9e40 | 69 62 69 6c 69 74 79 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 3d 70 6f 73 2c 20 77 69 74 68 | ibility.nx.draw(G,.pos=pos,.with |
9e60 | 5f 6c 61 62 65 6c 73 3d 54 72 75 65 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 | _labels=True).plt.show().PK..... |
9e80 | 00 00 00 fb 7a 57 56 e7 2e 09 89 0d 02 00 00 0d 02 00 00 18 00 00 00 62 61 73 69 63 2f 70 6c 6f | ....zWV................basic/plo |
9ea0 | 74 5f 72 65 61 64 5f 77 72 69 74 65 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | t_read_write.py""".============= |
9ec0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 67 72 61 70 68 73 2e | =========.Read.and.write.graphs. |
9ee0 | 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 52 65 61 64 20 61 6e | .======================..Read.an |
9f00 | 64 20 77 72 69 74 65 20 67 72 61 70 68 73 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 | d.write.graphs.."""..import.matp |
9f20 | 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 | lotlib.pyplot.as.plt.import.netw |
9f40 | 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 67 72 69 64 5f 32 64 5f 67 72 61 70 68 | orkx.as.nx..G.=.nx.grid_2d_graph |
9f60 | 28 35 2c 20 35 29 20 20 23 20 35 78 35 20 67 72 69 64 0a 0a 23 20 70 72 69 6e 74 20 74 68 65 20 | (5,.5)..#.5x5.grid..#.print.the. |
9f80 | 61 64 6a 61 63 65 6e 63 79 20 6c 69 73 74 0a 66 6f 72 20 6c 69 6e 65 20 69 6e 20 6e 78 2e 67 65 | adjacency.list.for.line.in.nx.ge |
9fa0 | 6e 65 72 61 74 65 5f 61 64 6a 6c 69 73 74 28 47 29 3a 0a 20 20 20 20 70 72 69 6e 74 28 6c 69 6e | nerate_adjlist(G):.....print(lin |
9fc0 | 65 29 0a 23 20 77 72 69 74 65 20 65 64 67 65 6c 69 73 74 20 74 6f 20 67 72 69 64 2e 65 64 67 65 | e).#.write.edgelist.to.grid.edge |
9fe0 | 6c 69 73 74 0a 6e 78 2e 77 72 69 74 65 5f 65 64 67 65 6c 69 73 74 28 47 2c 20 70 61 74 68 3d 22 | list.nx.write_edgelist(G,.path=" |
a000 | 67 72 69 64 2e 65 64 67 65 6c 69 73 74 22 2c 20 64 65 6c 69 6d 69 74 65 72 3d 22 3a 22 29 0a 23 | grid.edgelist",.delimiter=":").# |
a020 | 20 72 65 61 64 20 65 64 67 65 6c 69 73 74 20 66 72 6f 6d 20 67 72 69 64 2e 65 64 67 65 6c 69 73 | .read.edgelist.from.grid.edgelis |
a040 | 74 0a 48 20 3d 20 6e 78 2e 72 65 61 64 5f 65 64 67 65 6c 69 73 74 28 70 61 74 68 3d 22 67 72 69 | t.H.=.nx.read_edgelist(path="gri |
a060 | 64 2e 65 64 67 65 6c 69 73 74 22 2c 20 64 65 6c 69 6d 69 74 65 72 3d 22 3a 22 29 0a 0a 70 6f 73 | d.edgelist",.delimiter=":")..pos |
a080 | 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 48 2c 20 73 65 65 64 3d 32 30 30 29 | .=.nx.spring_layout(H,.seed=200) |
a0a0 | 0a 6e 78 2e 64 72 61 77 28 48 2c 20 70 6f 73 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 | .nx.draw(H,.pos).plt.show().PK.. |
a0c0 | 14 00 00 00 00 00 fb 7a 57 56 46 e4 8f 07 d8 04 00 00 d8 04 00 00 1a 00 00 00 62 61 73 69 63 2f | .......zWVF...............basic/ |
a0e0 | 70 6c 6f 74 5f 73 69 6d 70 6c 65 5f 67 72 61 70 68 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d | plot_simple_graph.py""".======== |
a100 | 3d 3d 3d 3d 0a 53 69 6d 70 6c 65 20 67 72 61 70 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a | ====.Simple.graph.============.. |
a120 | 44 72 61 77 20 73 69 6d 70 6c 65 20 67 72 61 70 68 20 77 69 74 68 20 6d 61 6e 75 61 6c 20 6c 61 | Draw.simple.graph.with.manual.la |
a140 | 79 6f 75 74 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 | yout.."""..import.networkx.as.nx |
a160 | 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 | .import.matplotlib.pyplot.as.plt |
a180 | 0a 0a 47 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 31 2c 20 32 | ..G.=.nx.Graph().G.add_edge(1,.2 |
a1a0 | 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 31 2c 20 33 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 31 2c | ).G.add_edge(1,.3).G.add_edge(1, |
a1c0 | 20 35 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 32 2c 20 33 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 | .5).G.add_edge(2,.3).G.add_edge( |
a1e0 | 33 2c 20 34 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 34 2c 20 35 29 0a 0a 23 20 65 78 70 6c 69 63 | 3,.4).G.add_edge(4,.5)..#.explic |
a200 | 69 74 6c 79 20 73 65 74 20 70 6f 73 69 74 69 6f 6e 73 0a 70 6f 73 20 3d 20 7b 31 3a 20 28 30 2c | itly.set.positions.pos.=.{1:.(0, |
a220 | 20 30 29 2c 20 32 3a 20 28 2d 31 2c 20 30 2e 33 29 2c 20 33 3a 20 28 32 2c 20 30 2e 31 37 29 2c | .0),.2:.(-1,.0.3),.3:.(2,.0.17), |
a240 | 20 34 3a 20 28 34 2c 20 30 2e 32 35 35 29 2c 20 35 3a 20 28 35 2c 20 30 2e 30 33 29 7d 0a 0a 6f | .4:.(4,.0.255),.5:.(5,.0.03)}..o |
a260 | 70 74 69 6f 6e 73 20 3d 20 7b 0a 20 20 20 20 22 66 6f 6e 74 5f 73 69 7a 65 22 3a 20 33 36 2c 0a | ptions.=.{....."font_size":.36,. |
a280 | 20 20 20 20 22 6e 6f 64 65 5f 73 69 7a 65 22 3a 20 33 30 30 30 2c 0a 20 20 20 20 22 6e 6f 64 65 | ...."node_size":.3000,....."node |
a2a0 | 5f 63 6f 6c 6f 72 22 3a 20 22 77 68 69 74 65 22 2c 0a 20 20 20 20 22 65 64 67 65 63 6f 6c 6f 72 | _color":."white",....."edgecolor |
a2c0 | 73 22 3a 20 22 62 6c 61 63 6b 22 2c 0a 20 20 20 20 22 6c 69 6e 65 77 69 64 74 68 73 22 3a 20 35 | s":."black",....."linewidths":.5 |
a2e0 | 2c 0a 20 20 20 20 22 77 69 64 74 68 22 3a 20 35 2c 0a 7d 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 | ,....."width":.5,.}.nx.draw_netw |
a300 | 6f 72 6b 78 28 47 2c 20 70 6f 73 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 0a 23 20 53 65 74 20 6d | orkx(G,.pos,.**options)..#.Set.m |
a320 | 61 72 67 69 6e 73 20 66 6f 72 20 74 68 65 20 61 78 65 73 20 73 6f 20 74 68 61 74 20 6e 6f 64 65 | argins.for.the.axes.so.that.node |
a340 | 73 20 61 72 65 6e 27 74 20 63 6c 69 70 70 65 64 0a 61 78 20 3d 20 70 6c 74 2e 67 63 61 28 29 0a | s.aren't.clipped.ax.=.plt.gca(). |
a360 | 61 78 2e 6d 61 72 67 69 6e 73 28 30 2e 32 30 29 0a 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 | ax.margins(0.20).plt.axis("off") |
a380 | 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 0a 23 20 25 25 0a 23 20 41 20 64 69 72 65 63 74 65 64 20 67 | .plt.show()..#.%%.#.A.directed.g |
a3a0 | 72 61 70 68 0a 0a 47 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 5b 28 30 2c 20 33 29 2c 20 28 31 | raph..G.=.nx.DiGraph([(0,.3),.(1 |
a3c0 | 2c 20 33 29 2c 20 28 32 2c 20 34 29 2c 20 28 33 2c 20 35 29 2c 20 28 33 2c 20 36 29 2c 20 28 34 | ,.3),.(2,.4),.(3,.5),.(3,.6),.(4 |
a3e0 | 2c 20 36 29 2c 20 28 35 2c 20 36 29 5d 29 0a 0a 23 20 67 72 6f 75 70 20 6e 6f 64 65 73 20 62 79 | ,.6),.(5,.6)])..#.group.nodes.by |
a400 | 20 63 6f 6c 75 6d 6e 0a 6c 65 66 74 5f 6e 6f 64 65 73 20 3d 20 5b 30 2c 20 31 2c 20 32 5d 0a 6d | .column.left_nodes.=.[0,.1,.2].m |
a420 | 69 64 64 6c 65 5f 6e 6f 64 65 73 20 3d 20 5b 33 2c 20 34 5d 0a 72 69 67 68 74 5f 6e 6f 64 65 73 | iddle_nodes.=.[3,.4].right_nodes |
a440 | 20 3d 20 5b 35 2c 20 36 5d 0a 0a 23 20 73 65 74 20 74 68 65 20 70 6f 73 69 74 69 6f 6e 20 61 63 | .=.[5,.6]..#.set.the.position.ac |
a460 | 63 6f 72 64 69 6e 67 20 74 6f 20 63 6f 6c 75 6d 6e 20 28 78 2d 63 6f 6f 72 64 29 0a 70 6f 73 20 | cording.to.column.(x-coord).pos. |
a480 | 3d 20 7b 6e 3a 20 28 30 2c 20 69 29 20 66 6f 72 20 69 2c 20 6e 20 69 6e 20 65 6e 75 6d 65 72 61 | =.{n:.(0,.i).for.i,.n.in.enumera |
a4a0 | 74 65 28 6c 65 66 74 5f 6e 6f 64 65 73 29 7d 0a 70 6f 73 2e 75 70 64 61 74 65 28 7b 6e 3a 20 28 | te(left_nodes)}.pos.update({n:.( |
a4c0 | 31 2c 20 69 20 2b 20 30 2e 35 29 20 66 6f 72 20 69 2c 20 6e 20 69 6e 20 65 6e 75 6d 65 72 61 74 | 1,.i.+.0.5).for.i,.n.in.enumerat |
a4e0 | 65 28 6d 69 64 64 6c 65 5f 6e 6f 64 65 73 29 7d 29 0a 70 6f 73 2e 75 70 64 61 74 65 28 7b 6e 3a | e(middle_nodes)}).pos.update({n: |
a500 | 20 28 32 2c 20 69 20 2b 20 30 2e 35 29 20 66 6f 72 20 69 2c 20 6e 20 69 6e 20 65 6e 75 6d 65 72 | .(2,.i.+.0.5).for.i,.n.in.enumer |
a520 | 61 74 65 28 72 69 67 68 74 5f 6e 6f 64 65 73 29 7d 29 0a 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 | ate(right_nodes)})..nx.draw_netw |
a540 | 6f 72 6b 78 28 47 2c 20 70 6f 73 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 0a 23 20 53 65 74 20 6d | orkx(G,.pos,.**options)..#.Set.m |
a560 | 61 72 67 69 6e 73 20 66 6f 72 20 74 68 65 20 61 78 65 73 20 73 6f 20 74 68 61 74 20 6e 6f 64 65 | argins.for.the.axes.so.that.node |
a580 | 73 20 61 72 65 6e 27 74 20 63 6c 69 70 70 65 64 0a 61 78 20 3d 20 70 6c 74 2e 67 63 61 28 29 0a | s.aren't.clipped.ax.=.plt.gca(). |
a5a0 | 61 78 2e 6d 61 72 67 69 6e 73 28 30 2e 32 30 29 0a 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 | ax.margins(0.20).plt.axis("off") |
a5c0 | 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 02 7b 57 56 97 66 db 6e 64 04 | .plt.show().PK.........{WV.f.nd. |
a5e0 | 00 00 64 04 00 00 1e 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 77 65 69 67 68 74 65 64 5f | ..d.......drawing/plot_weighted_ |
a600 | 67 72 61 70 68 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 57 65 69 67 68 | graph.py""".==============.Weigh |
a620 | 74 65 64 20 47 72 61 70 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 41 6e 20 65 78 61 | ted.Graph.==============..An.exa |
a640 | 6d 70 6c 65 20 75 73 69 6e 67 20 47 72 61 70 68 20 61 73 20 61 20 77 65 69 67 68 74 65 64 20 6e | mple.using.Graph.as.a.weighted.n |
a660 | 65 74 77 6f 72 6b 2e 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 | etwork..""".import.matplotlib.py |
a680 | 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e | plot.as.plt.import.networkx.as.n |
a6a0 | 78 0a 0a 47 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 0a 0a 47 2e 61 64 64 5f 65 64 67 65 28 22 61 | x..G.=.nx.Graph()..G.add_edge("a |
a6c0 | 22 2c 20 22 62 22 2c 20 77 65 69 67 68 74 3d 30 2e 36 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 22 | ",."b",.weight=0.6).G.add_edge(" |
a6e0 | 61 22 2c 20 22 63 22 2c 20 77 65 69 67 68 74 3d 30 2e 32 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 | a",."c",.weight=0.2).G.add_edge( |
a700 | 22 63 22 2c 20 22 64 22 2c 20 77 65 69 67 68 74 3d 30 2e 31 29 0a 47 2e 61 64 64 5f 65 64 67 65 | "c",."d",.weight=0.1).G.add_edge |
a720 | 28 22 63 22 2c 20 22 65 22 2c 20 77 65 69 67 68 74 3d 30 2e 37 29 0a 47 2e 61 64 64 5f 65 64 67 | ("c",."e",.weight=0.7).G.add_edg |
a740 | 65 28 22 63 22 2c 20 22 66 22 2c 20 77 65 69 67 68 74 3d 30 2e 39 29 0a 47 2e 61 64 64 5f 65 64 | e("c",."f",.weight=0.9).G.add_ed |
a760 | 67 65 28 22 61 22 2c 20 22 64 22 2c 20 77 65 69 67 68 74 3d 30 2e 33 29 0a 0a 65 6c 61 72 67 65 | ge("a",."d",.weight=0.3)..elarge |
a780 | 20 3d 20 5b 28 75 2c 20 76 29 20 66 6f 72 20 28 75 2c 20 76 2c 20 64 29 20 69 6e 20 47 2e 65 64 | .=.[(u,.v).for.(u,.v,.d).in.G.ed |
a7a0 | 67 65 73 28 64 61 74 61 3d 54 72 75 65 29 20 69 66 20 64 5b 22 77 65 69 67 68 74 22 5d 20 3e 20 | ges(data=True).if.d["weight"].>. |
a7c0 | 30 2e 35 5d 0a 65 73 6d 61 6c 6c 20 3d 20 5b 28 75 2c 20 76 29 20 66 6f 72 20 28 75 2c 20 76 2c | 0.5].esmall.=.[(u,.v).for.(u,.v, |
a7e0 | 20 64 29 20 69 6e 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 54 72 75 65 29 20 69 66 20 64 5b 22 | .d).in.G.edges(data=True).if.d[" |
a800 | 77 65 69 67 68 74 22 5d 20 3c 3d 20 30 2e 35 5d 0a 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e | weight"].<=.0.5]..pos.=.nx.sprin |
a820 | 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 3d 37 29 20 20 23 20 70 6f 73 69 74 69 6f 6e 73 | g_layout(G,.seed=7)..#.positions |
a840 | 20 66 6f 72 20 61 6c 6c 20 6e 6f 64 65 73 20 2d 20 73 65 65 64 20 66 6f 72 20 72 65 70 72 6f 64 | .for.all.nodes.-.seed.for.reprod |
a860 | 75 63 69 62 69 6c 69 74 79 0a 0a 23 20 6e 6f 64 65 73 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f | ucibility..#.nodes.nx.draw_netwo |
a880 | 72 6b 78 5f 6e 6f 64 65 73 28 47 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 37 30 30 29 | rkx_nodes(G,.pos,.node_size=700) |
a8a0 | 0a 0a 23 20 65 64 67 65 73 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 | ..#.edges.nx.draw_networkx_edges |
a8c0 | 28 47 2c 20 70 6f 73 2c 20 65 64 67 65 6c 69 73 74 3d 65 6c 61 72 67 65 2c 20 77 69 64 74 68 3d | (G,.pos,.edgelist=elarge,.width= |
a8e0 | 36 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 0a 20 20 20 20 47 | 6).nx.draw_networkx_edges(.....G |
a900 | 2c 20 70 6f 73 2c 20 65 64 67 65 6c 69 73 74 3d 65 73 6d 61 6c 6c 2c 20 77 69 64 74 68 3d 36 2c | ,.pos,.edgelist=esmall,.width=6, |
a920 | 20 61 6c 70 68 61 3d 30 2e 35 2c 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 22 62 22 2c 20 73 74 79 6c | .alpha=0.5,.edge_color="b",.styl |
a940 | 65 3d 22 64 61 73 68 65 64 22 0a 29 0a 0a 23 20 6e 6f 64 65 20 6c 61 62 65 6c 73 0a 6e 78 2e 64 | e="dashed".)..#.node.labels.nx.d |
a960 | 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6c 61 62 65 6c 73 28 47 2c 20 70 6f 73 2c 20 66 6f 6e 74 | raw_networkx_labels(G,.pos,.font |
a980 | 5f 73 69 7a 65 3d 32 30 2c 20 66 6f 6e 74 5f 66 61 6d 69 6c 79 3d 22 73 61 6e 73 2d 73 65 72 69 | _size=20,.font_family="sans-seri |
a9a0 | 66 22 29 0a 23 20 65 64 67 65 20 77 65 69 67 68 74 20 6c 61 62 65 6c 73 0a 65 64 67 65 5f 6c 61 | f").#.edge.weight.labels.edge_la |
a9c0 | 62 65 6c 73 20 3d 20 6e 78 2e 67 65 74 5f 65 64 67 65 5f 61 74 74 72 69 62 75 74 65 73 28 47 2c | bels.=.nx.get_edge_attributes(G, |
a9e0 | 20 22 77 65 69 67 68 74 22 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 | ."weight").nx.draw_networkx_edge |
aa00 | 5f 6c 61 62 65 6c 73 28 47 2c 20 70 6f 73 2c 20 65 64 67 65 5f 6c 61 62 65 6c 73 29 0a 0a 61 78 | _labels(G,.pos,.edge_labels)..ax |
aa20 | 20 3d 20 70 6c 74 2e 67 63 61 28 29 0a 61 78 2e 6d 61 72 67 69 6e 73 28 30 2e 30 38 29 0a 70 6c | .=.plt.gca().ax.margins(0.08).pl |
aa40 | 74 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 70 6c 74 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 | t.axis("off").plt.tight_layout() |
aa60 | 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 01 7b 57 56 2e 68 51 b1 fc 00 | .plt.show().PK.........{WV.hQ... |
aa80 | 00 00 fc 00 00 00 1b 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 73 69 6d 70 6c 65 5f 70 61 | ..........drawing/plot_simple_pa |
aaa0 | 74 68 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 53 69 6d 70 6c 65 20 50 61 74 68 | th.py""".===========.Simple.Path |
aac0 | 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 44 72 61 77 20 61 20 67 72 61 70 68 20 77 69 74 68 20 | .===========..Draw.a.graph.with. |
aae0 | 6d 61 74 70 6c 6f 74 6c 69 62 2e 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 | matplotlib..""".import.matplotli |
ab00 | 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 | b.pyplot.as.plt.import.networkx. |
ab20 | 61 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 70 61 74 68 5f 67 72 61 70 68 28 38 29 0a 70 6f 73 20 | as.nx..G.=.nx.path_graph(8).pos. |
ab40 | 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 3d 34 37 29 20 20 | =.nx.spring_layout(G,.seed=47).. |
ab60 | 23 20 53 65 65 64 20 6c 61 79 6f 75 74 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 | #.Seed.layout.for.reproducibilit |
ab80 | 79 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 3d 70 6f 73 29 0a 70 6c 74 2e 73 68 6f 77 28 29 | y.nx.draw(G,.pos=pos).plt.show() |
aba0 | 0a 50 4b 03 04 14 00 00 00 00 00 fc 7a 57 56 d2 66 e0 26 5b 08 00 00 5b 08 00 00 21 00 00 00 64 | .PK.........zWV.f.&[...[...!...d |
abc0 | 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 63 75 73 74 6f 6d 5f 6e 6f 64 65 5f 69 63 6f 6e 73 2e 70 79 | rawing/plot_custom_node_icons.py |
abe0 | 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 43 75 73 74 6f 6d 20 6e 6f 64 | """.=================.Custom.nod |
ac00 | 65 20 69 63 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 45 78 61 6d 70 | e.icons.=================..Examp |
ac20 | 6c 65 20 6f 66 20 75 73 69 6e 67 20 63 75 73 74 6f 6d 20 69 63 6f 6e 73 20 74 6f 20 72 65 70 72 | le.of.using.custom.icons.to.repr |
ac40 | 65 73 65 6e 74 20 6e 6f 64 65 73 20 77 69 74 68 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 0a 0a 49 6d | esent.nodes.with.matplotlib...Im |
ac60 | 61 67 65 73 20 66 6f 72 20 6e 6f 64 65 20 69 63 6f 6e 73 20 63 6f 75 72 74 65 73 79 20 6f 66 20 | ages.for.node.icons.courtesy.of. |
ac80 | 77 77 77 2e 6d 61 74 65 72 69 61 6c 75 69 2e 63 6f 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 | www.materialui.co."""..import.ma |
aca0 | 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 | tplotlib.pyplot.as.plt.import.ne |
acc0 | 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 50 49 4c 0a 0a 23 20 49 6d 61 67 65 | tworkx.as.nx.import.PIL..#.Image |
ace0 | 20 55 52 4c 73 20 66 6f 72 20 67 72 61 70 68 20 6e 6f 64 65 73 0a 69 63 6f 6e 73 20 3d 20 7b 0a | .URLs.for.graph.nodes.icons.=.{. |
ad00 | 20 20 20 20 22 72 6f 75 74 65 72 22 3a 20 22 69 63 6f 6e 73 2f 72 6f 75 74 65 72 5f 62 6c 61 63 | ...."router":."icons/router_blac |
ad20 | 6b 5f 31 34 34 78 31 34 34 2e 70 6e 67 22 2c 0a 20 20 20 20 22 73 77 69 74 63 68 22 3a 20 22 69 | k_144x144.png",....."switch":."i |
ad40 | 63 6f 6e 73 2f 73 77 69 74 63 68 5f 62 6c 61 63 6b 5f 31 34 34 78 31 34 34 2e 70 6e 67 22 2c 0a | cons/switch_black_144x144.png",. |
ad60 | 20 20 20 20 22 50 43 22 3a 20 22 69 63 6f 6e 73 2f 63 6f 6d 70 75 74 65 72 5f 62 6c 61 63 6b 5f | ...."PC":."icons/computer_black_ |
ad80 | 31 34 34 78 31 34 34 2e 70 6e 67 22 2c 0a 7d 0a 0a 23 20 4c 6f 61 64 20 69 6d 61 67 65 73 0a 69 | 144x144.png",.}..#.Load.images.i |
ada0 | 6d 61 67 65 73 20 3d 20 7b 6b 3a 20 50 49 4c 2e 49 6d 61 67 65 2e 6f 70 65 6e 28 66 6e 61 6d 65 | mages.=.{k:.PIL.Image.open(fname |
adc0 | 29 20 66 6f 72 20 6b 2c 20 66 6e 61 6d 65 20 69 6e 20 69 63 6f 6e 73 2e 69 74 65 6d 73 28 29 7d | ).for.k,.fname.in.icons.items()} |
ade0 | 0a 0a 23 20 47 65 6e 65 72 61 74 65 20 74 68 65 20 63 6f 6d 70 75 74 65 72 20 6e 65 74 77 6f 72 | ..#.Generate.the.computer.networ |
ae00 | 6b 20 67 72 61 70 68 0a 47 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 0a 0a 47 2e 61 64 64 5f 6e 6f | k.graph.G.=.nx.Graph()..G.add_no |
ae20 | 64 65 28 22 72 6f 75 74 65 72 22 2c 20 69 6d 61 67 65 3d 69 6d 61 67 65 73 5b 22 72 6f 75 74 65 | de("router",.image=images["route |
ae40 | 72 22 5d 29 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 31 2c 20 34 29 3a 0a 20 20 20 20 47 | r"]).for.i.in.range(1,.4):.....G |
ae60 | 2e 61 64 64 5f 6e 6f 64 65 28 66 22 73 77 69 74 63 68 5f 7b 69 7d 22 2c 20 69 6d 61 67 65 3d 69 | .add_node(f"switch_{i}",.image=i |
ae80 | 6d 61 67 65 73 5b 22 73 77 69 74 63 68 22 5d 29 0a 20 20 20 20 66 6f 72 20 6a 20 69 6e 20 72 61 | mages["switch"]).....for.j.in.ra |
aea0 | 6e 67 65 28 31 2c 20 34 29 3a 0a 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 6e 6f 64 65 28 22 50 | nge(1,.4):.........G.add_node("P |
aec0 | 43 5f 22 20 2b 20 73 74 72 28 69 29 20 2b 20 22 5f 22 20 2b 20 73 74 72 28 6a 29 2c 20 69 6d 61 | C_".+.str(i).+."_".+.str(j),.ima |
aee0 | 67 65 3d 69 6d 61 67 65 73 5b 22 50 43 22 5d 29 0a 0a 47 2e 61 64 64 5f 65 64 67 65 28 22 72 6f | ge=images["PC"])..G.add_edge("ro |
af00 | 75 74 65 72 22 2c 20 22 73 77 69 74 63 68 5f 31 22 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 22 72 | uter",."switch_1").G.add_edge("r |
af20 | 6f 75 74 65 72 22 2c 20 22 73 77 69 74 63 68 5f 32 22 29 0a 47 2e 61 64 64 5f 65 64 67 65 28 22 | outer",."switch_2").G.add_edge(" |
af40 | 72 6f 75 74 65 72 22 2c 20 22 73 77 69 74 63 68 5f 33 22 29 0a 66 6f 72 20 75 20 69 6e 20 72 61 | router",."switch_3").for.u.in.ra |
af60 | 6e 67 65 28 31 2c 20 34 29 3a 0a 20 20 20 20 66 6f 72 20 76 20 69 6e 20 72 61 6e 67 65 28 31 2c | nge(1,.4):.....for.v.in.range(1, |
af80 | 20 34 29 3a 0a 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 65 64 67 65 28 22 73 77 69 74 63 68 5f | .4):.........G.add_edge("switch_ |
afa0 | 22 20 2b 20 73 74 72 28 75 29 2c 20 22 50 43 5f 22 20 2b 20 73 74 72 28 75 29 20 2b 20 22 5f 22 | ".+.str(u),."PC_".+.str(u).+."_" |
afc0 | 20 2b 20 73 74 72 28 76 29 29 0a 0a 23 20 47 65 74 20 61 20 72 65 70 72 6f 64 75 63 69 62 6c 65 | .+.str(v))..#.Get.a.reproducible |
afe0 | 20 6c 61 79 6f 75 74 20 61 6e 64 20 63 72 65 61 74 65 20 66 69 67 75 72 65 0a 70 6f 73 20 3d 20 | .layout.and.create.figure.pos.=. |
b000 | 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 3d 31 37 33 34 32 38 39 | nx.spring_layout(G,.seed=1734289 |
b020 | 32 33 30 29 0a 66 69 67 2c 20 61 78 20 3d 20 70 6c 74 2e 73 75 62 70 6c 6f 74 73 28 29 0a 0a 23 | 230).fig,.ax.=.plt.subplots()..# |
b040 | 20 4e 6f 74 65 3a 20 74 68 65 20 6d 69 6e 5f 73 6f 75 72 63 65 2f 74 61 72 67 65 74 5f 6d 61 72 | .Note:.the.min_source/target_mar |
b060 | 67 69 6e 20 6b 77 61 72 67 73 20 6f 6e 6c 79 20 77 6f 72 6b 20 77 69 74 68 20 46 61 6e 63 79 41 | gin.kwargs.only.work.with.FancyA |
b080 | 72 72 6f 77 50 61 74 63 68 20 6f 62 6a 65 63 74 73 2e 0a 23 20 46 6f 72 63 65 20 74 68 65 20 75 | rrowPatch.objects..#.Force.the.u |
b0a0 | 73 65 20 6f 66 20 46 61 6e 63 79 41 72 72 6f 77 50 61 74 63 68 20 66 6f 72 20 65 64 67 65 20 64 | se.of.FancyArrowPatch.for.edge.d |
b0c0 | 72 61 77 69 6e 67 20 62 79 20 73 65 74 74 69 6e 67 20 60 61 72 72 6f 77 73 3d 54 72 75 65 60 2c | rawing.by.setting.`arrows=True`, |
b0e0 | 0a 23 20 62 75 74 20 73 75 70 70 72 65 73 73 20 61 72 72 6f 77 68 65 61 64 73 20 77 69 74 68 20 | .#.but.suppress.arrowheads.with. |
b100 | 60 61 72 72 6f 77 73 74 79 6c 65 3d 22 2d 22 60 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b | `arrowstyle="-"`.nx.draw_network |
b120 | 78 5f 65 64 67 65 73 28 0a 20 20 20 20 47 2c 0a 20 20 20 20 70 6f 73 3d 70 6f 73 2c 0a 20 20 20 | x_edges(.....G,.....pos=pos,.... |
b140 | 20 61 78 3d 61 78 2c 0a 20 20 20 20 61 72 72 6f 77 73 3d 54 72 75 65 2c 0a 20 20 20 20 61 72 72 | .ax=ax,.....arrows=True,.....arr |
b160 | 6f 77 73 74 79 6c 65 3d 22 2d 22 2c 0a 20 20 20 20 6d 69 6e 5f 73 6f 75 72 63 65 5f 6d 61 72 67 | owstyle="-",.....min_source_marg |
b180 | 69 6e 3d 31 35 2c 0a 20 20 20 20 6d 69 6e 5f 74 61 72 67 65 74 5f 6d 61 72 67 69 6e 3d 31 35 2c | in=15,.....min_target_margin=15, |
b1a0 | 0a 29 0a 0a 23 20 54 72 61 6e 73 66 6f 72 6d 20 66 72 6f 6d 20 64 61 74 61 20 63 6f 6f 72 64 69 | .)..#.Transform.from.data.coordi |
b1c0 | 6e 61 74 65 73 20 28 73 63 61 6c 65 64 20 62 65 74 77 65 65 6e 20 78 6c 69 6d 20 61 6e 64 20 79 | nates.(scaled.between.xlim.and.y |
b1e0 | 6c 69 6d 29 20 74 6f 20 64 69 73 70 6c 61 79 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 74 72 5f 66 | lim).to.display.coordinates.tr_f |
b200 | 69 67 75 72 65 20 3d 20 61 78 2e 74 72 61 6e 73 44 61 74 61 2e 74 72 61 6e 73 66 6f 72 6d 0a 23 | igure.=.ax.transData.transform.# |
b220 | 20 54 72 61 6e 73 66 6f 72 6d 20 66 72 6f 6d 20 64 69 73 70 6c 61 79 20 74 6f 20 66 69 67 75 72 | .Transform.from.display.to.figur |
b240 | 65 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 74 72 5f 61 78 65 73 20 3d 20 66 69 67 2e 74 72 61 6e | e.coordinates.tr_axes.=.fig.tran |
b260 | 73 46 69 67 75 72 65 2e 69 6e 76 65 72 74 65 64 28 29 2e 74 72 61 6e 73 66 6f 72 6d 0a 0a 23 20 | sFigure.inverted().transform..#. |
b280 | 53 65 6c 65 63 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 69 6d 61 67 65 20 28 72 65 | Select.the.size.of.the.image.(re |
b2a0 | 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 58 20 61 78 69 73 29 0a 69 63 6f 6e 5f 73 69 7a 65 20 | lative.to.the.X.axis).icon_size. |
b2c0 | 3d 20 28 61 78 2e 67 65 74 5f 78 6c 69 6d 28 29 5b 31 5d 20 2d 20 61 78 2e 67 65 74 5f 78 6c 69 | =.(ax.get_xlim()[1].-.ax.get_xli |
b2e0 | 6d 28 29 5b 30 5d 29 20 2a 20 30 2e 30 32 35 0a 69 63 6f 6e 5f 63 65 6e 74 65 72 20 3d 20 69 63 | m()[0]).*.0.025.icon_center.=.ic |
b300 | 6f 6e 5f 73 69 7a 65 20 2f 20 32 2e 30 0a 0a 23 20 41 64 64 20 74 68 65 20 72 65 73 70 65 63 74 | on_size./.2.0..#.Add.the.respect |
b320 | 69 76 65 20 69 6d 61 67 65 20 74 6f 20 65 61 63 68 20 6e 6f 64 65 0a 66 6f 72 20 6e 20 69 6e 20 | ive.image.to.each.node.for.n.in. |
b340 | 47 2e 6e 6f 64 65 73 3a 0a 20 20 20 20 78 66 2c 20 79 66 20 3d 20 74 72 5f 66 69 67 75 72 65 28 | G.nodes:.....xf,.yf.=.tr_figure( |
b360 | 70 6f 73 5b 6e 5d 29 0a 20 20 20 20 78 61 2c 20 79 61 20 3d 20 74 72 5f 61 78 65 73 28 28 78 66 | pos[n]).....xa,.ya.=.tr_axes((xf |
b380 | 2c 20 79 66 29 29 0a 20 20 20 20 23 20 67 65 74 20 6f 76 65 72 6c 61 70 70 65 64 20 61 78 65 73 | ,.yf)).....#.get.overlapped.axes |
b3a0 | 20 61 6e 64 20 70 6c 6f 74 20 69 63 6f 6e 0a 20 20 20 20 61 20 3d 20 70 6c 74 2e 61 78 65 73 28 | .and.plot.icon.....a.=.plt.axes( |
b3c0 | 5b 78 61 20 2d 20 69 63 6f 6e 5f 63 65 6e 74 65 72 2c 20 79 61 20 2d 20 69 63 6f 6e 5f 63 65 6e | [xa.-.icon_center,.ya.-.icon_cen |
b3e0 | 74 65 72 2c 20 69 63 6f 6e 5f 73 69 7a 65 2c 20 69 63 6f 6e 5f 73 69 7a 65 5d 29 0a 20 20 20 20 | ter,.icon_size,.icon_size])..... |
b400 | 61 2e 69 6d 73 68 6f 77 28 47 2e 6e 6f 64 65 73 5b 6e 5d 5b 22 69 6d 61 67 65 22 5d 29 0a 20 20 | a.imshow(G.nodes[n]["image"])... |
b420 | 20 20 61 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 | ..a.axis("off").plt.show().PK... |
b440 | 00 00 00 00 00 fc 7a 57 56 1f 79 51 49 5b 04 00 00 5b 04 00 00 18 00 00 00 64 72 61 77 69 6e 67 | ......zWV.yQI[...[.......drawing |
b460 | 2f 70 6c 6f 74 5f 64 69 72 65 63 74 65 64 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | /plot_directed.py""".=========== |
b480 | 3d 3d 3d 0a 44 69 72 65 63 74 65 64 20 47 72 61 70 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ===.Directed.Graph.============= |
b4a0 | 3d 0a 0a 44 72 61 77 20 61 20 67 72 61 70 68 20 77 69 74 68 20 64 69 72 65 63 74 65 64 20 65 64 | =..Draw.a.graph.with.directed.ed |
b4c0 | 67 65 73 20 75 73 69 6e 67 20 61 20 63 6f 6c 6f 72 6d 61 70 20 61 6e 64 20 64 69 66 66 65 72 65 | ges.using.a.colormap.and.differe |
b4e0 | 6e 74 20 6e 6f 64 65 20 73 69 7a 65 73 2e 0a 0a 45 64 67 65 73 20 68 61 76 65 20 64 69 66 66 65 | nt.node.sizes...Edges.have.diffe |
b500 | 72 65 6e 74 20 63 6f 6c 6f 72 73 20 61 6e 64 20 61 6c 70 68 61 73 20 28 6f 70 61 63 69 74 79 29 | rent.colors.and.alphas.(opacity) |
b520 | 2e 20 44 72 61 77 6e 20 75 73 69 6e 67 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 0a 22 22 22 0a 0a 69 | ..Drawn.using.matplotlib.."""..i |
b540 | 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 20 61 73 20 6d 70 6c 0a 69 6d 70 6f 72 74 20 6d | mport.matplotlib.as.mpl.import.m |
b560 | 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e | atplotlib.pyplot.as.plt.import.n |
b580 | 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 73 65 65 64 20 3d 20 31 33 36 34 38 20 20 23 20 53 | etworkx.as.nx..seed.=.13648..#.S |
b5a0 | 65 65 64 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 67 65 6e 65 72 61 74 6f 72 73 20 66 6f 72 | eed.random.number.generators.for |
b5c0 | 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 79 0a 47 20 3d 20 6e 78 2e 72 61 6e 64 6f 6d 5f 6b | .reproducibility.G.=.nx.random_k |
b5e0 | 5f 6f 75 74 5f 67 72 61 70 68 28 31 30 2c 20 33 2c 20 30 2e 35 2c 20 73 65 65 64 3d 73 65 65 64 | _out_graph(10,.3,.0.5,.seed=seed |
b600 | 29 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 | ).pos.=.nx.spring_layout(G,.seed |
b620 | 3d 73 65 65 64 29 0a 0a 6e 6f 64 65 5f 73 69 7a 65 73 20 3d 20 5b 33 20 2b 20 31 30 20 2a 20 69 | =seed)..node_sizes.=.[3.+.10.*.i |
b640 | 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 47 29 29 5d 0a 4d 20 3d 20 47 2e 6e | .for.i.in.range(len(G))].M.=.G.n |
b660 | 75 6d 62 65 72 5f 6f 66 5f 65 64 67 65 73 28 29 0a 65 64 67 65 5f 63 6f 6c 6f 72 73 20 3d 20 72 | umber_of_edges().edge_colors.=.r |
b680 | 61 6e 67 65 28 32 2c 20 4d 20 2b 20 32 29 0a 65 64 67 65 5f 61 6c 70 68 61 73 20 3d 20 5b 28 35 | ange(2,.M.+.2).edge_alphas.=.[(5 |
b6a0 | 20 2b 20 69 29 20 2f 20 28 4d 20 2b 20 34 29 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 4d | .+.i)./.(M.+.4).for.i.in.range(M |
b6c0 | 29 5d 0a 63 6d 61 70 20 3d 20 70 6c 74 2e 63 6d 2e 70 6c 61 73 6d 61 0a 0a 6e 6f 64 65 73 20 3d | )].cmap.=.plt.cm.plasma..nodes.= |
b6e0 | 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 47 2c 20 70 6f 73 2c 20 | .nx.draw_networkx_nodes(G,.pos,. |
b700 | 6e 6f 64 65 5f 73 69 7a 65 3d 6e 6f 64 65 5f 73 69 7a 65 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 | node_size=node_sizes,.node_color |
b720 | 3d 22 69 6e 64 69 67 6f 22 29 0a 65 64 67 65 73 20 3d 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f | ="indigo").edges.=.nx.draw_netwo |
b740 | 72 6b 78 5f 65 64 67 65 73 28 0a 20 20 20 20 47 2c 0a 20 20 20 20 70 6f 73 2c 0a 20 20 20 20 6e | rkx_edges(.....G,.....pos,.....n |
b760 | 6f 64 65 5f 73 69 7a 65 3d 6e 6f 64 65 5f 73 69 7a 65 73 2c 0a 20 20 20 20 61 72 72 6f 77 73 74 | ode_size=node_sizes,.....arrowst |
b780 | 79 6c 65 3d 22 2d 3e 22 2c 0a 20 20 20 20 61 72 72 6f 77 73 69 7a 65 3d 31 30 2c 0a 20 20 20 20 | yle="->",.....arrowsize=10,..... |
b7a0 | 65 64 67 65 5f 63 6f 6c 6f 72 3d 65 64 67 65 5f 63 6f 6c 6f 72 73 2c 0a 20 20 20 20 65 64 67 65 | edge_color=edge_colors,.....edge |
b7c0 | 5f 63 6d 61 70 3d 63 6d 61 70 2c 0a 20 20 20 20 77 69 64 74 68 3d 32 2c 0a 29 0a 23 20 73 65 74 | _cmap=cmap,.....width=2,.).#.set |
b7e0 | 20 61 6c 70 68 61 20 76 61 6c 75 65 20 66 6f 72 20 65 61 63 68 20 65 64 67 65 0a 66 6f 72 20 69 | .alpha.value.for.each.edge.for.i |
b800 | 20 69 6e 20 72 61 6e 67 65 28 4d 29 3a 0a 20 20 20 20 65 64 67 65 73 5b 69 5d 2e 73 65 74 5f 61 | .in.range(M):.....edges[i].set_a |
b820 | 6c 70 68 61 28 65 64 67 65 5f 61 6c 70 68 61 73 5b 69 5d 29 0a 0a 70 63 20 3d 20 6d 70 6c 2e 63 | lpha(edge_alphas[i])..pc.=.mpl.c |
b840 | 6f 6c 6c 65 63 74 69 6f 6e 73 2e 50 61 74 63 68 43 6f 6c 6c 65 63 74 69 6f 6e 28 65 64 67 65 73 | ollections.PatchCollection(edges |
b860 | 2c 20 63 6d 61 70 3d 63 6d 61 70 29 0a 70 63 2e 73 65 74 5f 61 72 72 61 79 28 65 64 67 65 5f 63 | ,.cmap=cmap).pc.set_array(edge_c |
b880 | 6f 6c 6f 72 73 29 0a 0a 61 78 20 3d 20 70 6c 74 2e 67 63 61 28 29 0a 61 78 2e 73 65 74 5f 61 78 | olors)..ax.=.plt.gca().ax.set_ax |
b8a0 | 69 73 5f 6f 66 66 28 29 0a 70 6c 74 2e 63 6f 6c 6f 72 62 61 72 28 70 63 2c 20 61 78 3d 61 78 29 | is_off().plt.colorbar(pc,.ax=ax) |
b8c0 | 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 02 7b 57 56 5d b9 c3 0e 15 05 | .plt.show().PK.........{WV]..... |
b8e0 | 00 00 15 05 00 00 13 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 74 73 70 2e 70 79 22 22 22 | ..........drawing/plot_tsp.py""" |
b900 | 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 54 72 61 76 | .==========================.Trav |
b920 | 65 6c 69 6e 67 20 53 61 6c 65 73 6d 61 6e 20 50 72 6f 62 6c 65 6d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d | eling.Salesman.Problem.========= |
b940 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 69 73 20 61 6e 20 65 78 | =================..This.is.an.ex |
b960 | 61 6d 70 6c 65 20 6f 66 20 61 20 64 72 61 77 69 6e 67 20 73 6f 6c 75 74 69 6f 6e 20 6f 66 20 74 | ample.of.a.drawing.solution.of.t |
b980 | 68 65 20 74 72 61 76 65 6c 69 6e 67 20 73 61 6c 65 73 6d 61 6e 20 70 72 6f 62 6c 65 6d 0a 0a 54 | he.traveling.salesman.problem..T |
b9a0 | 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f 64 75 63 65 20 74 | he.function.is.used.to.produce.t |
b9c0 | 68 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 20 63 68 72 69 73 74 6f 66 69 64 65 73 2c 0a 77 68 65 | he.solution.is.christofides,.whe |
b9e0 | 72 65 20 67 69 76 65 6e 20 61 20 73 65 74 20 6f 66 20 6e 6f 64 65 73 2c 20 69 74 20 63 61 6c 63 | re.given.a.set.of.nodes,.it.calc |
ba00 | 75 6c 61 74 65 73 20 74 68 65 20 72 6f 75 74 65 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 0a 74 68 | ulates.the.route.of.the.nodes.th |
ba20 | 61 74 20 74 68 65 20 74 72 61 76 65 6c 65 72 20 68 61 73 20 74 6f 20 66 6f 6c 6c 6f 77 20 69 6e | at.the.traveler.has.to.follow.in |
ba40 | 20 6f 72 64 65 72 20 74 6f 20 6d 69 6e 69 6d 69 7a 65 20 74 68 65 20 74 6f 74 61 6c 20 63 6f 73 | .order.to.minimize.the.total.cos |
ba60 | 74 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 | t.."""..import.matplotlib.pyplot |
ba80 | 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d | .as.plt.import.networkx.as.nx.im |
baa0 | 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 2e 61 6c 67 6f 72 69 74 68 6d 73 2e 61 70 70 72 6f 78 69 | port.networkx.algorithms.approxi |
bac0 | 6d 61 74 69 6f 6e 20 61 73 20 6e 78 5f 61 70 70 0a 69 6d 70 6f 72 74 20 6d 61 74 68 0a 0a 47 20 | mation.as.nx_app.import.math..G. |
bae0 | 3d 20 6e 78 2e 72 61 6e 64 6f 6d 5f 67 65 6f 6d 65 74 72 69 63 5f 67 72 61 70 68 28 32 30 2c 20 | =.nx.random_geometric_graph(20,. |
bb00 | 72 61 64 69 75 73 3d 30 2e 34 2c 20 73 65 65 64 3d 33 29 0a 70 6f 73 20 3d 20 6e 78 2e 67 65 74 | radius=0.4,.seed=3).pos.=.nx.get |
bb20 | 5f 6e 6f 64 65 5f 61 74 74 72 69 62 75 74 65 73 28 47 2c 20 22 70 6f 73 22 29 0a 0a 23 20 44 65 | _node_attributes(G,."pos")..#.De |
bb40 | 70 6f 74 20 73 68 6f 75 6c 64 20 62 65 20 61 74 20 28 30 2c 30 29 0a 70 6f 73 5b 30 5d 20 3d 20 | pot.should.be.at.(0,0).pos[0].=. |
bb60 | 28 30 2e 35 2c 20 30 2e 35 29 0a 0a 48 20 3d 20 47 2e 63 6f 70 79 28 29 0a 0a 0a 23 20 43 61 6c | (0.5,.0.5)..H.=.G.copy()...#.Cal |
bb80 | 63 75 6c 61 74 69 6e 67 20 74 68 65 20 64 69 73 74 61 6e 63 65 73 20 62 65 74 77 65 65 6e 20 74 | culating.the.distances.between.t |
bba0 | 68 65 20 6e 6f 64 65 73 20 61 73 20 65 64 67 65 27 73 20 77 65 69 67 68 74 2e 0a 66 6f 72 20 69 | he.nodes.as.edge's.weight..for.i |
bbc0 | 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 70 6f 73 29 29 3a 0a 20 20 20 20 66 6f 72 20 6a 20 69 | .in.range(len(pos)):.....for.j.i |
bbe0 | 6e 20 72 61 6e 67 65 28 69 20 2b 20 31 2c 20 6c 65 6e 28 70 6f 73 29 29 3a 0a 20 20 20 20 20 20 | n.range(i.+.1,.len(pos)):....... |
bc00 | 20 20 64 69 73 74 20 3d 20 6d 61 74 68 2e 68 79 70 6f 74 28 70 6f 73 5b 69 5d 5b 30 5d 20 2d 20 | ..dist.=.math.hypot(pos[i][0].-. |
bc20 | 70 6f 73 5b 6a 5d 5b 30 5d 2c 20 70 6f 73 5b 69 5d 5b 31 5d 20 2d 20 70 6f 73 5b 6a 5d 5b 31 5d | pos[j][0],.pos[i][1].-.pos[j][1] |
bc40 | 29 0a 20 20 20 20 20 20 20 20 64 69 73 74 20 3d 20 64 69 73 74 0a 20 20 20 20 20 20 20 20 47 2e | ).........dist.=.dist.........G. |
bc60 | 61 64 64 5f 65 64 67 65 28 69 2c 20 6a 2c 20 77 65 69 67 68 74 3d 64 69 73 74 29 0a 0a 63 79 63 | add_edge(i,.j,.weight=dist)..cyc |
bc80 | 6c 65 20 3d 20 6e 78 5f 61 70 70 2e 63 68 72 69 73 74 6f 66 69 64 65 73 28 47 2c 20 77 65 69 67 | le.=.nx_app.christofides(G,.weig |
bca0 | 68 74 3d 22 77 65 69 67 68 74 22 29 0a 65 64 67 65 5f 6c 69 73 74 20 3d 20 6c 69 73 74 28 6e 78 | ht="weight").edge_list.=.list(nx |
bcc0 | 2e 75 74 69 6c 73 2e 70 61 69 72 77 69 73 65 28 63 79 63 6c 65 29 29 0a 0a 23 20 44 72 61 77 20 | .utils.pairwise(cycle))..#.Draw. |
bce0 | 63 6c 6f 73 65 73 74 20 65 64 67 65 73 20 6f 6e 20 65 61 63 68 20 6e 6f 64 65 20 6f 6e 6c 79 0a | closest.edges.on.each.node.only. |
bd00 | 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 48 2c 20 70 6f 73 2c 20 65 | nx.draw_networkx_edges(H,.pos,.e |
bd20 | 64 67 65 5f 63 6f 6c 6f 72 3d 22 62 6c 75 65 22 2c 20 77 69 64 74 68 3d 30 2e 35 29 0a 0a 23 20 | dge_color="blue",.width=0.5)..#. |
bd40 | 44 72 61 77 20 74 68 65 20 72 6f 75 74 65 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 28 | Draw.the.route.nx.draw_networkx( |
bd60 | 0a 20 20 20 20 47 2c 0a 20 20 20 20 70 6f 73 2c 0a 20 20 20 20 77 69 74 68 5f 6c 61 62 65 6c 73 | .....G,.....pos,.....with_labels |
bd80 | 3d 54 72 75 65 2c 0a 20 20 20 20 65 64 67 65 6c 69 73 74 3d 65 64 67 65 5f 6c 69 73 74 2c 0a 20 | =True,.....edgelist=edge_list,.. |
bda0 | 20 20 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 22 72 65 64 22 2c 0a 20 20 20 20 6e 6f 64 65 5f 73 69 | ...edge_color="red",.....node_si |
bdc0 | 7a 65 3d 32 30 30 2c 0a 20 20 20 20 77 69 64 74 68 3d 33 2c 0a 29 0a 0a 70 72 69 6e 74 28 22 54 | ze=200,.....width=3,.)..print("T |
bde0 | 68 65 20 72 6f 75 74 65 20 6f 66 20 74 68 65 20 74 72 61 76 65 6c 6c 65 72 20 69 73 3a 22 2c 20 | he.route.of.the.traveller.is:",. |
be00 | 63 79 63 6c 65 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 00 7b 57 56 | cycle).plt.show().PK.........{WV |
be20 | d4 74 ef ce db 04 00 00 db 04 00 00 21 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 6c 61 62 | .t..........!...drawing/plot_lab |
be40 | 65 6c 73 5f 61 6e 64 5f 63 6f 6c 6f 72 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | els_and_colors.py""".=========== |
be60 | 3d 3d 3d 3d 3d 3d 0a 4c 61 62 65 6c 73 20 41 6e 64 20 43 6f 6c 6f 72 73 0a 3d 3d 3d 3d 3d 3d 3d | ======.Labels.And.Colors.======= |
be80 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 55 73 65 20 60 6e 6f 64 65 6c 69 73 74 60 20 61 6e 64 20 60 | ==========..Use.`nodelist`.and.` |
bea0 | 65 64 67 65 6c 69 73 74 60 20 74 6f 20 61 70 70 6c 79 20 63 75 73 74 6f 6d 20 63 6f 6c 6f 72 69 | edgelist`.to.apply.custom.colori |
bec0 | 6e 67 20 61 6e 64 20 6c 61 62 65 6c 73 20 74 6f 20 76 61 72 69 6f 75 73 0a 63 6f 6d 70 6f 6e 65 | ng.and.labels.to.various.compone |
bee0 | 6e 74 73 20 6f 66 20 61 20 67 72 61 70 68 2e 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c | nts.of.a.graph..""".import.matpl |
bf00 | 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f | otlib.pyplot.as.plt.import.netwo |
bf20 | 72 6b 78 20 61 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 63 75 62 69 63 61 6c 5f 67 72 61 70 68 28 | rkx.as.nx..G.=.nx.cubical_graph( |
bf40 | 29 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 | ).pos.=.nx.spring_layout(G,.seed |
bf60 | 3d 33 31 31 33 37 39 34 36 35 32 29 20 20 23 20 70 6f 73 69 74 69 6f 6e 73 20 66 6f 72 20 61 6c | =3113794652)..#.positions.for.al |
bf80 | 6c 20 6e 6f 64 65 73 0a 0a 23 20 6e 6f 64 65 73 0a 6f 70 74 69 6f 6e 73 20 3d 20 7b 22 65 64 67 | l.nodes..#.nodes.options.=.{"edg |
bfa0 | 65 63 6f 6c 6f 72 73 22 3a 20 22 74 61 62 3a 67 72 61 79 22 2c 20 22 6e 6f 64 65 5f 73 69 7a 65 | ecolors":."tab:gray",."node_size |
bfc0 | 22 3a 20 38 30 30 2c 20 22 61 6c 70 68 61 22 3a 20 30 2e 39 7d 0a 6e 78 2e 64 72 61 77 5f 6e 65 | ":.800,."alpha":.0.9}.nx.draw_ne |
bfe0 | 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 47 2c 20 70 6f 73 2c 20 6e 6f 64 65 6c 69 73 74 3d 5b 30 | tworkx_nodes(G,.pos,.nodelist=[0 |
c000 | 2c 20 31 2c 20 32 2c 20 33 5d 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 74 61 62 3a 72 65 64 22 | ,.1,.2,.3],.node_color="tab:red" |
c020 | 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f | ,.**options).nx.draw_networkx_no |
c040 | 64 65 73 28 47 2c 20 70 6f 73 2c 20 6e 6f 64 65 6c 69 73 74 3d 5b 34 2c 20 35 2c 20 36 2c 20 37 | des(G,.pos,.nodelist=[4,.5,.6,.7 |
c060 | 5d 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 74 61 62 3a 62 6c 75 65 22 2c 20 2a 2a 6f 70 74 69 | ],.node_color="tab:blue",.**opti |
c080 | 6f 6e 73 29 0a 0a 23 20 65 64 67 65 73 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 | ons)..#.edges.nx.draw_networkx_e |
c0a0 | 64 67 65 73 28 47 2c 20 70 6f 73 2c 20 77 69 64 74 68 3d 31 2e 30 2c 20 61 6c 70 68 61 3d 30 2e | dges(G,.pos,.width=1.0,.alpha=0. |
c0c0 | 35 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 0a 20 20 20 20 47 | 5).nx.draw_networkx_edges(.....G |
c0e0 | 2c 0a 20 20 20 20 70 6f 73 2c 0a 20 20 20 20 65 64 67 65 6c 69 73 74 3d 5b 28 30 2c 20 31 29 2c | ,.....pos,.....edgelist=[(0,.1), |
c100 | 20 28 31 2c 20 32 29 2c 20 28 32 2c 20 33 29 2c 20 28 33 2c 20 30 29 5d 2c 0a 20 20 20 20 77 69 | .(1,.2),.(2,.3),.(3,.0)],.....wi |
c120 | 64 74 68 3d 38 2c 0a 20 20 20 20 61 6c 70 68 61 3d 30 2e 35 2c 0a 20 20 20 20 65 64 67 65 5f 63 | dth=8,.....alpha=0.5,.....edge_c |
c140 | 6f 6c 6f 72 3d 22 74 61 62 3a 72 65 64 22 2c 0a 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 | olor="tab:red",.).nx.draw_networ |
c160 | 6b 78 5f 65 64 67 65 73 28 0a 20 20 20 20 47 2c 0a 20 20 20 20 70 6f 73 2c 0a 20 20 20 20 65 64 | kx_edges(.....G,.....pos,.....ed |
c180 | 67 65 6c 69 73 74 3d 5b 28 34 2c 20 35 29 2c 20 28 35 2c 20 36 29 2c 20 28 36 2c 20 37 29 2c 20 | gelist=[(4,.5),.(5,.6),.(6,.7),. |
c1a0 | 28 37 2c 20 34 29 5d 2c 0a 20 20 20 20 77 69 64 74 68 3d 38 2c 0a 20 20 20 20 61 6c 70 68 61 3d | (7,.4)],.....width=8,.....alpha= |
c1c0 | 30 2e 35 2c 0a 20 20 20 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 22 74 61 62 3a 62 6c 75 65 22 2c 0a | 0.5,.....edge_color="tab:blue",. |
c1e0 | 29 0a 0a 0a 23 20 73 6f 6d 65 20 6d 61 74 68 20 6c 61 62 65 6c 73 0a 6c 61 62 65 6c 73 20 3d 20 | )...#.some.math.labels.labels.=. |
c200 | 7b 7d 0a 6c 61 62 65 6c 73 5b 30 5d 20 3d 20 72 22 24 61 24 22 0a 6c 61 62 65 6c 73 5b 31 5d 20 | {}.labels[0].=.r"$a$".labels[1]. |
c220 | 3d 20 72 22 24 62 24 22 0a 6c 61 62 65 6c 73 5b 32 5d 20 3d 20 72 22 24 63 24 22 0a 6c 61 62 65 | =.r"$b$".labels[2].=.r"$c$".labe |
c240 | 6c 73 5b 33 5d 20 3d 20 72 22 24 64 24 22 0a 6c 61 62 65 6c 73 5b 34 5d 20 3d 20 72 22 24 5c 61 | ls[3].=.r"$d$".labels[4].=.r"$\a |
c260 | 6c 70 68 61 24 22 0a 6c 61 62 65 6c 73 5b 35 5d 20 3d 20 72 22 24 5c 62 65 74 61 24 22 0a 6c 61 | lpha$".labels[5].=.r"$\beta$".la |
c280 | 62 65 6c 73 5b 36 5d 20 3d 20 72 22 24 5c 67 61 6d 6d 61 24 22 0a 6c 61 62 65 6c 73 5b 37 5d 20 | bels[6].=.r"$\gamma$".labels[7]. |
c2a0 | 3d 20 72 22 24 5c 64 65 6c 74 61 24 22 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6c | =.r"$\delta$".nx.draw_networkx_l |
c2c0 | 61 62 65 6c 73 28 47 2c 20 70 6f 73 2c 20 6c 61 62 65 6c 73 2c 20 66 6f 6e 74 5f 73 69 7a 65 3d | abels(G,.pos,.labels,.font_size= |
c2e0 | 32 32 2c 20 66 6f 6e 74 5f 63 6f 6c 6f 72 3d 22 77 68 69 74 65 73 6d 6f 6b 65 22 29 0a 0a 70 6c | 22,.font_color="whitesmoke")..pl |
c300 | 74 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 | t.tight_layout().plt.axis("off") |
c320 | 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 fd 7a 57 56 4e c6 76 b2 28 02 | .plt.show().PK.........zWVN.v.(. |
c340 | 00 00 28 02 00 00 1b 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 65 69 67 65 6e 76 61 6c 75 | ..(.......drawing/plot_eigenvalu |
c360 | 65 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 45 69 67 65 6e 76 61 6c 75 65 73 | es.py""".===========.Eigenvalues |
c380 | 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 43 72 65 61 74 65 20 61 6e 20 47 7b 6e 2c 6d 7d 20 72 | .===========..Create.an.G{n,m}.r |
c3a0 | 61 6e 64 6f 6d 20 67 72 61 70 68 20 61 6e 64 20 63 6f 6d 70 75 74 65 20 74 68 65 20 65 69 67 65 | andom.graph.and.compute.the.eige |
c3c0 | 6e 76 61 6c 75 65 73 2e 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 | nvalues..""".import.matplotlib.p |
c3e0 | 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 | yplot.as.plt.import.networkx.as. |
c400 | 6e 78 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 2e 6c 69 6e 61 6c 67 0a 0a 6e 20 3d 20 31 30 30 30 | nx.import.numpy.linalg..n.=.1000 |
c420 | 20 20 23 20 31 30 30 30 20 6e 6f 64 65 73 0a 6d 20 3d 20 35 30 30 30 20 20 23 20 35 30 30 30 20 | ..#.1000.nodes.m.=.5000..#.5000. |
c440 | 65 64 67 65 73 0a 47 20 3d 20 6e 78 2e 67 6e 6d 5f 72 61 6e 64 6f 6d 5f 67 72 61 70 68 28 6e 2c | edges.G.=.nx.gnm_random_graph(n, |
c460 | 20 6d 2c 20 73 65 65 64 3d 35 30 34 30 29 20 20 23 20 53 65 65 64 20 66 6f 72 20 72 65 70 72 6f | .m,.seed=5040)..#.Seed.for.repro |
c480 | 64 75 63 69 62 69 6c 69 74 79 0a 0a 4c 20 3d 20 6e 78 2e 6e 6f 72 6d 61 6c 69 7a 65 64 5f 6c 61 | ducibility..L.=.nx.normalized_la |
c4a0 | 70 6c 61 63 69 61 6e 5f 6d 61 74 72 69 78 28 47 29 0a 65 20 3d 20 6e 75 6d 70 79 2e 6c 69 6e 61 | placian_matrix(G).e.=.numpy.lina |
c4c0 | 6c 67 2e 65 69 67 76 61 6c 73 28 4c 2e 74 6f 61 72 72 61 79 28 29 29 0a 70 72 69 6e 74 28 22 4c | lg.eigvals(L.toarray()).print("L |
c4e0 | 61 72 67 65 73 74 20 65 69 67 65 6e 76 61 6c 75 65 3a 22 2c 20 6d 61 78 28 65 29 29 0a 70 72 69 | argest.eigenvalue:",.max(e)).pri |
c500 | 6e 74 28 22 53 6d 61 6c 6c 65 73 74 20 65 69 67 65 6e 76 61 6c 75 65 3a 22 2c 20 6d 69 6e 28 65 | nt("Smallest.eigenvalue:",.min(e |
c520 | 29 29 0a 70 6c 74 2e 68 69 73 74 28 65 2c 20 62 69 6e 73 3d 31 30 30 29 20 20 23 20 68 69 73 74 | )).plt.hist(e,.bins=100)..#.hist |
c540 | 6f 67 72 61 6d 20 77 69 74 68 20 31 30 30 20 62 69 6e 73 0a 70 6c 74 2e 78 6c 69 6d 28 30 2c 20 | ogram.with.100.bins.plt.xlim(0,. |
c560 | 32 29 20 20 23 20 65 69 67 65 6e 76 61 6c 75 65 73 20 62 65 74 77 65 65 6e 20 30 20 61 6e 64 20 | 2)..#.eigenvalues.between.0.and. |
c580 | 32 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 01 7b 57 56 b0 0b f0 aa 38 | 2.plt.show().PK.........{WV....8 |
c5a0 | 06 00 00 38 06 00 00 1d 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 73 70 65 63 74 72 61 6c | ...8.......drawing/plot_spectral |
c5c0 | 5f 67 72 69 64 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 53 | _grid.py""".==================.S |
c5e0 | 70 65 63 74 72 61 6c 20 45 6d 62 65 64 64 69 6e 67 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | pectral.Embedding.============== |
c600 | 3d 3d 3d 3d 0a 0a 54 68 65 20 73 70 65 63 74 72 61 6c 20 6c 61 79 6f 75 74 20 70 6f 73 69 74 69 | ====..The.spectral.layout.positi |
c620 | 6f 6e 73 20 74 68 65 20 6e 6f 64 65 73 20 6f 66 20 74 68 65 20 67 72 61 70 68 20 62 61 73 65 64 | ons.the.nodes.of.the.graph.based |
c640 | 20 6f 6e 20 74 68 65 0a 65 69 67 65 6e 76 65 63 74 6f 72 73 20 6f 66 20 74 68 65 20 67 72 61 70 | .on.the.eigenvectors.of.the.grap |
c660 | 68 20 4c 61 70 6c 61 63 69 61 6e 20 24 4c 20 3d 20 44 20 2d 20 41 24 2c 20 77 68 65 72 65 20 24 | h.Laplacian.$L.=.D.-.A$,.where.$ |
c680 | 41 24 20 69 73 20 74 68 65 0a 61 64 6a 61 63 65 6e 63 79 20 6d 61 74 72 69 78 20 61 6e 64 20 24 | A$.is.the.adjacency.matrix.and.$ |
c6a0 | 44 24 20 69 73 20 74 68 65 20 64 65 67 72 65 65 20 6d 61 74 72 69 78 20 6f 66 20 74 68 65 20 67 | D$.is.the.degree.matrix.of.the.g |
c6c0 | 72 61 70 68 2e 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 73 70 65 63 74 72 61 6c 20 6c | raph..By.default,.the.spectral.l |
c6e0 | 61 79 6f 75 74 20 77 69 6c 6c 20 65 6d 62 65 64 20 74 68 65 20 67 72 61 70 68 20 69 6e 20 74 77 | ayout.will.embed.the.graph.in.tw |
c700 | 6f 0a 64 69 6d 65 6e 73 69 6f 6e 73 20 28 79 6f 75 20 63 61 6e 20 65 6d 62 65 64 20 79 6f 75 72 | o.dimensions.(you.can.embed.your |
c720 | 20 67 72 61 70 68 20 69 6e 20 6f 74 68 65 72 20 64 69 6d 65 6e 73 69 6f 6e 73 20 75 73 69 6e 67 | .graph.in.other.dimensions.using |
c740 | 20 74 68 65 0a 60 60 64 69 6d 60 60 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 65 69 74 68 65 72 20 | .the.``dim``.argument.to.either. |
c760 | 3a 66 75 6e 63 3a 60 7e 64 72 61 77 69 6e 67 2e 6e 78 5f 70 79 6c 61 62 2e 64 72 61 77 5f 73 70 | :func:`~drawing.nx_pylab.draw_sp |
c780 | 65 63 74 72 61 6c 60 20 6f 72 0a 3a 66 75 6e 63 3a 60 7e 64 72 61 77 69 6e 67 2e 6c 61 79 6f 75 | ectral`.or.:func:`~drawing.layou |
c7a0 | 74 2e 73 70 65 63 74 72 61 6c 5f 6c 61 79 6f 75 74 60 29 2e 0a 0a 57 68 65 6e 20 74 68 65 20 65 | t.spectral_layout`)...When.the.e |
c7c0 | 64 67 65 73 20 6f 66 20 74 68 65 20 67 72 61 70 68 20 72 65 70 72 65 73 65 6e 74 20 73 69 6d 69 | dges.of.the.graph.represent.simi |
c7e0 | 6c 61 72 69 74 79 20 62 65 74 77 65 65 6e 20 74 68 65 20 69 6e 63 69 64 65 6e 74 0a 6e 6f 64 65 | larity.between.the.incident.node |
c800 | 73 2c 20 74 68 65 20 73 70 65 63 74 72 61 6c 20 65 6d 62 65 64 64 69 6e 67 20 77 69 6c 6c 20 70 | s,.the.spectral.embedding.will.p |
c820 | 6c 61 63 65 20 68 69 67 68 6c 79 20 73 69 6d 69 6c 61 72 20 6e 6f 64 65 73 20 63 6c 6f 73 65 72 | lace.highly.similar.nodes.closer |
c840 | 0a 74 6f 20 6f 6e 65 20 61 6e 6f 74 68 65 72 20 74 68 61 6e 20 6e 6f 64 65 73 20 77 68 69 63 68 | .to.one.another.than.nodes.which |
c860 | 20 61 72 65 20 6c 65 73 73 20 73 69 6d 69 6c 61 72 2e 0a 0a 54 68 69 73 20 69 73 20 70 61 72 74 | .are.less.similar...This.is.part |
c880 | 69 63 75 6c 61 72 6c 79 20 73 74 72 69 6b 69 6e 67 20 77 68 65 6e 20 79 6f 75 20 73 70 65 63 74 | icularly.striking.when.you.spect |
c8a0 | 72 61 6c 6c 79 20 65 6d 62 65 64 20 61 20 67 72 69 64 0a 67 72 61 70 68 2e 20 20 49 6e 20 74 68 | rally.embed.a.grid.graph...In.th |
c8c0 | 65 20 66 75 6c 6c 20 67 72 69 64 20 67 72 61 70 68 2c 20 74 68 65 20 6e 6f 64 65 73 20 69 6e 20 | e.full.grid.graph,.the.nodes.in. |
c8e0 | 74 68 65 20 63 65 6e 74 65 72 20 6f 66 20 74 68 65 0a 67 72 61 70 68 20 61 72 65 20 70 75 6c 6c | the.center.of.the.graph.are.pull |
c900 | 65 64 20 61 70 61 72 74 20 6d 6f 72 65 20 74 68 61 6e 20 6e 6f 64 65 73 20 6f 6e 20 74 68 65 20 | ed.apart.more.than.nodes.on.the. |
c920 | 70 65 72 69 70 68 65 72 79 2e 0a 41 73 20 79 6f 75 20 72 65 6d 6f 76 65 20 69 6e 74 65 72 6e 61 | periphery..As.you.remove.interna |
c940 | 6c 20 6e 6f 64 65 73 2c 20 74 68 69 73 20 65 66 66 65 63 74 20 69 6e 63 72 65 61 73 65 73 2e 0a | l.nodes,.this.effect.increases.. |
c960 | 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 | """..import.matplotlib.pyplot.as |
c980 | 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 0a 6f 70 74 | .plt.import.networkx.as.nx...opt |
c9a0 | 69 6f 6e 73 20 3d 20 7b 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 3a 20 22 43 30 22 2c 20 22 6e 6f 64 | ions.=.{"node_color":."C0",."nod |
c9c0 | 65 5f 73 69 7a 65 22 3a 20 31 30 30 7d 0a 0a 47 20 3d 20 6e 78 2e 67 72 69 64 5f 32 64 5f 67 72 | e_size":.100}..G.=.nx.grid_2d_gr |
c9e0 | 61 70 68 28 36 2c 20 36 29 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 33 33 32 29 0a 6e 78 2e 64 72 | aph(6,.6).plt.subplot(332).nx.dr |
ca00 | 61 77 5f 73 70 65 63 74 72 61 6c 28 47 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 0a 47 2e 72 65 6d | aw_spectral(G,.**options)..G.rem |
ca20 | 6f 76 65 5f 65 64 67 65 28 28 32 2c 20 32 29 2c 20 28 32 2c 20 33 29 29 0a 70 6c 74 2e 73 75 62 | ove_edge((2,.2),.(2,.3)).plt.sub |
ca40 | 70 6c 6f 74 28 33 33 34 29 0a 6e 78 2e 64 72 61 77 5f 73 70 65 63 74 72 61 6c 28 47 2c 20 2a 2a | plot(334).nx.draw_spectral(G,.** |
ca60 | 6f 70 74 69 6f 6e 73 29 0a 0a 47 2e 72 65 6d 6f 76 65 5f 65 64 67 65 28 28 33 2c 20 32 29 2c 20 | options)..G.remove_edge((3,.2),. |
ca80 | 28 33 2c 20 33 29 29 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 33 33 35 29 0a 6e 78 2e 64 72 61 77 | (3,.3)).plt.subplot(335).nx.draw |
caa0 | 5f 73 70 65 63 74 72 61 6c 28 47 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 0a 47 2e 72 65 6d 6f 76 | _spectral(G,.**options)..G.remov |
cac0 | 65 5f 65 64 67 65 28 28 32 2c 20 32 29 2c 20 28 33 2c 20 32 29 29 0a 70 6c 74 2e 73 75 62 70 6c | e_edge((2,.2),.(3,.2)).plt.subpl |
cae0 | 6f 74 28 33 33 36 29 0a 6e 78 2e 64 72 61 77 5f 73 70 65 63 74 72 61 6c 28 47 2c 20 2a 2a 6f 70 | ot(336).nx.draw_spectral(G,.**op |
cb00 | 74 69 6f 6e 73 29 0a 0a 47 2e 72 65 6d 6f 76 65 5f 65 64 67 65 28 28 32 2c 20 33 29 2c 20 28 33 | tions)..G.remove_edge((2,.3),.(3 |
cb20 | 2c 20 33 29 29 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 33 33 37 29 0a 6e 78 2e 64 72 61 77 5f 73 | ,.3)).plt.subplot(337).nx.draw_s |
cb40 | 70 65 63 74 72 61 6c 28 47 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 0a 47 2e 72 65 6d 6f 76 65 5f | pectral(G,.**options)..G.remove_ |
cb60 | 65 64 67 65 28 28 31 2c 20 32 29 2c 20 28 31 2c 20 33 29 29 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 | edge((1,.2),.(1,.3)).plt.subplot |
cb80 | 28 33 33 38 29 0a 6e 78 2e 64 72 61 77 5f 73 70 65 63 74 72 61 6c 28 47 2c 20 2a 2a 6f 70 74 69 | (338).nx.draw_spectral(G,.**opti |
cba0 | 6f 6e 73 29 0a 0a 47 2e 72 65 6d 6f 76 65 5f 65 64 67 65 28 28 34 2c 20 32 29 2c 20 28 34 2c 20 | ons)..G.remove_edge((4,.2),.(4,. |
cbc0 | 33 29 29 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 33 33 39 29 0a 6e 78 2e 64 72 61 77 5f 73 70 65 | 3)).plt.subplot(339).nx.draw_spe |
cbe0 | 63 74 72 61 6c 28 47 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 0a 70 6c 74 2e 73 68 6f 77 28 29 0a | ctral(G,.**options)..plt.show(). |
cc00 | 50 4b 03 04 14 00 00 00 00 00 00 7b 57 56 11 ef 87 aa 7c 08 00 00 7c 08 00 00 20 00 00 00 64 72 | PK.........{WV....|...|.......dr |
cc20 | 61 77 69 6e 67 2f 70 6c 6f 74 5f 72 61 69 6e 62 6f 77 5f 63 6f 6c 6f 72 69 6e 67 2e 70 79 22 22 | awing/plot_rainbow_coloring.py"" |
cc40 | 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 61 69 6e 62 6f 77 20 43 6f 6c 6f 72 | ".================.Rainbow.Color |
cc60 | 69 6e 67 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 47 65 6e 65 72 61 74 65 20 61 | ing.================..Generate.a |
cc80 | 20 63 6f 6d 70 6c 65 74 65 20 67 72 61 70 68 20 77 69 74 68 20 31 33 20 6e 6f 64 65 73 20 69 6e | .complete.graph.with.13.nodes.in |
cca0 | 20 61 20 63 69 72 63 75 6c 61 72 20 6c 61 79 6f 75 74 20 77 69 74 68 20 74 68 65 0a 65 64 67 65 | .a.circular.layout.with.the.edge |
ccc0 | 73 20 63 6f 6c 6f 72 65 64 20 62 79 20 6e 6f 64 65 20 64 69 73 74 61 6e 63 65 2e 20 54 68 65 20 | s.colored.by.node.distance..The. |
cce0 | 6e 6f 64 65 20 64 69 73 74 61 6e 63 65 20 69 73 20 67 69 76 65 6e 20 62 79 20 74 68 65 20 6d 69 | node.distance.is.given.by.the.mi |
cd00 | 6e 69 6d 75 6d 0a 6e 75 6d 62 65 72 20 6f 66 20 6e 6f 64 65 73 20 74 72 61 76 65 72 73 65 64 20 | nimum.number.of.nodes.traversed. |
cd20 | 61 6c 6f 6e 67 20 61 6e 20 61 72 63 20 62 65 74 77 65 65 6e 20 61 6e 79 20 74 77 6f 20 6e 6f 64 | along.an.arc.between.any.two.nod |
cd40 | 65 73 20 6f 6e 20 74 68 65 20 63 69 72 63 6c 65 2e 0a 0a 53 75 63 68 20 67 72 61 70 68 73 20 61 | es.on.the.circle...Such.graphs.a |
cd60 | 72 65 20 74 68 65 20 73 75 62 6a 65 63 74 20 6f 66 20 52 69 6e 67 65 6c 27 73 20 63 6f 6e 6a 65 | re.the.subject.of.Ringel's.conje |
cd80 | 63 74 75 72 65 2c 20 77 68 69 63 68 20 73 74 61 74 65 73 3a 20 61 6e 79 20 63 6f 6d 70 6c 65 74 | cture,.which.states:.any.complet |
cda0 | 65 0a 67 72 61 70 68 20 77 69 74 68 20 60 60 32 6e 20 2b 20 31 60 60 20 6e 6f 64 65 73 20 63 61 | e.graph.with.``2n.+.1``.nodes.ca |
cdc0 | 6e 20 62 65 20 74 69 6c 65 64 20 62 79 20 61 6e 79 20 74 72 65 65 20 77 69 74 68 20 60 60 6e 20 | n.be.tiled.by.any.tree.with.``n. |
cde0 | 2b 20 31 60 60 20 6e 6f 64 65 73 0a 28 69 2e 65 2e 20 63 6f 70 69 65 73 20 6f 66 20 74 68 65 20 | +.1``.nodes.(i.e..copies.of.the. |
ce00 | 74 72 65 65 20 63 61 6e 20 62 65 20 70 6c 61 63 65 64 20 6f 76 65 72 20 74 68 65 20 63 6f 6d 70 | tree.can.be.placed.over.the.comp |
ce20 | 6c 65 74 65 20 67 72 61 70 68 20 73 75 63 68 20 74 68 61 74 20 65 61 63 68 0a 65 64 67 65 20 69 | lete.graph.such.that.each.edge.i |
ce40 | 6e 20 74 68 65 20 63 6f 6d 70 6c 65 74 65 20 67 72 61 70 68 20 69 73 20 63 6f 76 65 72 65 64 20 | n.the.complete.graph.is.covered. |
ce60 | 65 78 61 63 74 6c 79 20 6f 6e 63 65 29 2e 20 54 68 65 20 65 64 67 65 20 63 6f 6c 6f 72 69 6e 67 | exactly.once)..The.edge.coloring |
ce80 | 20 69 73 0a 68 65 6c 70 66 75 6c 20 69 6e 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 68 6f 77 20 74 | .is.helpful.in.determining.how.t |
cea0 | 6f 20 70 6c 61 63 65 20 74 68 65 20 74 72 65 65 20 63 6f 70 69 65 73 2e 0a 0a 52 65 66 65 72 65 | o.place.the.tree.copies...Refere |
cec0 | 6e 63 65 73 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 68 74 74 70 73 3a 2f 2f 77 77 77 2e 71 75 61 6e | nces.----------.https://www.quan |
cee0 | 74 61 6d 61 67 61 7a 69 6e 65 2e 6f 72 67 2f 6d 61 74 68 65 6d 61 74 69 63 69 61 6e 73 2d 70 72 | tamagazine.org/mathematicians-pr |
cf00 | 6f 76 65 2d 72 69 6e 67 65 6c 73 2d 67 72 61 70 68 2d 74 68 65 6f 72 79 2d 63 6f 6e 6a 65 63 74 | ove-ringels-graph-theory-conject |
cf20 | 75 72 65 2d 32 30 32 30 30 32 31 39 2f 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 | ure-20200219/.""".import.matplot |
cf40 | 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b | lib.pyplot.as.plt.import.network |
cf60 | 78 20 61 73 20 6e 78 0a 0a 23 20 41 20 72 61 69 6e 62 6f 77 20 63 6f 6c 6f 72 20 6d 61 70 70 69 | x.as.nx..#.A.rainbow.color.mappi |
cf80 | 6e 67 20 75 73 69 6e 67 20 6d 61 74 70 6c 6f 74 6c 69 62 27 73 20 74 61 62 6c 65 61 75 20 63 6f | ng.using.matplotlib's.tableau.co |
cfa0 | 6c 6f 72 73 0a 6e 6f 64 65 5f 64 69 73 74 5f 74 6f 5f 63 6f 6c 6f 72 20 3d 20 7b 0a 20 20 20 20 | lors.node_dist_to_color.=.{..... |
cfc0 | 31 3a 20 22 74 61 62 3a 72 65 64 22 2c 0a 20 20 20 20 32 3a 20 22 74 61 62 3a 6f 72 61 6e 67 65 | 1:."tab:red",.....2:."tab:orange |
cfe0 | 22 2c 0a 20 20 20 20 33 3a 20 22 74 61 62 3a 6f 6c 69 76 65 22 2c 0a 20 20 20 20 34 3a 20 22 74 | ",.....3:."tab:olive",.....4:."t |
d000 | 61 62 3a 67 72 65 65 6e 22 2c 0a 20 20 20 20 35 3a 20 22 74 61 62 3a 62 6c 75 65 22 2c 0a 20 20 | ab:green",.....5:."tab:blue",... |
d020 | 20 20 36 3a 20 22 74 61 62 3a 70 75 72 70 6c 65 22 2c 0a 7d 0a 0a 23 20 43 72 65 61 74 65 20 61 | ..6:."tab:purple",.}..#.Create.a |
d040 | 20 63 6f 6d 70 6c 65 74 65 20 67 72 61 70 68 20 77 69 74 68 20 61 6e 20 6f 64 64 20 6e 75 6d 62 | .complete.graph.with.an.odd.numb |
d060 | 65 72 20 6f 66 20 6e 6f 64 65 73 0a 6e 6e 6f 64 65 73 20 3d 20 31 33 0a 47 20 3d 20 6e 78 2e 63 | er.of.nodes.nnodes.=.13.G.=.nx.c |
d080 | 6f 6d 70 6c 65 74 65 5f 67 72 61 70 68 28 6e 6e 6f 64 65 73 29 0a 0a 23 20 41 20 67 72 61 70 68 | omplete_graph(nnodes)..#.A.graph |
d0a0 | 20 77 69 74 68 20 28 32 6e 20 2b 20 31 29 20 6e 6f 64 65 73 20 72 65 71 75 69 72 65 73 20 6e 20 | .with.(2n.+.1).nodes.requires.n. |
d0c0 | 63 6f 6c 6f 72 73 20 66 6f 72 20 74 68 65 20 65 64 67 65 73 0a 6e 20 3d 20 28 6e 6e 6f 64 65 73 | colors.for.the.edges.n.=.(nnodes |
d0e0 | 20 2d 20 31 29 20 2f 2f 20 32 0a 6e 64 69 73 74 5f 69 74 65 72 20 3d 20 6c 69 73 74 28 72 61 6e | .-.1).//.2.ndist_iter.=.list(ran |
d100 | 67 65 28 31 2c 20 6e 20 2b 20 31 29 29 0a 0a 23 20 54 61 6b 65 20 61 64 76 61 6e 74 61 67 65 20 | ge(1,.n.+.1))..#.Take.advantage. |
d120 | 6f 66 20 63 69 72 63 75 6c 61 72 20 73 79 6d 6d 65 74 72 79 20 69 6e 20 64 65 74 65 72 6d 69 6e | of.circular.symmetry.in.determin |
d140 | 69 6e 67 20 6e 6f 64 65 20 64 69 73 74 61 6e 63 65 73 0a 6e 64 69 73 74 5f 69 74 65 72 20 2b 3d | ing.node.distances.ndist_iter.+= |
d160 | 20 6e 64 69 73 74 5f 69 74 65 72 5b 3a 3a 2d 31 5d 0a 0a 0a 64 65 66 20 63 79 63 6c 65 28 6e 6c | .ndist_iter[::-1]...def.cycle(nl |
d180 | 69 73 74 2c 20 6e 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 6c 69 73 74 5b 2d 6e 3a 5d 20 2b | ist,.n):.....return.nlist[-n:].+ |
d1a0 | 20 6e 6c 69 73 74 5b 3a 2d 6e 5d 0a 0a 0a 23 20 52 6f 74 61 74 65 20 6e 6f 64 65 73 20 61 72 6f | .nlist[:-n]...#.Rotate.nodes.aro |
d1c0 | 75 6e 64 20 74 68 65 20 63 69 72 63 6c 65 20 61 6e 64 20 61 73 73 69 67 6e 20 63 6f 6c 6f 72 73 | und.the.circle.and.assign.colors |
d1e0 | 20 66 6f 72 20 65 61 63 68 20 65 64 67 65 20 62 61 73 65 64 20 6f 6e 0a 23 20 6e 6f 64 65 20 64 | .for.each.edge.based.on.#.node.d |
d200 | 69 73 74 61 6e 63 65 0a 6e 6f 64 65 73 20 3d 20 6c 69 73 74 28 47 2e 6e 6f 64 65 73 28 29 29 0a | istance.nodes.=.list(G.nodes()). |
d220 | 66 6f 72 20 69 2c 20 6e 64 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 6e 64 69 73 74 5f 69 74 65 | for.i,.nd.in.enumerate(ndist_ite |
d240 | 72 29 3a 0a 20 20 20 20 66 6f 72 20 75 2c 20 76 20 69 6e 20 7a 69 70 28 6e 6f 64 65 73 2c 20 63 | r):.....for.u,.v.in.zip(nodes,.c |
d260 | 79 63 6c 65 28 6e 6f 64 65 73 2c 20 69 20 2b 20 31 29 29 3a 0a 20 20 20 20 20 20 20 20 47 5b 75 | ycle(nodes,.i.+.1)):.........G[u |
d280 | 5d 5b 76 5d 5b 22 63 6f 6c 6f 72 22 5d 20 3d 20 6e 6f 64 65 5f 64 69 73 74 5f 74 6f 5f 63 6f 6c | ][v]["color"].=.node_dist_to_col |
d2a0 | 6f 72 5b 6e 64 5d 0a 0a 70 6f 73 20 3d 20 6e 78 2e 63 69 72 63 75 6c 61 72 5f 6c 61 79 6f 75 74 | or[nd]..pos.=.nx.circular_layout |
d2c0 | 28 47 29 0a 23 20 43 72 65 61 74 65 20 61 20 66 69 67 75 72 65 20 77 69 74 68 20 31 3a 31 20 61 | (G).#.Create.a.figure.with.1:1.a |
d2e0 | 73 70 65 63 74 20 72 61 74 69 6f 20 74 6f 20 70 72 65 73 65 72 76 65 20 74 68 65 20 63 69 72 63 | spect.ratio.to.preserve.the.circ |
d300 | 6c 65 2e 0a 66 69 67 2c 20 61 78 20 3d 20 70 6c 74 2e 73 75 62 70 6c 6f 74 73 28 66 69 67 73 69 | le..fig,.ax.=.plt.subplots(figsi |
d320 | 7a 65 3d 28 38 2c 20 38 29 29 0a 6e 6f 64 65 5f 6f 70 74 73 20 3d 20 7b 22 6e 6f 64 65 5f 73 69 | ze=(8,.8)).node_opts.=.{"node_si |
d340 | 7a 65 22 3a 20 35 30 30 2c 20 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 3a 20 22 77 22 2c 20 22 65 64 | ze":.500,."node_color":."w",."ed |
d360 | 67 65 63 6f 6c 6f 72 73 22 3a 20 22 6b 22 2c 20 22 6c 69 6e 65 77 69 64 74 68 73 22 3a 20 32 2e | gecolors":."k",."linewidths":.2. |
d380 | 30 7d 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 47 2c 20 70 6f 73 | 0}.nx.draw_networkx_nodes(G,.pos |
d3a0 | 2c 20 2a 2a 6e 6f 64 65 5f 6f 70 74 73 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f | ,.**node_opts).nx.draw_networkx_ |
d3c0 | 6c 61 62 65 6c 73 28 47 2c 20 70 6f 73 2c 20 66 6f 6e 74 5f 73 69 7a 65 3d 31 34 29 0a 23 20 45 | labels(G,.pos,.font_size=14).#.E |
d3e0 | 78 74 72 61 63 74 20 63 6f 6c 6f 72 20 66 72 6f 6d 20 65 64 67 65 20 64 61 74 61 0a 65 64 67 65 | xtract.color.from.edge.data.edge |
d400 | 5f 63 6f 6c 6f 72 73 20 3d 20 5b 65 64 67 65 64 61 74 61 5b 22 63 6f 6c 6f 72 22 5d 20 66 6f 72 | _colors.=.[edgedata["color"].for |
d420 | 20 5f 2c 20 5f 2c 20 65 64 67 65 64 61 74 61 20 69 6e 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d | ._,._,.edgedata.in.G.edges(data= |
d440 | 54 72 75 65 29 5d 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 47 2c | True)].nx.draw_networkx_edges(G, |
d460 | 20 70 6f 73 2c 20 77 69 64 74 68 3d 32 2e 30 2c 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 65 64 67 65 | .pos,.width=2.0,.edge_color=edge |
d480 | 5f 63 6f 6c 6f 72 73 29 0a 0a 61 78 2e 73 65 74 5f 61 78 69 73 5f 6f 66 66 28 29 0a 66 69 67 2e | _colors)..ax.set_axis_off().fig. |
d4a0 | 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 | tight_layout().plt.show().PK.... |
d4c0 | 00 00 00 00 fd 7a 57 56 bf 3e 32 8a 1e 04 00 00 1e 04 00 00 1a 00 00 00 64 72 61 77 69 6e 67 2f | .....zWV.>2.............drawing/ |
d4e0 | 70 6c 6f 74 5f 66 6f 75 72 5f 67 72 69 64 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | plot_four_grids.py""".========== |
d500 | 0a 46 6f 75 72 20 47 72 69 64 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 44 72 61 77 20 61 20 34 | .Four.Grids.==========..Draw.a.4 |
d520 | 78 34 20 67 72 61 70 68 20 77 69 74 68 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 0a 0a 54 68 69 73 20 | x4.graph.with.matplotlib...This. |
d540 | 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 6b | example.illustrates.the.use.of.k |
d560 | 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 60 6e 65 74 77 6f 72 6b 78 2e 64 72 | eyword.arguments.to.`networkx.dr |
d580 | 61 77 60 20 74 6f 0a 63 75 73 74 6f 6d 69 7a 65 20 74 68 65 20 76 69 73 75 61 6c 69 7a 61 74 69 | aw`.to.customize.the.visualizati |
d5a0 | 6f 6e 20 6f 66 20 61 20 73 69 6d 70 6c 65 20 47 72 61 70 68 20 63 6f 6d 70 72 69 73 69 6e 67 20 | on.of.a.simple.Graph.comprising. |
d5c0 | 61 20 34 78 34 20 67 72 69 64 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c | a.4x4.grid.."""..import.matplotl |
d5e0 | 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 | ib.pyplot.as.plt.import.networkx |
d600 | 20 61 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 67 72 69 64 5f 32 64 5f 67 72 61 70 68 28 34 2c 20 | .as.nx..G.=.nx.grid_2d_graph(4,. |
d620 | 34 29 20 20 23 20 34 78 34 20 67 72 69 64 0a 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f | 4)..#.4x4.grid..pos.=.nx.spring_ |
d640 | 6c 61 79 6f 75 74 28 47 2c 20 69 74 65 72 61 74 69 6f 6e 73 3d 31 30 30 2c 20 73 65 65 64 3d 33 | layout(G,.iterations=100,.seed=3 |
d660 | 39 37 37 35 29 0a 0a 23 20 43 72 65 61 74 65 20 61 20 32 78 32 20 73 75 62 70 6c 6f 74 0a 66 69 | 9775)..#.Create.a.2x2.subplot.fi |
d680 | 67 2c 20 61 6c 6c 5f 61 78 65 73 20 3d 20 70 6c 74 2e 73 75 62 70 6c 6f 74 73 28 32 2c 20 32 29 | g,.all_axes.=.plt.subplots(2,.2) |
d6a0 | 0a 61 78 20 3d 20 61 6c 6c 5f 61 78 65 73 2e 66 6c 61 74 0a 0a 6e 78 2e 64 72 61 77 28 47 2c 20 | .ax.=.all_axes.flat..nx.draw(G,. |
d6c0 | 70 6f 73 2c 20 61 78 3d 61 78 5b 30 5d 2c 20 66 6f 6e 74 5f 73 69 7a 65 3d 38 29 0a 6e 78 2e 64 | pos,.ax=ax[0],.font_size=8).nx.d |
d6e0 | 72 61 77 28 47 2c 20 70 6f 73 2c 20 61 78 3d 61 78 5b 31 5d 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d | raw(G,.pos,.ax=ax[1],.node_size= |
d700 | 30 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 29 0a 6e 78 2e 64 72 61 77 28 0a 20 | 0,.with_labels=False).nx.draw(.. |
d720 | 20 20 20 47 2c 0a 20 20 20 20 70 6f 73 2c 0a 20 20 20 20 61 78 3d 61 78 5b 32 5d 2c 0a 20 20 20 | ...G,.....pos,.....ax=ax[2],.... |
d740 | 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 74 61 62 3a 67 72 65 65 6e 22 2c 0a 20 20 20 20 65 64 67 | .node_color="tab:green",.....edg |
d760 | 65 63 6f 6c 6f 72 73 3d 22 74 61 62 3a 67 72 61 79 22 2c 20 20 23 20 4e 6f 64 65 20 73 75 72 66 | ecolors="tab:gray",..#.Node.surf |
d780 | 61 63 65 20 63 6f 6c 6f 72 0a 20 20 20 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 22 74 61 62 3a 67 72 | ace.color.....edge_color="tab:gr |
d7a0 | 61 79 22 2c 20 20 23 20 43 6f 6c 6f 72 20 6f 66 20 67 72 61 70 68 20 65 64 67 65 73 0a 20 20 20 | ay",..#.Color.of.graph.edges.... |
d7c0 | 20 6e 6f 64 65 5f 73 69 7a 65 3d 32 35 30 2c 0a 20 20 20 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d | .node_size=250,.....with_labels= |
d7e0 | 46 61 6c 73 65 2c 0a 20 20 20 20 77 69 64 74 68 3d 36 2c 0a 29 0a 48 20 3d 20 47 2e 74 6f 5f 64 | False,.....width=6,.).H.=.G.to_d |
d800 | 69 72 65 63 74 65 64 28 29 0a 6e 78 2e 64 72 61 77 28 0a 20 20 20 20 48 2c 0a 20 20 20 20 70 6f | irected().nx.draw(.....H,.....po |
d820 | 73 2c 0a 20 20 20 20 61 78 3d 61 78 5b 33 5d 2c 0a 20 20 20 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d | s,.....ax=ax[3],.....node_color= |
d840 | 22 74 61 62 3a 6f 72 61 6e 67 65 22 2c 0a 20 20 20 20 6e 6f 64 65 5f 73 69 7a 65 3d 32 30 2c 0a | "tab:orange",.....node_size=20,. |
d860 | 20 20 20 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 2c 0a 20 20 20 20 61 72 72 6f 77 | ....with_labels=False,.....arrow |
d880 | 73 69 7a 65 3d 31 30 2c 0a 20 20 20 20 77 69 64 74 68 3d 32 2c 0a 29 0a 0a 23 20 53 65 74 20 6d | size=10,.....width=2,.)..#.Set.m |
d8a0 | 61 72 67 69 6e 73 20 66 6f 72 20 74 68 65 20 61 78 65 73 20 73 6f 20 74 68 61 74 20 6e 6f 64 65 | argins.for.the.axes.so.that.node |
d8c0 | 73 20 61 72 65 6e 27 74 20 63 6c 69 70 70 65 64 0a 66 6f 72 20 61 20 69 6e 20 61 78 3a 0a 20 20 | s.aren't.clipped.for.a.in.ax:... |
d8e0 | 20 20 61 2e 6d 61 72 67 69 6e 73 28 30 2e 31 30 29 0a 66 69 67 2e 74 69 67 68 74 5f 6c 61 79 6f | ..a.margins(0.10).fig.tight_layo |
d900 | 75 74 28 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 00 7b 57 56 85 72 | ut().plt.show().PK.........{WV.r |
d920 | 37 d3 06 10 00 00 06 10 00 00 1b 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 6b 6e 75 74 68 | 7.............drawing/plot_knuth |
d940 | 5f 6d 69 6c 65 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4b 6e 75 74 68 20 4d | _miles.py""".===========.Knuth.M |
d960 | 69 6c 65 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 60 6d 69 6c 65 73 5f 67 72 61 70 68 28 29 | iles.===========..`miles_graph() |
d980 | 60 20 72 65 74 75 72 6e 73 20 61 6e 20 75 6e 64 69 72 65 63 74 65 64 20 67 72 61 70 68 20 6f 76 | `.returns.an.undirected.graph.ov |
d9a0 | 65 72 20 31 32 38 20 55 53 20 63 69 74 69 65 73 2e 20 54 68 65 0a 63 69 74 69 65 73 20 65 61 63 | er.128.US.cities..The.cities.eac |
d9c0 | 68 20 68 61 76 65 20 6c 6f 63 61 74 69 6f 6e 20 61 6e 64 20 70 6f 70 75 6c 61 74 69 6f 6e 20 64 | h.have.location.and.population.d |
d9e0 | 61 74 61 2e 20 20 54 68 65 20 65 64 67 65 73 20 61 72 65 20 6c 61 62 65 6c 65 64 20 77 69 74 68 | ata...The.edges.are.labeled.with |
da00 | 20 74 68 65 0a 64 69 73 74 61 6e 63 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 74 77 6f 20 63 69 | .the.distance.between.the.two.ci |
da20 | 74 69 65 73 2e 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 64 65 73 63 72 69 62 65 64 | ties...This.example.is.described |
da40 | 20 69 6e 20 53 65 63 74 69 6f 6e 20 31 2e 31 20 6f 66 0a 0a 20 20 20 20 44 6f 6e 61 6c 64 20 45 | .in.Section.1.1.of......Donald.E |
da60 | 2e 20 4b 6e 75 74 68 2c 20 22 54 68 65 20 53 74 61 6e 66 6f 72 64 20 47 72 61 70 68 42 61 73 65 | ..Knuth,."The.Stanford.GraphBase |
da80 | 3a 20 41 20 50 6c 61 74 66 6f 72 6d 20 66 6f 72 20 43 6f 6d 62 69 6e 61 74 6f 72 69 61 6c 0a 20 | :.A.Platform.for.Combinatorial.. |
daa0 | 20 20 20 43 6f 6d 70 75 74 69 6e 67 22 2c 20 41 43 4d 20 50 72 65 73 73 2c 20 4e 65 77 20 59 6f | ...Computing",.ACM.Press,.New.Yo |
dac0 | 72 6b 2c 20 31 39 39 33 2e 0a 20 20 20 20 68 74 74 70 3a 2f 2f 77 77 77 2d 63 73 2d 66 61 63 75 | rk,.1993......http://www-cs-facu |
dae0 | 6c 74 79 2e 73 74 61 6e 66 6f 72 64 2e 65 64 75 2f 7e 6b 6e 75 74 68 2f 73 67 62 2e 68 74 6d 6c | lty.stanford.edu/~knuth/sgb.html |
db00 | 0a 0a 54 68 65 20 64 61 74 61 20 66 69 6c 65 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 61 74 3a | ..The.data.file.can.be.found.at: |
db20 | 0a 0a 2d 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6e 65 74 77 6f 72 6b 78 2f | ..-.https://github.com/networkx/ |
db40 | 6e 65 74 77 6f 72 6b 78 2f 62 6c 6f 62 2f 6d 61 69 6e 2f 65 78 61 6d 70 6c 65 73 2f 64 72 61 77 | networkx/blob/main/examples/draw |
db60 | 69 6e 67 2f 6b 6e 75 74 68 5f 6d 69 6c 65 73 2e 74 78 74 2e 67 7a 0a 22 22 22 0a 0a 69 6d 70 6f | ing/knuth_miles.txt.gz."""..impo |
db80 | 72 74 20 67 7a 69 70 0a 69 6d 70 6f 72 74 20 72 65 0a 0a 23 20 49 67 6e 6f 72 65 20 61 6e 79 20 | rt.gzip.import.re..#.Ignore.any. |
dba0 | 77 61 72 6e 69 6e 67 73 20 72 65 6c 61 74 65 64 20 74 6f 20 64 6f 77 6e 6c 6f 61 64 69 6e 67 20 | warnings.related.to.downloading. |
dbc0 | 73 68 70 66 69 6c 65 73 20 77 69 74 68 20 63 61 72 74 6f 70 79 0a 69 6d 70 6f 72 74 20 77 61 72 | shpfiles.with.cartopy.import.war |
dbe0 | 6e 69 6e 67 73 0a 0a 77 61 72 6e 69 6e 67 73 2e 73 69 6d 70 6c 65 66 69 6c 74 65 72 28 22 69 67 | nings..warnings.simplefilter("ig |
dc00 | 6e 6f 72 65 22 29 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 | nore")..import.numpy.as.np.impor |
dc20 | 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 | t.matplotlib.pyplot.as.plt.impor |
dc40 | 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 0a 64 65 66 20 6d 69 6c 65 73 5f 67 72 61 | t.networkx.as.nx...def.miles_gra |
dc60 | 70 68 28 29 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 63 69 74 65 73 20 65 78 | ph():....."""Return.the.cites.ex |
dc80 | 61 6d 70 6c 65 20 67 72 61 70 68 20 69 6e 20 6d 69 6c 65 73 5f 64 61 74 2e 74 78 74 0a 20 20 20 | ample.graph.in.miles_dat.txt.... |
dca0 | 20 66 72 6f 6d 20 74 68 65 20 53 74 61 6e 66 6f 72 64 20 47 72 61 70 68 42 61 73 65 2e 0a 20 20 | .from.the.Stanford.GraphBase.... |
dcc0 | 20 20 22 22 22 0a 20 20 20 20 23 20 6f 70 65 6e 20 66 69 6c 65 20 6d 69 6c 65 73 5f 64 61 74 2e | ..""".....#.open.file.miles_dat. |
dce0 | 74 78 74 2e 67 7a 20 28 6f 72 20 6d 69 6c 65 73 5f 64 61 74 2e 74 78 74 29 0a 0a 20 20 20 20 66 | txt.gz.(or.miles_dat.txt)......f |
dd00 | 68 20 3d 20 67 7a 69 70 2e 6f 70 65 6e 28 22 6b 6e 75 74 68 5f 6d 69 6c 65 73 2e 74 78 74 2e 67 | h.=.gzip.open("knuth_miles.txt.g |
dd20 | 7a 22 2c 20 22 72 22 29 0a 0a 20 20 20 20 47 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 0a 20 20 20 | z",."r")......G.=.nx.Graph().... |
dd40 | 20 47 2e 70 6f 73 69 74 69 6f 6e 20 3d 20 7b 7d 0a 20 20 20 20 47 2e 70 6f 70 75 6c 61 74 69 6f | .G.position.=.{}.....G.populatio |
dd60 | 6e 20 3d 20 7b 7d 0a 0a 20 20 20 20 63 69 74 69 65 73 20 3d 20 5b 5d 0a 20 20 20 20 66 6f 72 20 | n.=.{}......cities.=.[].....for. |
dd80 | 6c 69 6e 65 20 69 6e 20 66 68 2e 72 65 61 64 6c 69 6e 65 73 28 29 3a 0a 20 20 20 20 20 20 20 20 | line.in.fh.readlines():......... |
dda0 | 6c 69 6e 65 20 3d 20 6c 69 6e 65 2e 64 65 63 6f 64 65 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 | line.=.line.decode().........if. |
ddc0 | 6c 69 6e 65 2e 73 74 61 72 74 73 77 69 74 68 28 22 2a 22 29 3a 20 20 23 20 73 6b 69 70 20 63 6f | line.startswith("*"):..#.skip.co |
dde0 | 6d 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 0a 20 20 20 | mments.............continue..... |
de00 | 20 20 20 20 20 6e 75 6d 66 69 6e 64 20 3d 20 72 65 2e 63 6f 6d 70 69 6c 65 28 72 22 5e 5c 64 2b | .....numfind.=.re.compile(r"^\d+ |
de20 | 22 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 75 6d 66 69 6e 64 2e 6d 61 74 63 68 28 6c 69 6e | ")..........if.numfind.match(lin |
de40 | 65 29 3a 20 20 23 20 74 68 69 73 20 6c 69 6e 65 20 69 73 20 64 69 73 74 61 6e 63 65 73 0a 20 20 | e):..#.this.line.is.distances... |
de60 | 20 20 20 20 20 20 20 20 20 20 64 69 73 74 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 29 0a 20 20 | ..........dist.=.line.split()... |
de80 | 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 64 20 69 6e 20 64 69 73 74 3a 0a 20 20 20 20 20 20 20 | ..........for.d.in.dist:........ |
dea0 | 20 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 65 64 67 65 28 63 69 74 79 2c 20 63 69 74 69 65 73 | .........G.add_edge(city,.cities |
dec0 | 5b 69 5d 2c 20 77 65 69 67 68 74 3d 69 6e 74 28 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | [i],.weight=int(d))............. |
dee0 | 20 20 20 20 69 20 3d 20 69 20 2b 20 31 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 20 20 23 20 74 | ....i.=.i.+.1.........else:..#.t |
df00 | 68 69 73 20 6c 69 6e 65 20 69 73 20 61 20 63 69 74 79 2c 20 70 6f 73 69 74 69 6f 6e 2c 20 70 6f | his.line.is.a.city,.position,.po |
df20 | 70 75 6c 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 20 3d 20 31 0a 20 20 20 20 20 | pulation.............i.=.1...... |
df40 | 20 20 20 20 20 20 20 28 63 69 74 79 2c 20 63 6f 6f 72 64 70 6f 70 29 20 3d 20 6c 69 6e 65 2e 73 | .......(city,.coordpop).=.line.s |
df60 | 70 6c 69 74 28 22 5b 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 69 74 69 65 73 2e 69 6e 73 | plit("[").............cities.ins |
df80 | 65 72 74 28 30 2c 20 63 69 74 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6f 72 64 2c | ert(0,.city).............(coord, |
dfa0 | 20 70 6f 70 29 20 3d 20 63 6f 6f 72 64 70 6f 70 2e 73 70 6c 69 74 28 22 5d 22 29 0a 20 20 20 20 | .pop).=.coordpop.split("]")..... |
dfc0 | 20 20 20 20 20 20 20 20 28 79 2c 20 78 29 20 3d 20 63 6f 6f 72 64 2e 73 70 6c 69 74 28 22 2c 22 | ........(y,.x).=.coord.split("," |
dfe0 | 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 6e 6f 64 65 28 63 69 74 79 29 0a | )..............G.add_node(city). |
e000 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 73 73 69 67 6e 20 70 6f 73 69 74 69 6f 6e 20 2d 20 | ............#.assign.position.-. |
e020 | 43 6f 6e 76 65 72 74 20 73 74 72 69 6e 67 20 74 6f 20 6c 61 74 2f 6c 6f 6e 67 0a 20 20 20 20 20 | Convert.string.to.lat/long...... |
e040 | 20 20 20 20 20 20 20 47 2e 70 6f 73 69 74 69 6f 6e 5b 63 69 74 79 5d 20 3d 20 28 2d 66 6c 6f 61 | .......G.position[city].=.(-floa |
e060 | 74 28 78 29 20 2f 20 31 30 30 2c 20 66 6c 6f 61 74 28 79 29 20 2f 20 31 30 30 29 0a 20 20 20 20 | t(x)./.100,.float(y)./.100)..... |
e080 | 20 20 20 20 20 20 20 20 47 2e 70 6f 70 75 6c 61 74 69 6f 6e 5b 63 69 74 79 5d 20 3d 20 66 6c 6f | ........G.population[city].=.flo |
e0a0 | 61 74 28 70 6f 70 29 20 2f 20 31 30 30 30 0a 20 20 20 20 72 65 74 75 72 6e 20 47 0a 0a 0a 47 20 | at(pop)./.1000.....return.G...G. |
e0c0 | 3d 20 6d 69 6c 65 73 5f 67 72 61 70 68 28 29 0a 0a 70 72 69 6e 74 28 22 4c 6f 61 64 65 64 20 6d | =.miles_graph()..print("Loaded.m |
e0e0 | 69 6c 65 73 5f 64 61 74 2e 74 78 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 31 32 38 20 63 69 74 69 | iles_dat.txt.containing.128.citi |
e100 | 65 73 2e 22 29 0a 70 72 69 6e 74 28 47 29 0a 0a 23 20 6d 61 6b 65 20 6e 65 77 20 67 72 61 70 68 | es.").print(G)..#.make.new.graph |
e120 | 20 6f 66 20 63 69 74 65 73 2c 20 65 64 67 65 20 69 66 20 6c 65 73 73 20 74 68 65 6e 20 33 30 30 | .of.cites,.edge.if.less.then.300 |
e140 | 20 6d 69 6c 65 73 20 62 65 74 77 65 65 6e 20 74 68 65 6d 0a 48 20 3d 20 6e 78 2e 47 72 61 70 68 | .miles.between.them.H.=.nx.Graph |
e160 | 28 29 0a 66 6f 72 20 76 20 69 6e 20 47 3a 0a 20 20 20 20 48 2e 61 64 64 5f 6e 6f 64 65 28 76 29 | ().for.v.in.G:.....H.add_node(v) |
e180 | 0a 66 6f 72 20 75 2c 20 76 2c 20 64 20 69 6e 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 54 72 75 | .for.u,.v,.d.in.G.edges(data=Tru |
e1a0 | 65 29 3a 0a 20 20 20 20 69 66 20 64 5b 22 77 65 69 67 68 74 22 5d 20 3c 20 33 30 30 3a 0a 20 20 | e):.....if.d["weight"].<.300:... |
e1c0 | 20 20 20 20 20 20 48 2e 61 64 64 5f 65 64 67 65 28 75 2c 20 76 29 0a 0a 23 20 64 72 61 77 20 77 | ......H.add_edge(u,.v)..#.draw.w |
e1e0 | 69 74 68 20 6d 61 74 70 6c 6f 74 6c 69 62 2f 70 79 6c 61 62 0a 66 69 67 20 3d 20 70 6c 74 2e 66 | ith.matplotlib/pylab.fig.=.plt.f |
e200 | 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 38 2c 20 36 29 29 0a 0a 23 20 6e 6f 64 65 73 20 63 | igure(figsize=(8,.6))..#.nodes.c |
e220 | 6f 6c 6f 72 65 64 20 62 79 20 64 65 67 72 65 65 20 73 69 7a 65 64 20 62 79 20 70 6f 70 75 6c 61 | olored.by.degree.sized.by.popula |
e240 | 74 69 6f 6e 0a 6e 6f 64 65 5f 63 6f 6c 6f 72 20 3d 20 5b 66 6c 6f 61 74 28 48 2e 64 65 67 72 65 | tion.node_color.=.[float(H.degre |
e260 | 65 28 76 29 29 20 66 6f 72 20 76 20 69 6e 20 48 5d 0a 0a 23 20 55 73 65 20 63 61 72 74 6f 70 79 | e(v)).for.v.in.H]..#.Use.cartopy |
e280 | 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 62 61 63 6b 64 72 6f 70 20 66 6f 72 20 74 68 65 20 76 | .to.provide.a.backdrop.for.the.v |
e2a0 | 69 73 75 61 6c 69 7a 61 74 69 6f 6e 0a 74 72 79 3a 0a 20 20 20 20 69 6d 70 6f 72 74 20 63 61 72 | isualization.try:.....import.car |
e2c0 | 74 6f 70 79 2e 63 72 73 20 61 73 20 63 63 72 73 0a 20 20 20 20 69 6d 70 6f 72 74 20 63 61 72 74 | topy.crs.as.ccrs.....import.cart |
e2e0 | 6f 70 79 2e 69 6f 2e 73 68 61 70 65 72 65 61 64 65 72 20 61 73 20 73 68 70 72 65 61 64 65 72 0a | opy.io.shapereader.as.shpreader. |
e300 | 0a 20 20 20 20 61 78 20 3d 20 66 69 67 2e 61 64 64 5f 61 78 65 73 28 5b 30 2c 20 30 2c 20 31 2c | .....ax.=.fig.add_axes([0,.0,.1, |
e320 | 20 31 5d 2c 20 70 72 6f 6a 65 63 74 69 6f 6e 3d 63 63 72 73 2e 4c 61 6d 62 65 72 74 43 6f 6e 66 | .1],.projection=ccrs.LambertConf |
e340 | 6f 72 6d 61 6c 28 29 2c 20 66 72 61 6d 65 6f 6e 3d 46 61 6c 73 65 29 0a 20 20 20 20 61 78 2e 73 | ormal(),.frameon=False).....ax.s |
e360 | 65 74 5f 65 78 74 65 6e 74 28 5b 2d 31 32 35 2c 20 2d 36 36 2e 35 2c 20 32 30 2c 20 35 30 5d 2c | et_extent([-125,.-66.5,.20,.50], |
e380 | 20 63 63 72 73 2e 47 65 6f 64 65 74 69 63 28 29 29 0a 20 20 20 20 23 20 41 64 64 20 6d 61 70 20 | .ccrs.Geodetic()).....#.Add.map. |
e3a0 | 6f 66 20 63 6f 75 6e 74 72 69 65 73 20 26 20 55 53 20 73 74 61 74 65 73 20 61 73 20 61 20 62 61 | of.countries.&.US.states.as.a.ba |
e3c0 | 63 6b 64 72 6f 70 0a 20 20 20 20 66 6f 72 20 73 68 61 70 65 6e 61 6d 65 20 69 6e 20 28 22 61 64 | ckdrop.....for.shapename.in.("ad |
e3e0 | 6d 69 6e 5f 31 5f 73 74 61 74 65 73 5f 70 72 6f 76 69 6e 63 65 73 5f 6c 61 6b 65 73 5f 73 68 70 | min_1_states_provinces_lakes_shp |
e400 | 22 2c 20 22 61 64 6d 69 6e 5f 30 5f 63 6f 75 6e 74 72 69 65 73 22 29 3a 0a 20 20 20 20 20 20 20 | ",."admin_0_countries"):........ |
e420 | 20 73 68 70 20 3d 20 73 68 70 72 65 61 64 65 72 2e 6e 61 74 75 72 61 6c 5f 65 61 72 74 68 28 0a | .shp.=.shpreader.natural_earth(. |
e440 | 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 6f 6c 75 74 69 6f 6e 3d 22 31 31 30 6d 22 2c 20 63 | ............resolution="110m",.c |
e460 | 61 74 65 67 6f 72 79 3d 22 63 75 6c 74 75 72 61 6c 22 2c 20 6e 61 6d 65 3d 73 68 61 70 65 6e 61 | ategory="cultural",.name=shapena |
e480 | 6d 65 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 61 78 2e 61 64 64 5f 67 65 6f 6d | me.........).........ax.add_geom |
e4a0 | 65 74 72 69 65 73 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 68 70 72 65 61 64 65 72 2e 52 65 | etries(.............shpreader.Re |
e4c0 | 61 64 65 72 28 73 68 70 29 2e 67 65 6f 6d 65 74 72 69 65 73 28 29 2c 0a 20 20 20 20 20 20 20 20 | ader(shp).geometries(),......... |
e4e0 | 20 20 20 20 63 63 72 73 2e 50 6c 61 74 65 43 61 72 72 65 65 28 29 2c 0a 20 20 20 20 20 20 20 20 | ....ccrs.PlateCarree(),......... |
e500 | 20 20 20 20 66 61 63 65 63 6f 6c 6f 72 3d 22 6e 6f 6e 65 22 2c 0a 20 20 20 20 20 20 20 20 20 20 | ....facecolor="none",........... |
e520 | 20 20 65 64 67 65 63 6f 6c 6f 72 3d 22 6b 22 2c 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 23 | ..edgecolor="k",.........).....# |
e540 | 20 4e 4f 54 45 3a 20 57 68 65 6e 20 75 73 69 6e 67 20 63 61 72 74 6f 70 79 2c 20 75 73 65 20 6d | .NOTE:.When.using.cartopy,.use.m |
e560 | 61 74 70 6c 6f 74 6c 69 62 20 64 69 72 65 63 74 6c 79 20 72 61 74 68 65 72 20 74 68 61 6e 20 6e | atplotlib.directly.rather.than.n |
e580 | 78 2e 64 72 61 77 0a 20 20 20 20 23 20 74 6f 20 74 61 6b 65 20 61 64 76 61 6e 74 61 67 65 20 6f | x.draw.....#.to.take.advantage.o |
e5a0 | 66 20 74 68 65 20 63 61 72 74 6f 70 79 20 74 72 61 6e 73 66 6f 72 6d 73 0a 20 20 20 20 61 78 2e | f.the.cartopy.transforms.....ax. |
e5c0 | 73 63 61 74 74 65 72 28 0a 20 20 20 20 20 20 20 20 2a 6e 70 2e 61 72 72 61 79 28 6c 69 73 74 28 | scatter(.........*np.array(list( |
e5e0 | 47 2e 70 6f 73 69 74 69 6f 6e 2e 76 61 6c 75 65 73 28 29 29 29 2e 54 2c 0a 20 20 20 20 20 20 20 | G.position.values())).T,........ |
e600 | 20 73 3d 5b 47 2e 70 6f 70 75 6c 61 74 69 6f 6e 5b 76 5d 20 66 6f 72 20 76 20 69 6e 20 48 5d 2c | .s=[G.population[v].for.v.in.H], |
e620 | 0a 20 20 20 20 20 20 20 20 63 3d 6e 6f 64 65 5f 63 6f 6c 6f 72 2c 0a 20 20 20 20 20 20 20 20 74 | .........c=node_color,.........t |
e640 | 72 61 6e 73 66 6f 72 6d 3d 63 63 72 73 2e 50 6c 61 74 65 43 61 72 72 65 65 28 29 2c 0a 20 20 20 | ransform=ccrs.PlateCarree(),.... |
e660 | 20 20 20 20 20 7a 6f 72 64 65 72 3d 31 30 30 20 20 23 20 45 6e 73 75 72 65 20 6e 6f 64 65 73 20 | .....zorder=100..#.Ensure.nodes. |
e680 | 6c 69 65 20 6f 6e 20 74 6f 70 20 6f 66 20 65 64 67 65 73 2f 73 74 61 74 65 20 6c 69 6e 65 73 0a | lie.on.top.of.edges/state.lines. |
e6a0 | 20 20 20 20 29 0a 20 20 20 20 23 20 50 6c 6f 74 20 65 64 67 65 73 20 62 65 74 77 65 65 6e 20 74 | ....).....#.Plot.edges.between.t |
e6c0 | 68 65 20 63 69 74 69 65 73 0a 20 20 20 20 66 6f 72 20 65 64 67 65 20 69 6e 20 48 2e 65 64 67 65 | he.cities.....for.edge.in.H.edge |
e6e0 | 73 28 29 3a 0a 20 20 20 20 20 20 20 20 65 64 67 65 5f 63 6f 6f 72 64 73 20 3d 20 6e 70 2e 61 72 | s():.........edge_coords.=.np.ar |
e700 | 72 61 79 28 5b 47 2e 70 6f 73 69 74 69 6f 6e 5b 76 5d 20 66 6f 72 20 76 20 69 6e 20 65 64 67 65 | ray([G.position[v].for.v.in.edge |
e720 | 5d 29 0a 20 20 20 20 20 20 20 20 61 78 2e 70 6c 6f 74 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ]).........ax.plot(............. |
e740 | 65 64 67 65 5f 63 6f 6f 72 64 73 5b 3a 2c 20 30 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 | edge_coords[:,.0],.............e |
e760 | 64 67 65 5f 63 6f 6f 72 64 73 5b 3a 2c 20 31 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 | dge_coords[:,.1],.............tr |
e780 | 61 6e 73 66 6f 72 6d 3d 63 63 72 73 2e 50 6c 61 74 65 43 61 72 72 65 65 28 29 2c 0a 20 20 20 20 | ansform=ccrs.PlateCarree(),..... |
e7a0 | 20 20 20 20 20 20 20 20 6c 69 6e 65 77 69 64 74 68 3d 30 2e 37 35 2c 0a 20 20 20 20 20 20 20 20 | ........linewidth=0.75,......... |
e7c0 | 20 20 20 20 63 6f 6c 6f 72 3d 22 6b 22 2c 0a 20 20 20 20 20 20 20 20 29 0a 0a 65 78 63 65 70 74 | ....color="k",.........)..except |
e7e0 | 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 23 20 49 66 20 63 61 72 74 6f 70 79 20 69 | .ImportError:.....#.If.cartopy.i |
e800 | 73 20 75 6e 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65 20 62 61 63 6b 64 72 6f 70 20 66 6f 72 20 | s.unavailable,.the.backdrop.for. |
e820 | 74 68 65 20 70 6c 6f 74 20 77 69 6c 6c 20 62 65 20 62 6c 61 6e 6b 3b 0a 20 20 20 20 23 20 74 68 | the.plot.will.be.blank;.....#.th |
e840 | 6f 75 67 68 20 79 6f 75 20 73 68 6f 75 6c 64 20 73 74 69 6c 6c 20 62 65 20 61 62 6c 65 20 74 6f | ough.you.should.still.be.able.to |
e860 | 20 64 69 73 63 65 72 6e 20 74 68 65 20 67 65 6e 65 72 61 6c 20 73 68 61 70 65 20 6f 66 20 74 68 | .discern.the.general.shape.of.th |
e880 | 65 20 55 53 0a 20 20 20 20 23 20 66 72 6f 6d 20 67 72 61 70 68 20 6e 6f 64 65 73 20 61 6e 64 20 | e.US.....#.from.graph.nodes.and. |
e8a0 | 65 64 67 65 73 21 0a 20 20 20 20 6e 78 2e 64 72 61 77 28 0a 20 20 20 20 20 20 20 20 48 2c 0a 20 | edges!.....nx.draw(.........H,.. |
e8c0 | 20 20 20 20 20 20 20 47 2e 70 6f 73 69 74 69 6f 6e 2c 0a 20 20 20 20 20 20 20 20 6e 6f 64 65 5f | .......G.position,.........node_ |
e8e0 | 73 69 7a 65 3d 5b 47 2e 70 6f 70 75 6c 61 74 69 6f 6e 5b 76 5d 20 66 6f 72 20 76 20 69 6e 20 48 | size=[G.population[v].for.v.in.H |
e900 | 5d 2c 0a 20 20 20 20 20 20 20 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 6e 6f 64 65 5f 63 6f 6c 6f 72 | ],.........node_color=node_color |
e920 | 2c 0a 20 20 20 20 20 20 20 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 2c 0a 20 20 20 | ,.........with_labels=False,.... |
e940 | 20 29 0a 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 fb 7a 57 56 c9 61 01 | .)..plt.show().PK.........zWV.a. |
e960 | 95 e3 11 00 00 e3 11 00 00 1d 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 63 68 65 73 73 5f | .............drawing/plot_chess_ |
e980 | 6d 61 73 74 65 72 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 43 68 65 73 | masters.py""".=============.Ches |
e9a0 | 73 20 4d 61 73 74 65 72 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 41 6e 20 65 78 61 6d | s.Masters.=============..An.exam |
e9c0 | 70 6c 65 20 6f 66 20 74 68 65 20 4d 75 6c 74 69 44 69 47 72 61 70 68 20 63 6c 61 73 73 2e 0a 0a | ple.of.the.MultiDiGraph.class... |
e9e0 | 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 60 63 68 65 73 73 5f 70 67 6e 5f 67 72 61 70 68 60 20 72 | The.function.`chess_pgn_graph`.r |
ea00 | 65 61 64 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20 63 68 65 73 73 20 6d 61 74 63 68 | eads.a.collection.of.chess.match |
ea20 | 65 73 20 73 74 6f 72 65 64 20 69 6e 0a 74 68 65 20 73 70 65 63 69 66 69 65 64 20 50 47 4e 20 66 | es.stored.in.the.specified.PGN.f |
ea40 | 69 6c 65 20 28 50 47 4e 20 3d 22 50 6f 72 74 61 62 6c 65 20 47 61 6d 65 20 4e 6f 74 61 74 69 6f | ile.(PGN.="Portable.Game.Notatio |
ea60 | 6e 22 29 2e 20 20 48 65 72 65 20 74 68 65 20 28 63 6f 6d 70 72 65 73 73 65 64 29 0a 64 65 66 61 | n")...Here.the.(compressed).defa |
ea80 | 75 6c 74 20 66 69 6c 65 3a 3a 0a 0a 20 20 20 20 63 68 65 73 73 5f 6d 61 73 74 65 72 73 5f 57 43 | ult.file::......chess_masters_WC |
eaa0 | 43 2e 70 67 6e 2e 62 7a 32 0a 0a 63 6f 6e 74 61 69 6e 73 20 61 6c 6c 20 36 38 35 20 57 6f 72 6c | C.pgn.bz2..contains.all.685.Worl |
eac0 | 64 20 43 68 65 73 73 20 43 68 61 6d 70 69 6f 6e 73 68 69 70 20 6d 61 74 63 68 65 73 20 66 72 6f | d.Chess.Championship.matches.fro |
eae0 | 6d 20 31 38 38 36 2d 2d 31 39 38 35 2e 0a 28 64 61 74 61 20 66 72 6f 6d 20 68 74 74 70 3a 2f 2f | m.1886--1985..(data.from.http:// |
eb00 | 63 68 65 73 73 70 72 6f 62 6c 65 6d 2e 6d 79 2d 66 72 65 65 2d 67 61 6d 65 73 2e 63 6f 6d 2f 63 | chessproblem.my-free-games.com/c |
eb20 | 68 65 73 73 2f 67 61 6d 65 73 2f 44 6f 77 6e 6c 6f 61 64 2d 50 47 4e 2e 70 68 70 29 0a 0a 54 68 | hess/games/Download-PGN.php)..Th |
eb40 | 65 20 60 63 68 65 73 73 5f 70 67 6e 5f 67 72 61 70 68 28 29 60 20 66 75 6e 63 74 69 6f 6e 20 72 | e.`chess_pgn_graph()`.function.r |
eb60 | 65 74 75 72 6e 73 20 61 20 60 4d 75 6c 74 69 44 69 47 72 61 70 68 60 20 77 69 74 68 20 6d 75 6c | eturns.a.`MultiDiGraph`.with.mul |
eb80 | 74 69 70 6c 65 20 65 64 67 65 73 2e 0a 45 61 63 68 20 6e 6f 64 65 20 69 73 20 74 68 65 20 6c 61 | tiple.edges..Each.node.is.the.la |
eba0 | 73 74 20 6e 61 6d 65 20 6f 66 20 61 20 63 68 65 73 73 20 6d 61 73 74 65 72 2e 20 45 61 63 68 20 | st.name.of.a.chess.master..Each. |
ebc0 | 65 64 67 65 20 69 73 20 64 69 72 65 63 74 65 64 20 66 72 6f 6d 20 77 68 69 74 65 0a 74 6f 20 62 | edge.is.directed.from.white.to.b |
ebe0 | 6c 61 63 6b 20 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 73 65 6c 65 63 74 65 64 20 67 61 6d 65 20 | lack.and.contains.selected.game. |
ec00 | 69 6e 66 6f 2e 0a 0a 54 68 65 20 6b 65 79 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 60 63 68 65 | info...The.key.statement.in.`che |
ec20 | 73 73 5f 70 67 6e 5f 67 72 61 70 68 60 20 62 65 6c 6f 77 20 69 73 3a 3a 0a 0a 20 20 20 20 47 2e | ss_pgn_graph`.below.is::......G. |
ec40 | 61 64 64 5f 65 64 67 65 28 77 68 69 74 65 2c 20 62 6c 61 63 6b 2c 20 67 61 6d 65 5f 69 6e 66 6f | add_edge(white,.black,.game_info |
ec60 | 29 0a 0a 77 68 65 72 65 20 60 67 61 6d 65 5f 69 6e 66 6f 60 20 69 73 20 61 20 60 64 69 63 74 60 | )..where.`game_info`.is.a.`dict` |
ec80 | 20 64 65 73 63 72 69 62 69 6e 67 20 65 61 63 68 20 67 61 6d 65 2e 0a 22 22 22 0a 0a 69 6d 70 6f | .describing.each.game.."""..impo |
eca0 | 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f | rt.matplotlib.pyplot.as.plt.impo |
ecc0 | 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 23 20 74 61 67 20 6e 61 6d 65 73 20 73 | rt.networkx.as.nx..#.tag.names.s |
ece0 | 70 65 63 69 66 79 69 6e 67 20 77 68 61 74 20 67 61 6d 65 20 69 6e 66 6f 20 73 68 6f 75 6c 64 20 | pecifying.what.game.info.should. |
ed00 | 62 65 0a 23 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 64 69 63 74 20 6f 6e 20 65 61 63 68 20 | be.#.stored.in.the.dict.on.each. |
ed20 | 64 69 67 72 61 70 68 20 65 64 67 65 0a 67 61 6d 65 5f 64 65 74 61 69 6c 73 20 3d 20 5b 22 45 76 | digraph.edge.game_details.=.["Ev |
ed40 | 65 6e 74 22 2c 20 22 44 61 74 65 22 2c 20 22 52 65 73 75 6c 74 22 2c 20 22 45 43 4f 22 2c 20 22 | ent",."Date",."Result",."ECO",." |
ed60 | 53 69 74 65 22 5d 0a 0a 0a 64 65 66 20 63 68 65 73 73 5f 70 67 6e 5f 67 72 61 70 68 28 70 67 6e | Site"]...def.chess_pgn_graph(pgn |
ed80 | 5f 66 69 6c 65 3d 22 63 68 65 73 73 5f 6d 61 73 74 65 72 73 5f 57 43 43 2e 70 67 6e 2e 62 7a 32 | _file="chess_masters_WCC.pgn.bz2 |
eda0 | 22 29 3a 0a 20 20 20 20 22 22 22 52 65 61 64 20 63 68 65 73 73 20 67 61 6d 65 73 20 69 6e 20 70 | "):....."""Read.chess.games.in.p |
edc0 | 67 6e 20 66 6f 72 6d 61 74 20 69 6e 20 70 67 6e 5f 66 69 6c 65 2e 0a 0a 20 20 20 20 46 69 6c 65 | gn.format.in.pgn_file.......File |
ede0 | 6e 61 6d 65 73 20 65 6e 64 69 6e 67 20 69 6e 20 2e 62 7a 32 20 77 69 6c 6c 20 62 65 20 75 6e 63 | names.ending.in..bz2.will.be.unc |
ee00 | 6f 6d 70 72 65 73 73 65 64 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 4d 75 6c 74 69 | ompressed.......Return.the.Multi |
ee20 | 44 69 47 72 61 70 68 20 6f 66 20 70 6c 61 79 65 72 73 20 63 6f 6e 6e 65 63 74 65 64 20 62 79 20 | DiGraph.of.players.connected.by. |
ee40 | 61 20 63 68 65 73 73 20 67 61 6d 65 2e 0a 20 20 20 20 45 64 67 65 73 20 63 6f 6e 74 61 69 6e 20 | a.chess.game......Edges.contain. |
ee60 | 67 61 6d 65 20 64 61 74 61 20 69 6e 20 61 20 64 69 63 74 2e 0a 0a 20 20 20 20 22 22 22 0a 20 20 | game.data.in.a.dict......."""... |
ee80 | 20 20 69 6d 70 6f 72 74 20 62 7a 32 0a 0a 20 20 20 20 47 20 3d 20 6e 78 2e 4d 75 6c 74 69 44 69 | ..import.bz2......G.=.nx.MultiDi |
eea0 | 47 72 61 70 68 28 29 0a 20 20 20 20 67 61 6d 65 20 3d 20 7b 7d 0a 20 20 20 20 77 69 74 68 20 62 | Graph().....game.=.{}.....with.b |
eec0 | 7a 32 2e 42 5a 32 46 69 6c 65 28 70 67 6e 5f 66 69 6c 65 29 20 61 73 20 64 61 74 61 66 69 6c 65 | z2.BZ2File(pgn_file).as.datafile |
eee0 | 3a 0a 20 20 20 20 20 20 20 20 6c 69 6e 65 73 20 3d 20 5b 6c 69 6e 65 2e 64 65 63 6f 64 65 28 29 | :.........lines.=.[line.decode() |
ef00 | 2e 72 73 74 72 69 70 28 22 5c 72 5c 6e 22 29 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 64 61 74 61 | .rstrip("\r\n").for.line.in.data |
ef20 | 66 69 6c 65 5d 0a 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 6c 69 6e 65 73 3a 0a 20 20 20 | file].....for.line.in.lines:.... |
ef40 | 20 20 20 20 20 69 66 20 6c 69 6e 65 2e 73 74 61 72 74 73 77 69 74 68 28 22 5b 22 29 3a 0a 20 20 | .....if.line.startswith("["):... |
ef60 | 20 20 20 20 20 20 20 20 20 20 74 61 67 2c 20 76 61 6c 75 65 20 3d 20 6c 69 6e 65 5b 31 3a 2d 31 | ..........tag,.value.=.line[1:-1 |
ef80 | 5d 2e 73 70 6c 69 74 28 22 20 22 2c 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 61 6d 65 | ].split(".",.1).............game |
efa0 | 5b 73 74 72 28 74 61 67 29 5d 20 3d 20 76 61 6c 75 65 2e 73 74 72 69 70 28 27 22 27 29 0a 20 20 | [str(tag)].=.value.strip('"')... |
efc0 | 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 65 6d 70 74 79 20 | ......else:.............#.empty. |
efe0 | 6c 69 6e 65 20 61 66 74 65 72 20 74 61 67 20 73 65 74 20 69 6e 64 69 63 61 74 65 73 0a 20 20 20 | line.after.tag.set.indicates.... |
f000 | 20 20 20 20 20 20 20 20 20 23 20 77 65 20 66 69 6e 69 73 68 65 64 20 72 65 61 64 69 6e 67 20 67 | .........#.we.finished.reading.g |
f020 | 61 6d 65 20 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 67 61 6d 65 3a 0a 20 20 | ame.info.............if.game:... |
f040 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 74 65 20 3d 20 67 61 6d 65 2e 70 6f 70 28 22 | ..............white.=.game.pop(" |
f060 | 57 68 69 74 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 61 63 6b 20 3d 20 | White").................black.=. |
f080 | 67 61 6d 65 2e 70 6f 70 28 22 42 6c 61 63 6b 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | game.pop("Black")............... |
f0a0 | 20 20 47 2e 61 64 64 5f 65 64 67 65 28 77 68 69 74 65 2c 20 62 6c 61 63 6b 2c 20 2a 2a 67 61 6d | ..G.add_edge(white,.black,.**gam |
f0c0 | 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 61 6d 65 20 3d 20 7b 7d 0a 20 20 20 | e).................game.=.{}.... |
f0e0 | 20 72 65 74 75 72 6e 20 47 0a 0a 0a 47 20 3d 20 63 68 65 73 73 5f 70 67 6e 5f 67 72 61 70 68 28 | .return.G...G.=.chess_pgn_graph( |
f100 | 29 0a 0a 70 72 69 6e 74 28 0a 20 20 20 20 66 22 4c 6f 61 64 65 64 20 7b 47 2e 6e 75 6d 62 65 72 | )..print(.....f"Loaded.{G.number |
f120 | 5f 6f 66 5f 65 64 67 65 73 28 29 7d 20 63 68 65 73 73 20 67 61 6d 65 73 20 62 65 74 77 65 65 6e | _of_edges()}.chess.games.between |
f140 | 20 7b 47 2e 6e 75 6d 62 65 72 5f 6f 66 5f 6e 6f 64 65 73 28 29 7d 20 70 6c 61 79 65 72 73 5c 6e | .{G.number_of_nodes()}.players\n |
f160 | 22 0a 29 0a 0a 23 20 69 64 65 6e 74 69 66 79 20 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f 6e | ".)..#.identify.connected.compon |
f180 | 65 6e 74 73 20 6f 66 20 74 68 65 20 75 6e 64 69 72 65 63 74 65 64 20 76 65 72 73 69 6f 6e 0a 48 | ents.of.the.undirected.version.H |
f1a0 | 20 3d 20 47 2e 74 6f 5f 75 6e 64 69 72 65 63 74 65 64 28 29 0a 47 63 63 20 3d 20 5b 48 2e 73 75 | .=.G.to_undirected().Gcc.=.[H.su |
f1c0 | 62 67 72 61 70 68 28 63 29 20 66 6f 72 20 63 20 69 6e 20 6e 78 2e 63 6f 6e 6e 65 63 74 65 64 5f | bgraph(c).for.c.in.nx.connected_ |
f1e0 | 63 6f 6d 70 6f 6e 65 6e 74 73 28 48 29 5d 0a 69 66 20 6c 65 6e 28 47 63 63 29 20 3e 20 31 3a 0a | components(H)].if.len(Gcc).>.1:. |
f200 | 20 20 20 20 70 72 69 6e 74 28 66 22 4e 6f 74 65 20 74 68 65 20 64 69 73 63 6f 6e 6e 65 63 74 65 | ....print(f"Note.the.disconnecte |
f220 | 64 20 63 6f 6d 70 6f 6e 65 6e 74 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 3a 5c 6e 7b 47 63 63 | d.component.consisting.of:\n{Gcc |
f240 | 5b 31 5d 2e 6e 6f 64 65 73 28 29 7d 22 29 0a 0a 23 20 66 69 6e 64 20 61 6c 6c 20 67 61 6d 65 73 | [1].nodes()}")..#.find.all.games |
f260 | 20 77 69 74 68 20 42 39 37 20 6f 70 65 6e 69 6e 67 20 28 61 73 20 64 65 73 63 72 69 62 65 64 20 | .with.B97.opening.(as.described. |
f280 | 69 6e 20 45 43 4f 29 0a 6f 70 65 6e 69 6e 67 73 20 3d 20 7b 67 61 6d 65 5f 69 6e 66 6f 5b 22 45 | in.ECO).openings.=.{game_info["E |
f2a0 | 43 4f 22 5d 20 66 6f 72 20 28 77 68 69 74 65 2c 20 62 6c 61 63 6b 2c 20 67 61 6d 65 5f 69 6e 66 | CO"].for.(white,.black,.game_inf |
f2c0 | 6f 29 20 69 6e 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 54 72 75 65 29 7d 0a 70 72 69 6e 74 28 | o).in.G.edges(data=True)}.print( |
f2e0 | 66 22 5c 6e 46 72 6f 6d 20 61 20 74 6f 74 61 6c 20 6f 66 20 7b 6c 65 6e 28 6f 70 65 6e 69 6e 67 | f"\nFrom.a.total.of.{len(opening |
f300 | 73 29 7d 20 64 69 66 66 65 72 65 6e 74 20 6f 70 65 6e 69 6e 67 73 2c 22 29 0a 70 72 69 6e 74 28 | s)}.different.openings,").print( |
f320 | 22 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 67 61 6d 65 73 20 75 73 65 64 20 74 68 65 20 53 69 | "the.following.games.used.the.Si |
f340 | 63 69 6c 69 61 6e 20 6f 70 65 6e 69 6e 67 22 29 0a 70 72 69 6e 74 28 27 77 69 74 68 20 74 68 65 | cilian.opening").print('with.the |
f360 | 20 4e 61 6a 64 6f 72 66 66 20 37 2e 2e 2e 51 62 36 20 22 50 6f 69 73 6f 6e 65 64 20 50 61 77 6e | .Najdorff.7...Qb6."Poisoned.Pawn |
f380 | 22 20 76 61 72 69 61 74 69 6f 6e 2e 5c 6e 27 29 0a 0a 66 6f 72 20 77 68 69 74 65 2c 20 62 6c 61 | ".variation.\n')..for.white,.bla |
f3a0 | 63 6b 2c 20 67 61 6d 65 5f 69 6e 66 6f 20 69 6e 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 54 72 | ck,.game_info.in.G.edges(data=Tr |
f3c0 | 75 65 29 3a 0a 20 20 20 20 69 66 20 67 61 6d 65 5f 69 6e 66 6f 5b 22 45 43 4f 22 5d 20 3d 3d 20 | ue):.....if.game_info["ECO"].==. |
f3e0 | 22 42 39 37 22 3a 0a 20 20 20 20 20 20 20 20 73 75 6d 6d 61 72 79 20 3d 20 66 22 7b 77 68 69 74 | "B97":.........summary.=.f"{whit |
f400 | 65 7d 20 76 73 20 7b 62 6c 61 63 6b 7d 5c 6e 22 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 20 | e}.vs.{black}\n".........for.k,. |
f420 | 76 20 69 6e 20 67 61 6d 65 5f 69 6e 66 6f 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 | v.in.game_info.items():......... |
f440 | 20 20 20 20 73 75 6d 6d 61 72 79 20 2b 3d 20 66 22 20 20 20 7b 6b 7d 3a 20 7b 76 7d 5c 6e 22 0a | ....summary.+=.f"...{k}:.{v}\n". |
f460 | 20 20 20 20 20 20 20 20 73 75 6d 6d 61 72 79 20 2b 3d 20 22 5c 6e 22 0a 20 20 20 20 20 20 20 20 | ........summary.+=."\n"......... |
f480 | 70 72 69 6e 74 28 73 75 6d 6d 61 72 79 29 0a 0a 23 20 6d 61 6b 65 20 6e 65 77 20 75 6e 64 69 72 | print(summary)..#.make.new.undir |
f4a0 | 65 63 74 65 64 20 67 72 61 70 68 20 48 20 77 69 74 68 6f 75 74 20 6d 75 6c 74 69 2d 65 64 67 65 | ected.graph.H.without.multi-edge |
f4c0 | 73 0a 48 20 3d 20 6e 78 2e 47 72 61 70 68 28 47 29 0a 0a 23 20 65 64 67 65 20 77 69 64 74 68 20 | s.H.=.nx.Graph(G)..#.edge.width. |
f4e0 | 69 73 20 70 72 6f 70 6f 72 74 69 6f 6e 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 67 61 6d 65 73 20 | is.proportional.number.of.games. |
f500 | 70 6c 61 79 65 64 0a 65 64 67 65 77 69 64 74 68 20 3d 20 5b 6c 65 6e 28 47 2e 67 65 74 5f 65 64 | played.edgewidth.=.[len(G.get_ed |
f520 | 67 65 5f 64 61 74 61 28 75 2c 20 76 29 29 20 66 6f 72 20 75 2c 20 76 20 69 6e 20 48 2e 65 64 67 | ge_data(u,.v)).for.u,.v.in.H.edg |
f540 | 65 73 28 29 5d 0a 0a 23 20 6e 6f 64 65 20 73 69 7a 65 20 69 73 20 70 72 6f 70 6f 72 74 69 6f 6e | es()]..#.node.size.is.proportion |
f560 | 61 6c 20 74 6f 20 6e 75 6d 62 65 72 20 6f 66 20 67 61 6d 65 73 20 77 6f 6e 0a 77 69 6e 73 20 3d | al.to.number.of.games.won.wins.= |
f580 | 20 64 69 63 74 2e 66 72 6f 6d 6b 65 79 73 28 47 2e 6e 6f 64 65 73 28 29 2c 20 30 2e 30 29 0a 66 | .dict.fromkeys(G.nodes(),.0.0).f |
f5a0 | 6f 72 20 75 2c 20 76 2c 20 64 20 69 6e 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 54 72 75 65 29 | or.u,.v,.d.in.G.edges(data=True) |
f5c0 | 3a 0a 20 20 20 20 72 20 3d 20 64 5b 22 52 65 73 75 6c 74 22 5d 2e 73 70 6c 69 74 28 22 2d 22 29 | :.....r.=.d["Result"].split("-") |
f5e0 | 0a 20 20 20 20 69 66 20 72 5b 30 5d 20 3d 3d 20 22 31 22 3a 0a 20 20 20 20 20 20 20 20 77 69 6e | .....if.r[0].==."1":.........win |
f600 | 73 5b 75 5d 20 2b 3d 20 31 2e 30 0a 20 20 20 20 65 6c 69 66 20 72 5b 30 5d 20 3d 3d 20 22 31 2f | s[u].+=.1.0.....elif.r[0].==."1/ |
f620 | 32 22 3a 0a 20 20 20 20 20 20 20 20 77 69 6e 73 5b 75 5d 20 2b 3d 20 30 2e 35 0a 20 20 20 20 20 | 2":.........wins[u].+=.0.5...... |
f640 | 20 20 20 77 69 6e 73 5b 76 5d 20 2b 3d 20 30 2e 35 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 | ...wins[v].+=.0.5.....else:..... |
f660 | 20 20 20 20 77 69 6e 73 5b 76 5d 20 2b 3d 20 31 2e 30 0a 6e 6f 64 65 73 69 7a 65 20 3d 20 5b 77 | ....wins[v].+=.1.0.nodesize.=.[w |
f680 | 69 6e 73 5b 76 5d 20 2a 20 35 30 20 66 6f 72 20 76 20 69 6e 20 48 5d 0a 0a 23 20 47 65 6e 65 72 | ins[v].*.50.for.v.in.H]..#.Gener |
f6a0 | 61 74 65 20 6c 61 79 6f 75 74 20 66 6f 72 20 76 69 73 75 61 6c 69 7a 61 74 69 6f 6e 0a 70 6f 73 | ate.layout.for.visualization.pos |
f6c0 | 20 3d 20 6e 78 2e 6b 61 6d 61 64 61 5f 6b 61 77 61 69 5f 6c 61 79 6f 75 74 28 48 29 0a 23 20 4d | .=.nx.kamada_kawai_layout(H).#.M |
f6e0 | 61 6e 75 61 6c 20 74 77 65 61 6b 69 6e 67 20 74 6f 20 6c 69 6d 69 74 20 6e 6f 64 65 20 6c 61 62 | anual.tweaking.to.limit.node.lab |
f700 | 65 6c 20 6f 76 65 72 6c 61 70 20 69 6e 20 74 68 65 20 76 69 73 75 61 6c 69 7a 61 74 69 6f 6e 0a | el.overlap.in.the.visualization. |
f720 | 70 6f 73 5b 22 52 65 73 68 65 76 73 6b 79 2c 20 53 61 6d 75 65 6c 20 48 22 5d 20 2b 3d 20 28 30 | pos["Reshevsky,.Samuel.H"].+=.(0 |
f740 | 2e 30 35 2c 20 2d 30 2e 31 30 29 0a 70 6f 73 5b 22 42 6f 74 76 69 6e 6e 69 6b 2c 20 4d 69 6b 68 | .05,.-0.10).pos["Botvinnik,.Mikh |
f760 | 61 69 6c 20 4d 22 5d 20 2b 3d 20 28 30 2e 30 33 2c 20 2d 30 2e 30 36 29 0a 70 6f 73 5b 22 53 6d | ail.M"].+=.(0.03,.-0.06).pos["Sm |
f780 | 79 73 6c 6f 76 2c 20 56 61 73 73 69 6c 79 20 56 22 5d 20 2b 3d 20 28 30 2e 30 35 2c 20 2d 30 2e | yslov,.Vassily.V"].+=.(0.05,.-0. |
f7a0 | 30 33 29 0a 0a 66 69 67 2c 20 61 78 20 3d 20 70 6c 74 2e 73 75 62 70 6c 6f 74 73 28 66 69 67 73 | 03)..fig,.ax.=.plt.subplots(figs |
f7c0 | 69 7a 65 3d 28 31 32 2c 20 31 32 29 29 0a 23 20 56 69 73 75 61 6c 69 7a 65 20 67 72 61 70 68 20 | ize=(12,.12)).#.Visualize.graph. |
f7e0 | 63 6f 6d 70 6f 6e 65 6e 74 73 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 | components.nx.draw_networkx_edge |
f800 | 73 28 48 2c 20 70 6f 73 2c 20 61 6c 70 68 61 3d 30 2e 33 2c 20 77 69 64 74 68 3d 65 64 67 65 77 | s(H,.pos,.alpha=0.3,.width=edgew |
f820 | 69 64 74 68 2c 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 22 6d 22 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 | idth,.edge_color="m").nx.draw_ne |
f840 | 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 48 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 6e | tworkx_nodes(H,.pos,.node_size=n |
f860 | 6f 64 65 73 69 7a 65 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 23 32 31 30 30 37 30 22 2c 20 61 | odesize,.node_color="#210070",.a |
f880 | 6c 70 68 61 3d 30 2e 39 29 0a 6c 61 62 65 6c 5f 6f 70 74 69 6f 6e 73 20 3d 20 7b 22 65 63 22 3a | lpha=0.9).label_options.=.{"ec": |
f8a0 | 20 22 6b 22 2c 20 22 66 63 22 3a 20 22 77 68 69 74 65 22 2c 20 22 61 6c 70 68 61 22 3a 20 30 2e | ."k",."fc":."white",."alpha":.0. |
f8c0 | 37 7d 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6c 61 62 65 6c 73 28 48 2c 20 70 6f | 7}.nx.draw_networkx_labels(H,.po |
f8e0 | 73 2c 20 66 6f 6e 74 5f 73 69 7a 65 3d 31 34 2c 20 62 62 6f 78 3d 6c 61 62 65 6c 5f 6f 70 74 69 | s,.font_size=14,.bbox=label_opti |
f900 | 6f 6e 73 29 0a 0a 23 20 54 69 74 6c 65 2f 6c 65 67 65 6e 64 0a 66 6f 6e 74 20 3d 20 7b 22 66 6f | ons)..#.Title/legend.font.=.{"fo |
f920 | 6e 74 6e 61 6d 65 22 3a 20 22 48 65 6c 76 65 74 69 63 61 22 2c 20 22 63 6f 6c 6f 72 22 3a 20 22 | ntname":."Helvetica",."color":." |
f940 | 6b 22 2c 20 22 66 6f 6e 74 77 65 69 67 68 74 22 3a 20 22 62 6f 6c 64 22 2c 20 22 66 6f 6e 74 73 | k",."fontweight":."bold",."fonts |
f960 | 69 7a 65 22 3a 20 31 34 7d 0a 61 78 2e 73 65 74 5f 74 69 74 6c 65 28 22 57 6f 72 6c 64 20 43 68 | ize":.14}.ax.set_title("World.Ch |
f980 | 65 73 73 20 43 68 61 6d 70 69 6f 6e 73 68 69 70 20 47 61 6d 65 73 3a 20 31 38 38 36 20 2d 20 31 | ess.Championship.Games:.1886.-.1 |
f9a0 | 39 38 35 22 2c 20 66 6f 6e 74 29 0a 23 20 43 68 61 6e 67 65 20 66 6f 6e 74 20 63 6f 6c 6f 72 20 | 985",.font).#.Change.font.color. |
f9c0 | 66 6f 72 20 6c 65 67 65 6e 64 0a 66 6f 6e 74 5b 22 63 6f 6c 6f 72 22 5d 20 3d 20 22 72 22 0a 0a | for.legend.font["color"].=."r".. |
f9e0 | 61 78 2e 74 65 78 74 28 0a 20 20 20 20 30 2e 38 30 2c 0a 20 20 20 20 30 2e 31 30 2c 0a 20 20 20 | ax.text(.....0.80,.....0.10,.... |
fa00 | 20 22 65 64 67 65 20 77 69 64 74 68 20 3d 20 23 20 67 61 6d 65 73 20 70 6c 61 79 65 64 22 2c 0a | ."edge.width.=.#.games.played",. |
fa20 | 20 20 20 20 68 6f 72 69 7a 6f 6e 74 61 6c 61 6c 69 67 6e 6d 65 6e 74 3d 22 63 65 6e 74 65 72 22 | ....horizontalalignment="center" |
fa40 | 2c 0a 20 20 20 20 74 72 61 6e 73 66 6f 72 6d 3d 61 78 2e 74 72 61 6e 73 41 78 65 73 2c 0a 20 20 | ,.....transform=ax.transAxes,... |
fa60 | 20 20 66 6f 6e 74 64 69 63 74 3d 66 6f 6e 74 2c 0a 29 0a 61 78 2e 74 65 78 74 28 0a 20 20 20 20 | ..fontdict=font,.).ax.text(..... |
fa80 | 30 2e 38 30 2c 0a 20 20 20 20 30 2e 30 36 2c 0a 20 20 20 20 22 6e 6f 64 65 20 73 69 7a 65 20 3d | 0.80,.....0.06,....."node.size.= |
faa0 | 20 23 20 67 61 6d 65 73 20 77 6f 6e 22 2c 0a 20 20 20 20 68 6f 72 69 7a 6f 6e 74 61 6c 61 6c 69 | .#.games.won",.....horizontalali |
fac0 | 67 6e 6d 65 6e 74 3d 22 63 65 6e 74 65 72 22 2c 0a 20 20 20 20 74 72 61 6e 73 66 6f 72 6d 3d 61 | gnment="center",.....transform=a |
fae0 | 78 2e 74 72 61 6e 73 41 78 65 73 2c 0a 20 20 20 20 66 6f 6e 74 64 69 63 74 3d 66 6f 6e 74 2c 0a | x.transAxes,.....fontdict=font,. |
fb00 | 29 0a 0a 23 20 52 65 73 69 7a 65 20 66 69 67 75 72 65 20 66 6f 72 20 6c 61 62 65 6c 20 72 65 61 | )..#.Resize.figure.for.label.rea |
fb20 | 64 61 62 69 6c 69 74 79 0a 61 78 2e 6d 61 72 67 69 6e 73 28 30 2e 31 2c 20 30 2e 30 35 29 0a 66 | dability.ax.margins(0.1,.0.05).f |
fb40 | 69 67 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 | ig.tight_layout().plt.axis("off" |
fb60 | 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 00 7b 57 56 52 90 4b e1 20 | ).plt.show().PK.........{WVR.K.. |
fb80 | 01 00 00 20 01 00 00 1d 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 6e 6f 64 65 5f 63 6f 6c | ...........drawing/plot_node_col |
fba0 | 6f 72 6d 61 70 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4e 6f 64 65 20 43 | ormap.py""".=============.Node.C |
fbc0 | 6f 6c 6f 72 6d 61 70 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 44 72 61 77 20 61 20 67 72 | olormap.=============..Draw.a.gr |
fbe0 | 61 70 68 20 77 69 74 68 20 6d 61 74 70 6c 6f 74 6c 69 62 2c 20 63 6f 6c 6f 72 20 62 79 20 64 65 | aph.with.matplotlib,.color.by.de |
fc00 | 67 72 65 65 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 | gree.."""..import.matplotlib.pyp |
fc20 | 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 | lot.as.plt.import.networkx.as.nx |
fc40 | 0a 0a 47 20 3d 20 6e 78 2e 63 79 63 6c 65 5f 67 72 61 70 68 28 32 34 29 0a 70 6f 73 20 3d 20 6e | ..G.=.nx.cycle_graph(24).pos.=.n |
fc60 | 78 2e 63 69 72 63 75 6c 61 72 5f 6c 61 79 6f 75 74 28 47 29 0a 6e 78 2e 64 72 61 77 28 47 2c 20 | x.circular_layout(G).nx.draw(G,. |
fc80 | 70 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 72 61 6e 67 65 28 32 34 29 2c 20 6e 6f 64 65 5f | pos,.node_color=range(24),.node_ |
fca0 | 73 69 7a 65 3d 38 30 30 2c 20 63 6d 61 70 3d 70 6c 74 2e 63 6d 2e 42 6c 75 65 73 29 0a 70 6c 74 | size=800,.cmap=plt.cm.Blues).plt |
fcc0 | 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 fb 7a 57 56 2c 86 d6 29 6d 02 00 00 6d 02 | .show().PK.........zWV,..)m...m. |
fce0 | 00 00 1b 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 63 65 6e 74 65 72 5f 6e 6f 64 65 2e 70 | ......drawing/plot_center_node.p |
fd00 | 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 43 75 73 74 6f 6d | y""".====================.Custom |
fd20 | 20 4e 6f 64 65 20 50 6f 73 69 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | .Node.Position.================= |
fd40 | 3d 3d 3d 0a 0a 44 72 61 77 20 61 20 67 72 61 70 68 20 77 69 74 68 20 6e 6f 64 65 28 73 29 20 6c | ===..Draw.a.graph.with.node(s).l |
fd60 | 6f 63 61 74 65 64 20 61 74 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 70 6f 73 69 74 69 6f 6e 73 | ocated.at.user-defined.positions |
fd80 | 2e 0a 0a 57 68 65 6e 20 61 20 70 6f 73 69 74 69 6f 6e 20 69 73 20 73 65 74 20 62 79 20 74 68 65 | ...When.a.position.is.set.by.the |
fda0 | 20 75 73 65 72 2c 20 74 68 65 20 6f 74 68 65 72 20 6e 6f 64 65 73 20 63 61 6e 20 73 74 69 6c 6c | .user,.the.other.nodes.can.still |
fdc0 | 20 62 65 20 6e 65 61 74 6c 79 20 6f 72 67 61 6e 69 73 65 64 20 69 6e 20 61 20 6c 61 79 6f 75 74 | .be.neatly.organised.in.a.layout |
fde0 | 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 | .."""..import.networkx.as.nx.imp |
fe00 | 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 0a 47 20 3d 20 6e 78 2e 70 61 74 68 5f 67 72 61 | ort.numpy.as.np..G.=.nx.path_gra |
fe20 | 70 68 28 32 30 29 20 20 23 20 41 6e 20 65 78 61 6d 70 6c 65 20 67 72 61 70 68 0a 63 65 6e 74 65 | ph(20)..#.An.example.graph.cente |
fe40 | 72 5f 6e 6f 64 65 20 3d 20 35 20 20 23 20 4f 72 20 61 6e 79 20 6f 74 68 65 72 20 6e 6f 64 65 20 | r_node.=.5..#.Or.any.other.node. |
fe60 | 74 6f 20 62 65 20 69 6e 20 74 68 65 20 63 65 6e 74 65 72 0a 65 64 67 65 5f 6e 6f 64 65 73 20 3d | to.be.in.the.center.edge_nodes.= |
fe80 | 20 73 65 74 28 47 29 20 2d 20 7b 63 65 6e 74 65 72 5f 6e 6f 64 65 7d 0a 23 20 45 6e 73 75 72 65 | .set(G).-.{center_node}.#.Ensure |
fea0 | 73 20 74 68 65 20 6e 6f 64 65 73 20 61 72 6f 75 6e 64 20 74 68 65 20 63 69 72 63 6c 65 20 61 72 | s.the.nodes.around.the.circle.ar |
fec0 | 65 20 65 76 65 6e 6c 79 20 64 69 73 74 72 69 62 75 74 65 64 0a 70 6f 73 20 3d 20 6e 78 2e 63 69 | e.evenly.distributed.pos.=.nx.ci |
fee0 | 72 63 75 6c 61 72 5f 6c 61 79 6f 75 74 28 47 2e 73 75 62 67 72 61 70 68 28 65 64 67 65 5f 6e 6f | rcular_layout(G.subgraph(edge_no |
ff00 | 64 65 73 29 29 0a 70 6f 73 5b 63 65 6e 74 65 72 5f 6e 6f 64 65 5d 20 3d 20 6e 70 2e 61 72 72 61 | des)).pos[center_node].=.np.arra |
ff20 | 79 28 5b 30 2c 20 30 5d 29 20 20 23 20 6d 61 6e 75 61 6c 6c 79 20 73 70 65 63 69 66 79 20 6e 6f | y([0,.0])..#.manually.specify.no |
ff40 | 64 65 20 70 6f 73 69 74 69 6f 6e 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 2c 20 77 69 74 68 | de.position.nx.draw(G,.pos,.with |
ff60 | 5f 6c 61 62 65 6c 73 3d 54 72 75 65 29 0a 50 4b 03 04 14 00 00 00 00 00 01 7b 57 56 cb c7 a6 62 | _labels=True).PK.........{WV...b |
ff80 | aa 03 00 00 aa 03 00 00 26 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 72 61 6e 64 6f 6d 5f | ........&...drawing/plot_random_ |
ffa0 | 67 65 6f 6d 65 74 72 69 63 5f 67 72 61 70 68 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | geometric_graph.py""".========== |
ffc0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 61 6e 64 6f 6d 20 47 65 6f 6d 65 74 72 69 63 20 47 72 | ============.Random.Geometric.Gr |
ffe0 | 61 70 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 45 78 61 6d | aph.======================..Exam |
10000 | 70 6c 65 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f | ple."""..import.matplotlib.pyplo |
10020 | 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a | t.as.plt.import.networkx.as.nx.. |
10040 | 23 20 55 73 65 20 73 65 65 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65 20 67 72 61 | #.Use.seed.when.creating.the.gra |
10060 | 70 68 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 79 0a 47 20 3d 20 6e 78 2e 72 61 | ph.for.reproducibility.G.=.nx.ra |
10080 | 6e 64 6f 6d 5f 67 65 6f 6d 65 74 72 69 63 5f 67 72 61 70 68 28 32 30 30 2c 20 30 2e 31 32 35 2c | ndom_geometric_graph(200,.0.125, |
100a0 | 20 73 65 65 64 3d 38 39 36 38 30 33 29 0a 23 20 70 6f 73 69 74 69 6f 6e 20 69 73 20 73 74 6f 72 | .seed=896803).#.position.is.stor |
100c0 | 65 64 20 61 73 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 20 64 61 74 61 20 66 6f 72 20 72 61 | ed.as.node.attribute.data.for.ra |
100e0 | 6e 64 6f 6d 5f 67 65 6f 6d 65 74 72 69 63 5f 67 72 61 70 68 0a 70 6f 73 20 3d 20 6e 78 2e 67 65 | ndom_geometric_graph.pos.=.nx.ge |
10100 | 74 5f 6e 6f 64 65 5f 61 74 74 72 69 62 75 74 65 73 28 47 2c 20 22 70 6f 73 22 29 0a 0a 23 20 66 | t_node_attributes(G,."pos")..#.f |
10120 | 69 6e 64 20 6e 6f 64 65 20 6e 65 61 72 20 63 65 6e 74 65 72 20 28 30 2e 35 2c 30 2e 35 29 0a 64 | ind.node.near.center.(0.5,0.5).d |
10140 | 6d 69 6e 20 3d 20 31 0a 6e 63 65 6e 74 65 72 20 3d 20 30 0a 66 6f 72 20 6e 20 69 6e 20 70 6f 73 | min.=.1.ncenter.=.0.for.n.in.pos |
10160 | 3a 0a 20 20 20 20 78 2c 20 79 20 3d 20 70 6f 73 5b 6e 5d 0a 20 20 20 20 64 20 3d 20 28 78 20 2d | :.....x,.y.=.pos[n].....d.=.(x.- |
10180 | 20 30 2e 35 29 20 2a 2a 20 32 20 2b 20 28 79 20 2d 20 30 2e 35 29 20 2a 2a 20 32 0a 20 20 20 20 | .0.5).**.2.+.(y.-.0.5).**.2..... |
101a0 | 69 66 20 64 20 3c 20 64 6d 69 6e 3a 0a 20 20 20 20 20 20 20 20 6e 63 65 6e 74 65 72 20 3d 20 6e | if.d.<.dmin:.........ncenter.=.n |
101c0 | 0a 20 20 20 20 20 20 20 20 64 6d 69 6e 20 3d 20 64 0a 0a 23 20 63 6f 6c 6f 72 20 62 79 20 70 61 | .........dmin.=.d..#.color.by.pa |
101e0 | 74 68 20 6c 65 6e 67 74 68 20 66 72 6f 6d 20 6e 6f 64 65 20 6e 65 61 72 20 63 65 6e 74 65 72 0a | th.length.from.node.near.center. |
10200 | 70 20 3d 20 64 69 63 74 28 6e 78 2e 73 69 6e 67 6c 65 5f 73 6f 75 72 63 65 5f 73 68 6f 72 74 65 | p.=.dict(nx.single_source_shorte |
10220 | 73 74 5f 70 61 74 68 5f 6c 65 6e 67 74 68 28 47 2c 20 6e 63 65 6e 74 65 72 29 29 0a 0a 70 6c 74 | st_path_length(G,.ncenter))..plt |
10240 | 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 38 2c 20 38 29 29 0a 6e 78 2e 64 72 61 77 5f | .figure(figsize=(8,.8)).nx.draw_ |
10260 | 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 47 2c 20 70 6f 73 2c 20 61 6c 70 68 61 3d 30 2e 34 | networkx_edges(G,.pos,.alpha=0.4 |
10280 | 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 0a 20 20 20 20 47 2c | ).nx.draw_networkx_nodes(.....G, |
102a0 | 0a 20 20 20 20 70 6f 73 2c 0a 20 20 20 20 6e 6f 64 65 6c 69 73 74 3d 6c 69 73 74 28 70 2e 6b 65 | .....pos,.....nodelist=list(p.ke |
102c0 | 79 73 28 29 29 2c 0a 20 20 20 20 6e 6f 64 65 5f 73 69 7a 65 3d 38 30 2c 0a 20 20 20 20 6e 6f 64 | ys()),.....node_size=80,.....nod |
102e0 | 65 5f 63 6f 6c 6f 72 3d 6c 69 73 74 28 70 2e 76 61 6c 75 65 73 28 29 29 2c 0a 20 20 20 20 63 6d | e_color=list(p.values()),.....cm |
10300 | 61 70 3d 70 6c 74 2e 63 6d 2e 52 65 64 73 5f 72 2c 0a 29 0a 0a 70 6c 74 2e 78 6c 69 6d 28 2d 30 | ap=plt.cm.Reds_r,.)..plt.xlim(-0 |
10320 | 2e 30 35 2c 20 31 2e 30 35 29 0a 70 6c 74 2e 79 6c 69 6d 28 2d 30 2e 30 35 2c 20 31 2e 30 35 29 | .05,.1.05).plt.ylim(-0.05,.1.05) |
10340 | 0a 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 | .plt.axis("off").plt.show().PK.. |
10360 | 14 00 00 00 00 00 02 7b 57 56 1a 64 80 3d ac 07 00 00 ac 07 00 00 1a 00 00 00 64 72 61 77 69 6e | .......{WV.d.=............drawin |
10380 | 67 2f 70 6c 6f 74 5f 75 6e 69 78 5f 65 6d 61 69 6c 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d | g/plot_unix_email.py""".======== |
103a0 | 3d 3d 0a 55 6e 69 78 20 45 6d 61 69 6c 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 43 72 65 61 74 65 | ==.Unix.Email.==========..Create |
103c0 | 20 61 20 64 69 72 65 63 74 65 64 20 67 72 61 70 68 2c 20 61 6c 6c 6f 77 69 6e 67 20 6d 75 6c 74 | .a.directed.graph,.allowing.mult |
103e0 | 69 70 6c 65 20 65 64 67 65 73 20 61 6e 64 20 73 65 6c 66 20 6c 6f 6f 70 73 2c 20 66 72 6f 6d 20 | iple.edges.and.self.loops,.from. |
10400 | 61 20 75 6e 69 78 0a 6d 61 69 6c 62 6f 78 2e 20 20 54 68 65 20 6e 6f 64 65 73 20 61 72 65 20 65 | a.unix.mailbox...The.nodes.are.e |
10420 | 6d 61 69 6c 20 61 64 64 72 65 73 73 65 73 20 77 69 74 68 20 6c 69 6e 6b 73 20 74 68 61 74 20 70 | mail.addresses.with.links.that.p |
10440 | 6f 69 6e 74 20 66 72 6f 6d 20 74 68 65 20 73 65 6e 64 65 72 0a 74 6f 20 74 68 65 20 72 65 63 65 | oint.from.the.sender.to.the.rece |
10460 | 69 76 65 72 73 2e 20 20 54 68 65 20 65 64 67 65 20 64 61 74 61 20 69 73 20 61 20 50 79 74 68 6f | ivers...The.edge.data.is.a.Pytho |
10480 | 6e 20 65 6d 61 69 6c 2e 4d 65 73 73 61 67 65 20 6f 62 6a 65 63 74 20 77 68 69 63 68 0a 63 6f 6e | n.email.Message.object.which.con |
104a0 | 74 61 69 6e 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 65 6d 61 69 6c 20 6d 65 73 73 61 67 65 20 64 | tains.all.of.the.email.message.d |
104c0 | 61 74 61 2e 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 73 20 74 68 65 20 70 6f 77 | ata...This.example.shows.the.pow |
104e0 | 65 72 20 6f 66 20 60 44 69 47 72 61 70 68 60 20 74 6f 20 68 6f 6c 64 20 65 64 67 65 20 64 61 74 | er.of.`DiGraph`.to.hold.edge.dat |
10500 | 61 20 6f 66 20 61 72 62 69 74 72 61 72 79 20 50 79 74 68 6f 6e 0a 6f 62 6a 65 63 74 73 20 28 69 | a.of.arbitrary.Python.objects.(i |
10520 | 6e 20 74 68 69 73 20 63 61 73 65 20 61 20 6c 69 73 74 20 6f 66 20 65 6d 61 69 6c 20 6d 65 73 73 | n.this.case.a.list.of.email.mess |
10540 | 61 67 65 73 29 2e 0a 0a 0a 54 68 65 20 73 61 6d 70 6c 65 20 75 6e 69 78 20 65 6d 61 69 6c 20 6d | ages)....The.sample.unix.email.m |
10560 | 61 69 6c 62 6f 78 20 63 61 6c 6c 65 64 20 22 75 6e 69 78 5f 65 6d 61 69 6c 2e 6d 62 6f 78 22 20 | ailbox.called."unix_email.mbox". |
10580 | 6d 61 79 20 62 65 20 66 6f 75 6e 64 20 68 65 72 65 3a 0a 0a 2d 20 68 74 74 70 73 3a 2f 2f 67 69 | may.be.found.here:..-.https://gi |
105a0 | 74 68 75 62 2e 63 6f 6d 2f 6e 65 74 77 6f 72 6b 78 2f 6e 65 74 77 6f 72 6b 78 2f 62 6c 6f 62 2f | thub.com/networkx/networkx/blob/ |
105c0 | 6d 61 69 6e 2f 65 78 61 6d 70 6c 65 73 2f 64 72 61 77 69 6e 67 2f 75 6e 69 78 5f 65 6d 61 69 6c | main/examples/drawing/unix_email |
105e0 | 2e 6d 62 6f 78 0a 22 22 22 0a 0a 66 72 6f 6d 20 65 6d 61 69 6c 2e 75 74 69 6c 73 20 69 6d 70 6f | .mbox."""..from.email.utils.impo |
10600 | 72 74 20 67 65 74 61 64 64 72 65 73 73 65 73 2c 20 70 61 72 73 65 61 64 64 72 0a 69 6d 70 6f 72 | rt.getaddresses,.parseaddr.impor |
10620 | 74 20 6d 61 69 6c 62 6f 78 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 | t.mailbox..import.matplotlib.pyp |
10640 | 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 | lot.as.plt.import.networkx.as.nx |
10660 | 0a 0a 23 20 75 6e 69 78 20 6d 61 69 6c 62 6f 78 20 72 65 63 69 70 65 0a 23 20 73 65 65 20 68 74 | ..#.unix.mailbox.recipe.#.see.ht |
10680 | 74 70 73 3a 2f 2f 64 6f 63 73 2e 70 79 74 68 6f 6e 2e 6f 72 67 2f 33 2f 6c 69 62 72 61 72 79 2f | tps://docs.python.org/3/library/ |
106a0 | 6d 61 69 6c 62 6f 78 2e 68 74 6d 6c 0a 0a 0a 64 65 66 20 6d 62 6f 78 5f 67 72 61 70 68 28 29 3a | mailbox.html...def.mbox_graph(): |
106c0 | 0a 20 20 20 20 6d 62 6f 78 20 3d 20 6d 61 69 6c 62 6f 78 2e 6d 62 6f 78 28 22 75 6e 69 78 5f 65 | .....mbox.=.mailbox.mbox("unix_e |
106e0 | 6d 61 69 6c 2e 6d 62 6f 78 22 29 20 20 23 20 70 61 72 73 65 20 75 6e 69 78 20 6d 61 69 6c 62 6f | mail.mbox")..#.parse.unix.mailbo |
10700 | 78 0a 0a 20 20 20 20 47 20 3d 20 6e 78 2e 4d 75 6c 74 69 44 69 47 72 61 70 68 28 29 20 20 23 20 | x......G.=.nx.MultiDiGraph()..#. |
10720 | 63 72 65 61 74 65 20 65 6d 70 74 79 20 67 72 61 70 68 0a 0a 20 20 20 20 23 20 70 61 72 73 65 20 | create.empty.graph......#.parse. |
10740 | 65 61 63 68 20 6d 65 73 73 61 67 65 73 20 61 6e 64 20 62 75 69 6c 64 20 67 72 61 70 68 0a 20 20 | each.messages.and.build.graph... |
10760 | 20 20 66 6f 72 20 6d 73 67 20 69 6e 20 6d 62 6f 78 3a 20 20 23 20 6d 73 67 20 69 73 20 70 79 74 | ..for.msg.in.mbox:..#.msg.is.pyt |
10780 | 68 6f 6e 20 65 6d 61 69 6c 2e 4d 65 73 73 61 67 65 2e 4d 65 73 73 61 67 65 20 6f 62 6a 65 63 74 | hon.email.Message.Message.object |
107a0 | 0a 20 20 20 20 20 20 20 20 28 73 6f 75 72 63 65 5f 6e 61 6d 65 2c 20 73 6f 75 72 63 65 5f 61 64 | .........(source_name,.source_ad |
107c0 | 64 72 29 20 3d 20 70 61 72 73 65 61 64 64 72 28 6d 73 67 5b 22 46 72 6f 6d 22 5d 29 20 20 23 20 | dr).=.parseaddr(msg["From"])..#. |
107e0 | 73 65 6e 64 65 72 0a 20 20 20 20 20 20 20 20 23 20 67 65 74 20 61 6c 6c 20 72 65 63 69 70 69 65 | sender.........#.get.all.recipie |
10800 | 6e 74 73 0a 20 20 20 20 20 20 20 20 23 20 73 65 65 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 70 | nts.........#.see.https://docs.p |
10820 | 79 74 68 6f 6e 2e 6f 72 67 2f 33 2f 6c 69 62 72 61 72 79 2f 65 6d 61 69 6c 2e 68 74 6d 6c 0a 20 | ython.org/3/library/email.html.. |
10840 | 20 20 20 20 20 20 20 74 6f 73 20 3d 20 6d 73 67 2e 67 65 74 5f 61 6c 6c 28 22 74 6f 22 2c 20 5b | .......tos.=.msg.get_all("to",.[ |
10860 | 5d 29 0a 20 20 20 20 20 20 20 20 63 63 73 20 3d 20 6d 73 67 2e 67 65 74 5f 61 6c 6c 28 22 63 63 | ]).........ccs.=.msg.get_all("cc |
10880 | 22 2c 20 5b 5d 29 0a 20 20 20 20 20 20 20 20 72 65 73 65 6e 74 5f 74 6f 73 20 3d 20 6d 73 67 2e | ",.[]).........resent_tos.=.msg. |
108a0 | 67 65 74 5f 61 6c 6c 28 22 72 65 73 65 6e 74 2d 74 6f 22 2c 20 5b 5d 29 0a 20 20 20 20 20 20 20 | get_all("resent-to",.[])........ |
108c0 | 20 72 65 73 65 6e 74 5f 63 63 73 20 3d 20 6d 73 67 2e 67 65 74 5f 61 6c 6c 28 22 72 65 73 65 6e | .resent_ccs.=.msg.get_all("resen |
108e0 | 74 2d 63 63 22 2c 20 5b 5d 29 0a 20 20 20 20 20 20 20 20 61 6c 6c 5f 72 65 63 69 70 69 65 6e 74 | t-cc",.[]).........all_recipient |
10900 | 73 20 3d 20 67 65 74 61 64 64 72 65 73 73 65 73 28 74 6f 73 20 2b 20 63 63 73 20 2b 20 72 65 73 | s.=.getaddresses(tos.+.ccs.+.res |
10920 | 65 6e 74 5f 74 6f 73 20 2b 20 72 65 73 65 6e 74 5f 63 63 73 29 0a 20 20 20 20 20 20 20 20 23 20 | ent_tos.+.resent_ccs).........#. |
10940 | 6e 6f 77 20 61 64 64 20 74 68 65 20 65 64 67 65 73 20 66 6f 72 20 74 68 69 73 20 6d 61 69 6c 20 | now.add.the.edges.for.this.mail. |
10960 | 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 66 6f 72 20 74 61 72 67 65 74 5f 6e 61 6d 65 2c | message.........for.target_name, |
10980 | 20 74 61 72 67 65 74 5f 61 64 64 72 20 69 6e 20 61 6c 6c 5f 72 65 63 69 70 69 65 6e 74 73 3a 0a | .target_addr.in.all_recipients:. |
109a0 | 20 20 20 20 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 65 64 67 65 28 73 6f 75 72 63 65 5f 61 64 | ............G.add_edge(source_ad |
109c0 | 64 72 2c 20 74 61 72 67 65 74 5f 61 64 64 72 2c 20 6d 65 73 73 61 67 65 3d 6d 73 67 29 0a 0a 20 | dr,.target_addr,.message=msg)... |
109e0 | 20 20 20 72 65 74 75 72 6e 20 47 0a 0a 0a 47 20 3d 20 6d 62 6f 78 5f 67 72 61 70 68 28 29 0a 0a | ...return.G...G.=.mbox_graph().. |
10a00 | 23 20 70 72 69 6e 74 20 65 64 67 65 73 20 77 69 74 68 20 6d 65 73 73 61 67 65 20 73 75 62 6a 65 | #.print.edges.with.message.subje |
10a20 | 63 74 0a 66 6f 72 20 75 2c 20 76 2c 20 64 20 69 6e 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 54 | ct.for.u,.v,.d.in.G.edges(data=T |
10a40 | 72 75 65 29 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 46 72 6f 6d 3a 20 7b 75 7d 20 54 6f 3a 20 | rue):.....print(f"From:.{u}.To:. |
10a60 | 7b 76 7d 20 53 75 62 6a 65 63 74 3a 20 7b 64 5b 27 6d 65 73 73 61 67 65 27 5d 5b 27 53 75 62 6a | {v}.Subject:.{d['message']['Subj |
10a80 | 65 63 74 27 5d 7d 22 29 0a 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 | ect']}")..pos.=.nx.spring_layout |
10aa0 | 28 47 2c 20 69 74 65 72 61 74 69 6f 6e 73 3d 31 30 2c 20 73 65 65 64 3d 32 32 37 29 0a 6e 78 2e | (G,.iterations=10,.seed=227).nx. |
10ac0 | 64 72 61 77 28 47 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 30 2c 20 61 6c 70 68 61 3d | draw(G,.pos,.node_size=0,.alpha= |
10ae0 | 30 2e 34 2c 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 22 72 22 2c 20 66 6f 6e 74 5f 73 69 7a 65 3d 31 | 0.4,.edge_color="r",.font_size=1 |
10b00 | 36 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 54 72 75 65 29 0a 61 78 20 3d 20 70 6c 74 2e 67 63 | 6,.with_labels=True).ax.=.plt.gc |
10b20 | 61 28 29 0a 61 78 2e 6d 61 72 67 69 6e 73 28 30 2e 30 38 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a | a().ax.margins(0.08).plt.show(). |
10b40 | 50 4b 03 04 14 00 00 00 00 00 00 7b 57 56 df c6 01 9e 99 02 00 00 99 02 00 00 21 00 00 00 64 72 | PK.........{WV............!...dr |
10b60 | 61 77 69 6e 67 2f 70 6c 6f 74 5f 68 6f 75 73 65 5f 77 69 74 68 5f 63 6f 6c 6f 72 73 2e 70 79 22 | awing/plot_house_with_colors.py" |
10b80 | 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 48 6f 75 73 65 20 57 69 74 68 20 | "".=================.House.With. |
10ba0 | 43 6f 6c 6f 72 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 44 72 61 77 20 61 | Colors.=================..Draw.a |
10bc0 | 20 67 72 61 70 68 20 77 69 74 68 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 0a 22 22 22 0a 69 6d 70 6f | .graph.with.matplotlib..""".impo |
10be0 | 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f | rt.matplotlib.pyplot.as.plt.impo |
10c00 | 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 68 6f 75 73 65 5f | rt.networkx.as.nx..G.=.nx.house_ |
10c20 | 67 72 61 70 68 28 29 0a 23 20 65 78 70 6c 69 63 69 74 6c 79 20 73 65 74 20 70 6f 73 69 74 69 6f | graph().#.explicitly.set.positio |
10c40 | 6e 73 0a 70 6f 73 20 3d 20 7b 30 3a 20 28 30 2c 20 30 29 2c 20 31 3a 20 28 31 2c 20 30 29 2c 20 | ns.pos.=.{0:.(0,.0),.1:.(1,.0),. |
10c60 | 32 3a 20 28 30 2c 20 31 29 2c 20 33 3a 20 28 31 2c 20 31 29 2c 20 34 3a 20 28 30 2e 35 2c 20 32 | 2:.(0,.1),.3:.(1,.1),.4:.(0.5,.2 |
10c80 | 2e 30 29 7d 0a 0a 23 20 50 6c 6f 74 20 6e 6f 64 65 73 20 77 69 74 68 20 64 69 66 66 65 72 65 6e | .0)}..#.Plot.nodes.with.differen |
10ca0 | 74 20 70 72 6f 70 65 72 74 69 65 73 20 66 6f 72 20 74 68 65 20 22 77 61 6c 6c 22 20 61 6e 64 20 | t.properties.for.the."wall".and. |
10cc0 | 22 72 6f 6f 66 22 20 6e 6f 64 65 73 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f | "roof".nodes.nx.draw_networkx_no |
10ce0 | 64 65 73 28 0a 20 20 20 20 47 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 33 30 30 30 2c | des(.....G,.pos,.node_size=3000, |
10d00 | 20 6e 6f 64 65 6c 69 73 74 3d 5b 30 2c 20 31 2c 20 32 2c 20 33 5d 2c 20 6e 6f 64 65 5f 63 6f 6c | .nodelist=[0,.1,.2,.3],.node_col |
10d20 | 6f 72 3d 22 74 61 62 3a 62 6c 75 65 22 0a 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 | or="tab:blue".).nx.draw_networkx |
10d40 | 5f 6e 6f 64 65 73 28 47 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 32 30 30 30 2c 20 6e | _nodes(G,.pos,.node_size=2000,.n |
10d60 | 6f 64 65 6c 69 73 74 3d 5b 34 5d 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 74 61 62 3a 6f 72 61 | odelist=[4],.node_color="tab:ora |
10d80 | 6e 67 65 22 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 47 2c 20 | nge").nx.draw_networkx_edges(G,. |
10da0 | 70 6f 73 2c 20 61 6c 70 68 61 3d 30 2e 35 2c 20 77 69 64 74 68 3d 36 29 0a 23 20 43 75 73 74 6f | pos,.alpha=0.5,.width=6).#.Custo |
10dc0 | 6d 69 7a 65 20 61 78 65 73 0a 61 78 20 3d 20 70 6c 74 2e 67 63 61 28 29 0a 61 78 2e 6d 61 72 67 | mize.axes.ax.=.plt.gca().ax.marg |
10de0 | 69 6e 73 28 30 2e 31 31 29 0a 70 6c 74 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 | ins(0.11).plt.tight_layout().plt |
10e00 | 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 | .axis("off").plt.show().PK...... |
10e20 | 00 00 fc 7a 57 56 99 7c b8 07 14 06 00 00 14 06 00 00 16 00 00 00 64 72 61 77 69 6e 67 2f 70 6c | ...zWV.|..............drawing/pl |
10e40 | 6f 74 5f 64 65 67 72 65 65 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a | ot_degree.py""".===============. |
10e60 | 44 65 67 72 65 65 20 41 6e 61 6c 79 73 69 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a | Degree.Analysis.===============. |
10e80 | 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 73 20 73 65 76 65 72 61 6c 20 77 61 79 73 | .This.example.shows.several.ways |
10ea0 | 20 74 6f 20 76 69 73 75 61 6c 69 7a 65 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f | .to.visualize.the.distribution.o |
10ec0 | 66 20 74 68 65 20 64 65 67 72 65 65 20 6f 66 0a 6e 6f 64 65 73 20 77 69 74 68 20 74 77 6f 20 63 | f.the.degree.of.nodes.with.two.c |
10ee0 | 6f 6d 6d 6f 6e 20 74 65 63 68 6e 69 71 75 65 73 3a 20 61 20 2a 64 65 67 72 65 65 2d 72 61 6e 6b | ommon.techniques:.a.*degree-rank |
10f00 | 20 70 6c 6f 74 2a 20 61 6e 64 20 61 0a 2a 64 65 67 72 65 65 20 68 69 73 74 6f 67 72 61 6d 2a 2e | .plot*.and.a.*degree.histogram*. |
10f20 | 0a 0a 49 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 2c 20 61 20 72 61 6e 64 6f 6d 20 47 72 61 70 | ..In.this.example,.a.random.Grap |
10f40 | 68 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 77 69 74 68 20 31 30 30 20 6e 6f 64 65 73 2e 20 54 | h.is.generated.with.100.nodes..T |
10f60 | 68 65 20 64 65 67 72 65 65 20 6f 66 0a 65 61 63 68 20 6e 6f 64 65 20 69 73 20 64 65 74 65 72 6d | he.degree.of.each.node.is.determ |
10f80 | 69 6e 65 64 2c 20 61 6e 64 20 61 20 66 69 67 75 72 65 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 | ined,.and.a.figure.is.generated. |
10fa0 | 73 68 6f 77 69 6e 67 20 74 68 72 65 65 20 74 68 69 6e 67 73 3a 0a 31 2e 20 54 68 65 20 73 75 62 | showing.three.things:.1..The.sub |
10fc0 | 67 72 61 70 68 20 6f 66 20 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 73 0a 32 2e | graph.of.connected.components.2. |
10fe0 | 20 54 68 65 20 64 65 67 72 65 65 2d 72 61 6e 6b 20 70 6c 6f 74 20 66 6f 72 20 74 68 65 20 47 72 | .The.degree-rank.plot.for.the.Gr |
11000 | 61 70 68 2c 20 61 6e 64 0a 33 2e 20 54 68 65 20 64 65 67 72 65 65 20 68 69 73 74 6f 67 72 61 6d | aph,.and.3..The.degree.histogram |
11020 | 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 | .""".import.networkx.as.nx.impor |
11040 | 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e | t.numpy.as.np.import.matplotlib. |
11060 | 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 0a 47 20 3d 20 6e 78 2e 67 6e 70 5f 72 61 6e 64 6f 6d | pyplot.as.plt..G.=.nx.gnp_random |
11080 | 5f 67 72 61 70 68 28 31 30 30 2c 20 30 2e 30 32 2c 20 73 65 65 64 3d 31 30 33 37 34 31 39 36 29 | _graph(100,.0.02,.seed=10374196) |
110a0 | 0a 0a 64 65 67 72 65 65 5f 73 65 71 75 65 6e 63 65 20 3d 20 73 6f 72 74 65 64 28 28 64 20 66 6f | ..degree_sequence.=.sorted((d.fo |
110c0 | 72 20 6e 2c 20 64 20 69 6e 20 47 2e 64 65 67 72 65 65 28 29 29 2c 20 72 65 76 65 72 73 65 3d 54 | r.n,.d.in.G.degree()),.reverse=T |
110e0 | 72 75 65 29 0a 64 6d 61 78 20 3d 20 6d 61 78 28 64 65 67 72 65 65 5f 73 65 71 75 65 6e 63 65 29 | rue).dmax.=.max(degree_sequence) |
11100 | 0a 0a 66 69 67 20 3d 20 70 6c 74 2e 66 69 67 75 72 65 28 22 44 65 67 72 65 65 20 6f 66 20 61 20 | ..fig.=.plt.figure("Degree.of.a. |
11120 | 72 61 6e 64 6f 6d 20 67 72 61 70 68 22 2c 20 66 69 67 73 69 7a 65 3d 28 38 2c 20 38 29 29 0a 23 | random.graph",.figsize=(8,.8)).# |
11140 | 20 43 72 65 61 74 65 20 61 20 67 72 69 64 73 70 65 63 20 66 6f 72 20 61 64 64 69 6e 67 20 73 75 | .Create.a.gridspec.for.adding.su |
11160 | 62 70 6c 6f 74 73 20 6f 66 20 64 69 66 66 65 72 65 6e 74 20 73 69 7a 65 73 0a 61 78 67 72 69 64 | bplots.of.different.sizes.axgrid |
11180 | 20 3d 20 66 69 67 2e 61 64 64 5f 67 72 69 64 73 70 65 63 28 35 2c 20 34 29 0a 0a 61 78 30 20 3d | .=.fig.add_gridspec(5,.4)..ax0.= |
111a0 | 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 61 78 67 72 69 64 5b 30 3a 33 2c 20 3a 5d 29 | .fig.add_subplot(axgrid[0:3,.:]) |
111c0 | 0a 47 63 63 20 3d 20 47 2e 73 75 62 67 72 61 70 68 28 73 6f 72 74 65 64 28 6e 78 2e 63 6f 6e 6e | .Gcc.=.G.subgraph(sorted(nx.conn |
111e0 | 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 2c 20 6b 65 79 3d 6c 65 6e 2c 20 72 65 | ected_components(G),.key=len,.re |
11200 | 76 65 72 73 65 3d 54 72 75 65 29 5b 30 5d 29 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f | verse=True)[0]).pos.=.nx.spring_ |
11220 | 6c 61 79 6f 75 74 28 47 63 63 2c 20 73 65 65 64 3d 31 30 33 39 36 39 35 33 29 0a 6e 78 2e 64 72 | layout(Gcc,.seed=10396953).nx.dr |
11240 | 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 47 63 63 2c 20 70 6f 73 2c 20 61 78 3d 61 | aw_networkx_nodes(Gcc,.pos,.ax=a |
11260 | 78 30 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 32 30 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 | x0,.node_size=20).nx.draw_networ |
11280 | 6b 78 5f 65 64 67 65 73 28 47 63 63 2c 20 70 6f 73 2c 20 61 78 3d 61 78 30 2c 20 61 6c 70 68 61 | kx_edges(Gcc,.pos,.ax=ax0,.alpha |
112a0 | 3d 30 2e 34 29 0a 61 78 30 2e 73 65 74 5f 74 69 74 6c 65 28 22 43 6f 6e 6e 65 63 74 65 64 20 63 | =0.4).ax0.set_title("Connected.c |
112c0 | 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 47 22 29 0a 61 78 30 2e 73 65 74 5f 61 78 69 73 5f 6f 66 | omponents.of.G").ax0.set_axis_of |
112e0 | 66 28 29 0a 0a 61 78 31 20 3d 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 61 78 67 72 69 | f()..ax1.=.fig.add_subplot(axgri |
11300 | 64 5b 33 3a 2c 20 3a 32 5d 29 0a 61 78 31 2e 70 6c 6f 74 28 64 65 67 72 65 65 5f 73 65 71 75 65 | d[3:,.:2]).ax1.plot(degree_seque |
11320 | 6e 63 65 2c 20 22 62 2d 22 2c 20 6d 61 72 6b 65 72 3d 22 6f 22 29 0a 61 78 31 2e 73 65 74 5f 74 | nce,."b-",.marker="o").ax1.set_t |
11340 | 69 74 6c 65 28 22 44 65 67 72 65 65 20 52 61 6e 6b 20 50 6c 6f 74 22 29 0a 61 78 31 2e 73 65 74 | itle("Degree.Rank.Plot").ax1.set |
11360 | 5f 79 6c 61 62 65 6c 28 22 44 65 67 72 65 65 22 29 0a 61 78 31 2e 73 65 74 5f 78 6c 61 62 65 6c | _ylabel("Degree").ax1.set_xlabel |
11380 | 28 22 52 61 6e 6b 22 29 0a 0a 61 78 32 20 3d 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 | ("Rank")..ax2.=.fig.add_subplot( |
113a0 | 61 78 67 72 69 64 5b 33 3a 2c 20 32 3a 5d 29 0a 61 78 32 2e 62 61 72 28 2a 6e 70 2e 75 6e 69 71 | axgrid[3:,.2:]).ax2.bar(*np.uniq |
113c0 | 75 65 28 64 65 67 72 65 65 5f 73 65 71 75 65 6e 63 65 2c 20 72 65 74 75 72 6e 5f 63 6f 75 6e 74 | ue(degree_sequence,.return_count |
113e0 | 73 3d 54 72 75 65 29 29 0a 61 78 32 2e 73 65 74 5f 74 69 74 6c 65 28 22 44 65 67 72 65 65 20 68 | s=True)).ax2.set_title("Degree.h |
11400 | 69 73 74 6f 67 72 61 6d 22 29 0a 61 78 32 2e 73 65 74 5f 78 6c 61 62 65 6c 28 22 44 65 67 72 65 | istogram").ax2.set_xlabel("Degre |
11420 | 65 22 29 0a 61 78 32 2e 73 65 74 5f 79 6c 61 62 65 6c 28 22 23 20 6f 66 20 4e 6f 64 65 73 22 29 | e").ax2.set_ylabel("#.of.Nodes") |
11440 | 0a 0a 66 69 67 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a | ..fig.tight_layout().plt.show(). |
11460 | 50 4b 03 04 14 00 00 00 00 00 fc 7a 57 56 c2 48 7c 27 b9 01 00 00 b9 01 00 00 1d 00 00 00 64 72 | PK.........zWV.H|'............dr |
11480 | 61 77 69 6e 67 2f 70 6c 6f 74 5f 65 64 67 65 5f 63 6f 6c 6f 72 6d 61 70 2e 70 79 22 22 22 0a 3d | awing/plot_edge_colormap.py""".= |
114a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 45 64 67 65 20 43 6f 6c 6f 72 6d 61 70 0a 3d 3d 3d 3d 3d | ============.Edge.Colormap.===== |
114c0 | 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 44 72 61 77 20 61 20 67 72 61 70 68 20 77 69 74 68 20 6d 61 74 70 | ========..Draw.a.graph.with.matp |
114e0 | 6c 6f 74 6c 69 62 2c 20 63 6f 6c 6f 72 20 65 64 67 65 73 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 | lotlib,.color.edges.."""..import |
11500 | 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 | .matplotlib.pyplot.as.plt.import |
11520 | 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 73 74 61 72 5f 67 72 61 | .networkx.as.nx..G.=.nx.star_gra |
11540 | 70 68 28 32 30 29 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c | ph(20).pos.=.nx.spring_layout(G, |
11560 | 20 73 65 65 64 3d 36 33 29 20 20 23 20 53 65 65 64 20 6c 61 79 6f 75 74 20 66 6f 72 20 72 65 70 | .seed=63)..#.Seed.layout.for.rep |
11580 | 72 6f 64 75 63 69 62 69 6c 69 74 79 0a 63 6f 6c 6f 72 73 20 3d 20 72 61 6e 67 65 28 32 30 29 0a | roducibility.colors.=.range(20). |
115a0 | 6f 70 74 69 6f 6e 73 20 3d 20 7b 0a 20 20 20 20 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 3a 20 22 23 | options.=.{....."node_color":."# |
115c0 | 41 30 43 42 45 32 22 2c 0a 20 20 20 20 22 65 64 67 65 5f 63 6f 6c 6f 72 22 3a 20 63 6f 6c 6f 72 | A0CBE2",....."edge_color":.color |
115e0 | 73 2c 0a 20 20 20 20 22 77 69 64 74 68 22 3a 20 34 2c 0a 20 20 20 20 22 65 64 67 65 5f 63 6d 61 | s,....."width":.4,....."edge_cma |
11600 | 70 22 3a 20 70 6c 74 2e 63 6d 2e 42 6c 75 65 73 2c 0a 20 20 20 20 22 77 69 74 68 5f 6c 61 62 65 | p":.plt.cm.Blues,....."with_labe |
11620 | 6c 73 22 3a 20 46 61 6c 73 65 2c 0a 7d 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 2c 20 2a 2a | ls":.False,.}.nx.draw(G,.pos,.** |
11640 | 6f 70 74 69 6f 6e 73 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 00 7b | options).plt.show().PK.........{ |
11660 | 57 56 b2 f9 30 8f e1 03 00 00 e1 03 00 00 22 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 6d | WV..0........."...drawing/plot_m |
11680 | 75 6c 74 69 70 61 72 74 69 74 65 5f 67 72 61 70 68 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d | ultipartite_graph.py""".======== |
116a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4d 75 6c 74 69 70 61 72 74 69 74 65 20 4c 61 79 6f 75 74 0a | ===========.Multipartite.Layout. |
116c0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 | ===================."""..import. |
116e0 | 69 74 65 72 74 6f 6f 6c 73 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c | itertools.import.matplotlib.pypl |
11700 | 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a | ot.as.plt.import.networkx.as.nx. |
11720 | 0a 73 75 62 73 65 74 5f 73 69 7a 65 73 20 3d 20 5b 35 2c 20 35 2c 20 34 2c 20 33 2c 20 32 2c 20 | .subset_sizes.=.[5,.5,.4,.3,.2,. |
11740 | 34 2c 20 34 2c 20 33 5d 0a 73 75 62 73 65 74 5f 63 6f 6c 6f 72 20 3d 20 5b 0a 20 20 20 20 22 67 | 4,.4,.3].subset_color.=.[....."g |
11760 | 6f 6c 64 22 2c 0a 20 20 20 20 22 76 69 6f 6c 65 74 22 2c 0a 20 20 20 20 22 76 69 6f 6c 65 74 22 | old",....."violet",....."violet" |
11780 | 2c 0a 20 20 20 20 22 76 69 6f 6c 65 74 22 2c 0a 20 20 20 20 22 76 69 6f 6c 65 74 22 2c 0a 20 20 | ,....."violet",....."violet",... |
117a0 | 20 20 22 6c 69 6d 65 67 72 65 65 6e 22 2c 0a 20 20 20 20 22 6c 69 6d 65 67 72 65 65 6e 22 2c 0a | .."limegreen",....."limegreen",. |
117c0 | 20 20 20 20 22 64 61 72 6b 6f 72 61 6e 67 65 22 2c 0a 5d 0a 0a 0a 64 65 66 20 6d 75 6c 74 69 6c | ...."darkorange",.]...def.multil |
117e0 | 61 79 65 72 65 64 5f 67 72 61 70 68 28 2a 73 75 62 73 65 74 5f 73 69 7a 65 73 29 3a 0a 20 20 20 | ayered_graph(*subset_sizes):.... |
11800 | 20 65 78 74 65 6e 74 73 20 3d 20 6e 78 2e 75 74 69 6c 73 2e 70 61 69 72 77 69 73 65 28 69 74 65 | .extents.=.nx.utils.pairwise(ite |
11820 | 72 74 6f 6f 6c 73 2e 61 63 63 75 6d 75 6c 61 74 65 28 28 30 2c 29 20 2b 20 73 75 62 73 65 74 5f | rtools.accumulate((0,).+.subset_ |
11840 | 73 69 7a 65 73 29 29 0a 20 20 20 20 6c 61 79 65 72 73 20 3d 20 5b 72 61 6e 67 65 28 73 74 61 72 | sizes)).....layers.=.[range(star |
11860 | 74 2c 20 65 6e 64 29 20 66 6f 72 20 73 74 61 72 74 2c 20 65 6e 64 20 69 6e 20 65 78 74 65 6e 74 | t,.end).for.start,.end.in.extent |
11880 | 73 5d 0a 20 20 20 20 47 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 0a 20 20 20 20 66 6f 72 20 69 2c | s].....G.=.nx.Graph().....for.i, |
118a0 | 20 6c 61 79 65 72 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 6c 61 79 65 72 73 29 3a 0a 20 20 20 | .layer.in.enumerate(layers):.... |
118c0 | 20 20 20 20 20 47 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 6c 61 79 65 72 2c 20 6c 61 79 | .....G.add_nodes_from(layer,.lay |
118e0 | 65 72 3d 69 29 0a 20 20 20 20 66 6f 72 20 6c 61 79 65 72 31 2c 20 6c 61 79 65 72 32 20 69 6e 20 | er=i).....for.layer1,.layer2.in. |
11900 | 6e 78 2e 75 74 69 6c 73 2e 70 61 69 72 77 69 73 65 28 6c 61 79 65 72 73 29 3a 0a 20 20 20 20 20 | nx.utils.pairwise(layers):...... |
11920 | 20 20 20 47 2e 61 64 64 5f 65 64 67 65 73 5f 66 72 6f 6d 28 69 74 65 72 74 6f 6f 6c 73 2e 70 72 | ...G.add_edges_from(itertools.pr |
11940 | 6f 64 75 63 74 28 6c 61 79 65 72 31 2c 20 6c 61 79 65 72 32 29 29 0a 20 20 20 20 72 65 74 75 72 | oduct(layer1,.layer2)).....retur |
11960 | 6e 20 47 0a 0a 0a 47 20 3d 20 6d 75 6c 74 69 6c 61 79 65 72 65 64 5f 67 72 61 70 68 28 2a 73 75 | n.G...G.=.multilayered_graph(*su |
11980 | 62 73 65 74 5f 73 69 7a 65 73 29 0a 63 6f 6c 6f 72 20 3d 20 5b 73 75 62 73 65 74 5f 63 6f 6c 6f | bset_sizes).color.=.[subset_colo |
119a0 | 72 5b 64 61 74 61 5b 22 6c 61 79 65 72 22 5d 5d 20 66 6f 72 20 76 2c 20 64 61 74 61 20 69 6e 20 | r[data["layer"]].for.v,.data.in. |
119c0 | 47 2e 6e 6f 64 65 73 28 64 61 74 61 3d 54 72 75 65 29 5d 0a 70 6f 73 20 3d 20 6e 78 2e 6d 75 6c | G.nodes(data=True)].pos.=.nx.mul |
119e0 | 74 69 70 61 72 74 69 74 65 5f 6c 61 79 6f 75 74 28 47 2c 20 73 75 62 73 65 74 5f 6b 65 79 3d 22 | tipartite_layout(G,.subset_key=" |
11a00 | 6c 61 79 65 72 22 29 0a 70 6c 74 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 38 2c 20 38 | layer").plt.figure(figsize=(8,.8 |
11a20 | 29 29 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 63 6f | )).nx.draw(G,.pos,.node_color=co |
11a40 | 6c 6f 72 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 29 0a 70 6c 74 2e 61 78 69 73 | lor,.with_labels=False).plt.axis |
11a60 | 28 22 65 71 75 61 6c 22 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 fd | ("equal").plt.show().PK......... |
11a80 | 7a 57 56 a5 8c 2c 3b 8e 03 00 00 8e 03 00 00 19 00 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f | zWV..,;............drawing/plot_ |
11aa0 | 65 67 6f 5f 67 72 61 70 68 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 45 67 6f 20 47 72 | ego_graph.py""".=========.Ego.Gr |
11ac0 | 61 70 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 45 78 61 6d 70 6c 65 20 75 73 69 6e 67 20 74 68 65 | aph.=========..Example.using.the |
11ae0 | 20 4e 65 74 77 6f 72 6b 58 20 65 67 6f 5f 67 72 61 70 68 28 29 20 66 75 6e 63 74 69 6f 6e 20 74 | .NetworkX.ego_graph().function.t |
11b00 | 6f 20 72 65 74 75 72 6e 20 74 68 65 20 6d 61 69 6e 20 65 67 6f 6e 65 74 20 6f 66 0a 74 68 65 20 | o.return.the.main.egonet.of.the. |
11b20 | 6c 61 72 67 65 73 74 20 68 75 62 20 69 6e 20 61 20 42 61 72 61 62 c3 a1 73 69 2d 41 6c 62 65 72 | largest.hub.in.a.Barab..si-Alber |
11b40 | 74 20 6e 65 74 77 6f 72 6b 2e 0a 22 22 22 0a 0a 66 72 6f 6d 20 6f 70 65 72 61 74 6f 72 20 69 6d | t.network.."""..from.operator.im |
11b60 | 70 6f 72 74 20 69 74 65 6d 67 65 74 74 65 72 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c | port.itemgetter..import.matplotl |
11b80 | 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 | ib.pyplot.as.plt.import.networkx |
11ba0 | 20 61 73 20 6e 78 0a 0a 23 20 43 72 65 61 74 65 20 61 20 42 41 20 6d 6f 64 65 6c 20 67 72 61 70 | .as.nx..#.Create.a.BA.model.grap |
11bc0 | 68 20 2d 20 75 73 65 20 73 65 65 64 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 79 | h.-.use.seed.for.reproducibility |
11be0 | 0a 6e 20 3d 20 31 30 30 30 0a 6d 20 3d 20 32 0a 73 65 65 64 20 3d 20 32 30 35 33 32 0a 47 20 3d | .n.=.1000.m.=.2.seed.=.20532.G.= |
11c00 | 20 6e 78 2e 62 61 72 61 62 61 73 69 5f 61 6c 62 65 72 74 5f 67 72 61 70 68 28 6e 2c 20 6d 2c 20 | .nx.barabasi_albert_graph(n,.m,. |
11c20 | 73 65 65 64 3d 73 65 65 64 29 0a 0a 23 20 66 69 6e 64 20 6e 6f 64 65 20 77 69 74 68 20 6c 61 72 | seed=seed)..#.find.node.with.lar |
11c40 | 67 65 73 74 20 64 65 67 72 65 65 0a 6e 6f 64 65 5f 61 6e 64 5f 64 65 67 72 65 65 20 3d 20 47 2e | gest.degree.node_and_degree.=.G. |
11c60 | 64 65 67 72 65 65 28 29 0a 28 6c 61 72 67 65 73 74 5f 68 75 62 2c 20 64 65 67 72 65 65 29 20 3d | degree().(largest_hub,.degree).= |
11c80 | 20 73 6f 72 74 65 64 28 6e 6f 64 65 5f 61 6e 64 5f 64 65 67 72 65 65 2c 20 6b 65 79 3d 69 74 65 | .sorted(node_and_degree,.key=ite |
11ca0 | 6d 67 65 74 74 65 72 28 31 29 29 5b 2d 31 5d 0a 0a 23 20 43 72 65 61 74 65 20 65 67 6f 20 67 72 | mgetter(1))[-1]..#.Create.ego.gr |
11cc0 | 61 70 68 20 6f 66 20 6d 61 69 6e 20 68 75 62 0a 68 75 62 5f 65 67 6f 20 3d 20 6e 78 2e 65 67 6f | aph.of.main.hub.hub_ego.=.nx.ego |
11ce0 | 5f 67 72 61 70 68 28 47 2c 20 6c 61 72 67 65 73 74 5f 68 75 62 29 0a 0a 23 20 44 72 61 77 20 67 | _graph(G,.largest_hub)..#.Draw.g |
11d00 | 72 61 70 68 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 68 75 62 5f | raph.pos.=.nx.spring_layout(hub_ |
11d20 | 65 67 6f 2c 20 73 65 65 64 3d 73 65 65 64 29 20 20 23 20 53 65 65 64 20 6c 61 79 6f 75 74 20 66 | ego,.seed=seed)..#.Seed.layout.f |
11d40 | 6f 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 79 0a 6e 78 2e 64 72 61 77 28 68 75 62 5f 65 | or.reproducibility.nx.draw(hub_e |
11d60 | 67 6f 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 62 22 2c 20 6e 6f 64 65 5f 73 69 | go,.pos,.node_color="b",.node_si |
11d80 | 7a 65 3d 35 30 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 29 0a 0a 23 20 44 72 61 | ze=50,.with_labels=False)..#.Dra |
11da0 | 77 20 65 67 6f 20 61 73 20 6c 61 72 67 65 20 61 6e 64 20 72 65 64 0a 6f 70 74 69 6f 6e 73 20 3d | w.ego.as.large.and.red.options.= |
11dc0 | 20 7b 22 6e 6f 64 65 5f 73 69 7a 65 22 3a 20 33 30 30 2c 20 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 | .{"node_size":.300,."node_color" |
11de0 | 3a 20 22 72 22 7d 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 68 75 | :."r"}.nx.draw_networkx_nodes(hu |
11e00 | 62 5f 65 67 6f 2c 20 70 6f 73 2c 20 6e 6f 64 65 6c 69 73 74 3d 5b 6c 61 72 67 65 73 74 5f 68 75 | b_ego,.pos,.nodelist=[largest_hu |
11e20 | 62 5d 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 | b],.**options).plt.show().PK.... |
11e40 | 00 00 00 00 01 7b 57 56 c3 cc b5 fe f1 02 00 00 f1 02 00 00 19 00 00 00 64 72 61 77 69 6e 67 2f | .....{WV................drawing/ |
11e60 | 70 6c 6f 74 5f 73 65 6c 66 6c 6f 6f 70 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a | plot_selfloops.py""".==========. |
11e80 | 53 65 6c 66 2d 6c 6f 6f 70 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 41 20 73 65 6c 66 2d 6c 6f | Self-loops.==========..A.self-lo |
11ea0 | 6f 70 20 69 73 20 61 6e 20 65 64 67 65 20 74 68 61 74 20 6f 72 69 67 69 6e 61 74 65 73 20 66 72 | op.is.an.edge.that.originates.fr |
11ec0 | 6f 6d 20 61 6e 64 20 74 65 72 6d 69 6e 61 74 65 73 20 74 68 65 20 73 61 6d 65 20 6e 6f 64 65 2e | om.and.terminates.the.same.node. |
11ee0 | 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 73 20 68 6f 77 20 74 6f 20 64 72 61 77 20 | .This.example.shows.how.to.draw. |
11f00 | 73 65 6c 66 2d 6c 6f 6f 70 73 20 77 69 74 68 20 60 6e 78 5f 70 79 6c 61 62 60 2e 0a 0a 22 22 22 | self-loops.with.`nx_pylab`...""" |
11f20 | 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 6d 61 | .import.networkx.as.nx.import.ma |
11f40 | 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 0a 23 20 43 72 65 61 74 65 | tplotlib.pyplot.as.plt..#.Create |
11f60 | 20 61 20 67 72 61 70 68 20 61 6e 64 20 61 64 64 20 61 20 73 65 6c 66 2d 6c 6f 6f 70 20 74 6f 20 | .a.graph.and.add.a.self-loop.to. |
11f80 | 6e 6f 64 65 20 30 0a 47 20 3d 20 6e 78 2e 63 6f 6d 70 6c 65 74 65 5f 67 72 61 70 68 28 33 2c 20 | node.0.G.=.nx.complete_graph(3,. |
11fa0 | 63 72 65 61 74 65 5f 75 73 69 6e 67 3d 6e 78 2e 44 69 47 72 61 70 68 29 0a 47 2e 61 64 64 5f 65 | create_using=nx.DiGraph).G.add_e |
11fc0 | 64 67 65 28 30 2c 20 30 29 0a 70 6f 73 20 3d 20 6e 78 2e 63 69 72 63 75 6c 61 72 5f 6c 61 79 6f | dge(0,.0).pos.=.nx.circular_layo |
11fe0 | 75 74 28 47 29 0a 0a 23 20 41 73 20 6f 66 20 76 65 72 73 69 6f 6e 20 32 2e 36 2c 20 73 65 6c 66 | ut(G)..#.As.of.version.2.6,.self |
12000 | 2d 6c 6f 6f 70 73 20 61 72 65 20 64 72 61 77 6e 20 62 79 20 64 65 66 61 75 6c 74 20 77 69 74 68 | -loops.are.drawn.by.default.with |
12020 | 20 74 68 65 20 73 61 6d 65 20 73 74 79 6c 69 6e 67 20 61 73 0a 23 20 6f 74 68 65 72 20 65 64 67 | .the.same.styling.as.#.other.edg |
12040 | 65 73 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 54 | es.nx.draw(G,.pos,.with_labels=T |
12060 | 72 75 65 29 0a 0a 23 20 41 64 64 20 73 65 6c 66 2d 6c 6f 6f 70 73 20 74 6f 20 74 68 65 20 72 65 | rue)..#.Add.self-loops.to.the.re |
12080 | 6d 61 69 6e 69 6e 67 20 6e 6f 64 65 73 0a 65 64 67 65 6c 69 73 74 20 3d 20 5b 28 31 2c 20 31 29 | maining.nodes.edgelist.=.[(1,.1) |
120a0 | 2c 20 28 32 2c 20 32 29 5d 0a 47 2e 61 64 64 5f 65 64 67 65 73 5f 66 72 6f 6d 28 65 64 67 65 6c | ,.(2,.2)].G.add_edges_from(edgel |
120c0 | 69 73 74 29 0a 0a 23 20 44 72 61 77 20 74 68 65 20 6e 65 77 6c 79 20 61 64 64 65 64 20 73 65 6c | ist)..#.Draw.the.newly.added.sel |
120e0 | 66 2d 6c 6f 6f 70 73 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74 20 66 6f 72 6d 61 74 74 69 6e | f-loops.with.different.formattin |
12100 | 67 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 47 2c 20 70 6f 73 2c | g.nx.draw_networkx_edges(G,.pos, |
12120 | 20 65 64 67 65 6c 69 73 74 3d 65 64 67 65 6c 69 73 74 2c 20 61 72 72 6f 77 73 74 79 6c 65 3d 22 | .edgelist=edgelist,.arrowstyle=" |
12140 | 3c 7c 2d 22 2c 20 73 74 79 6c 65 3d 22 64 61 73 68 65 64 22 29 0a 0a 70 6c 74 2e 73 68 6f 77 28 | <|-",.style="dashed")..plt.show( |
12160 | 29 0a 50 4b 03 04 14 00 00 00 00 00 01 7b 57 56 a6 98 11 54 cc 04 00 00 cc 04 00 00 17 00 00 00 | ).PK.........{WV...T............ |
12180 | 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 73 61 6d 70 73 6f 6e 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d | drawing/plot_sampson.py""".===== |
121a0 | 3d 3d 0a 53 61 6d 70 73 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 0a 0a 53 61 6d 70 73 6f 6e 27 73 20 6d 6f | ==.Sampson.=======..Sampson's.mo |
121c0 | 6e 61 73 74 65 72 79 20 64 61 74 61 2e 0a 0a 53 68 6f 77 73 20 68 6f 77 20 74 6f 20 72 65 61 64 | nastery.data...Shows.how.to.read |
121e0 | 20 64 61 74 61 20 66 72 6f 6d 20 61 20 7a 69 70 20 66 69 6c 65 20 61 6e 64 20 70 6c 6f 74 20 6d | .data.from.a.zip.file.and.plot.m |
12200 | 75 6c 74 69 70 6c 65 20 66 72 61 6d 65 73 2e 0a 0a 54 68 65 20 64 61 74 61 20 66 69 6c 65 20 63 | ultiple.frames...The.data.file.c |
12220 | 61 6e 20 62 65 20 66 6f 75 6e 64 20 61 74 3a 0a 0a 2d 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 | an.be.found.at:..-.https://githu |
12240 | 62 2e 63 6f 6d 2f 6e 65 74 77 6f 72 6b 78 2f 6e 65 74 77 6f 72 6b 78 2f 62 6c 6f 62 2f 6d 61 69 | b.com/networkx/networkx/blob/mai |
12260 | 6e 2f 65 78 61 6d 70 6c 65 73 2f 64 72 61 77 69 6e 67 2f 73 61 6d 70 73 6f 6e 5f 64 61 74 61 2e | n/examples/drawing/sampson_data. |
12280 | 7a 69 70 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 7a 69 70 66 69 6c 65 0a 66 72 6f 6d 20 69 6f 20 | zip."""..import.zipfile.from.io. |
122a0 | 69 6d 70 6f 72 74 20 42 79 74 65 73 49 4f 20 61 73 20 53 74 72 69 6e 67 49 4f 0a 0a 69 6d 70 6f | import.BytesIO.as.StringIO..impo |
122c0 | 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f | rt.matplotlib.pyplot.as.plt.impo |
122e0 | 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 77 69 74 68 20 7a 69 70 66 69 6c 65 2e | rt.networkx.as.nx..with.zipfile. |
12300 | 5a 69 70 46 69 6c 65 28 22 73 61 6d 70 73 6f 6e 5f 64 61 74 61 2e 7a 69 70 22 29 20 61 73 20 7a | ZipFile("sampson_data.zip").as.z |
12320 | 66 3a 0a 20 20 20 20 65 31 20 3d 20 53 74 72 69 6e 67 49 4f 28 7a 66 2e 72 65 61 64 28 22 73 61 | f:.....e1.=.StringIO(zf.read("sa |
12340 | 6d 70 6c 69 6b 65 31 2e 74 78 74 22 29 29 0a 20 20 20 20 65 32 20 3d 20 53 74 72 69 6e 67 49 4f | mplike1.txt")).....e2.=.StringIO |
12360 | 28 7a 66 2e 72 65 61 64 28 22 73 61 6d 70 6c 69 6b 65 32 2e 74 78 74 22 29 29 0a 20 20 20 20 65 | (zf.read("samplike2.txt")).....e |
12380 | 33 20 3d 20 53 74 72 69 6e 67 49 4f 28 7a 66 2e 72 65 61 64 28 22 73 61 6d 70 6c 69 6b 65 33 2e | 3.=.StringIO(zf.read("samplike3. |
123a0 | 74 78 74 22 29 29 0a 0a 47 31 20 3d 20 6e 78 2e 72 65 61 64 5f 65 64 67 65 6c 69 73 74 28 65 31 | txt"))..G1.=.nx.read_edgelist(e1 |
123c0 | 2c 20 64 65 6c 69 6d 69 74 65 72 3d 22 5c 74 22 29 0a 47 32 20 3d 20 6e 78 2e 72 65 61 64 5f 65 | ,.delimiter="\t").G2.=.nx.read_e |
123e0 | 64 67 65 6c 69 73 74 28 65 32 2c 20 64 65 6c 69 6d 69 74 65 72 3d 22 5c 74 22 29 0a 47 33 20 3d | dgelist(e2,.delimiter="\t").G3.= |
12400 | 20 6e 78 2e 72 65 61 64 5f 65 64 67 65 6c 69 73 74 28 65 33 2c 20 64 65 6c 69 6d 69 74 65 72 3d | .nx.read_edgelist(e3,.delimiter= |
12420 | 22 5c 74 22 29 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 33 2c | "\t").pos.=.nx.spring_layout(G3, |
12440 | 20 69 74 65 72 61 74 69 6f 6e 73 3d 31 30 30 2c 20 73 65 65 64 3d 31 37 33 29 0a 70 6c 74 2e 63 | .iterations=100,.seed=173).plt.c |
12460 | 6c 66 28 29 0a 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 32 32 31 29 0a 70 6c 74 2e 74 69 74 6c 65 | lf()..plt.subplot(221).plt.title |
12480 | 28 22 73 61 6d 70 6c 69 6b 65 31 22 29 0a 6e 78 2e 64 72 61 77 28 47 31 2c 20 70 6f 73 2c 20 6e | ("samplike1").nx.draw(G1,.pos,.n |
124a0 | 6f 64 65 5f 73 69 7a 65 3d 35 30 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 29 0a | ode_size=50,.with_labels=False). |
124c0 | 70 6c 74 2e 73 75 62 70 6c 6f 74 28 32 32 32 29 0a 70 6c 74 2e 74 69 74 6c 65 28 22 73 61 6d 70 | plt.subplot(222).plt.title("samp |
124e0 | 6c 69 6b 65 32 22 29 0a 6e 78 2e 64 72 61 77 28 47 32 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 | like2").nx.draw(G2,.pos,.node_si |
12500 | 7a 65 3d 35 30 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 29 0a 70 6c 74 2e 73 75 | ze=50,.with_labels=False).plt.su |
12520 | 62 70 6c 6f 74 28 32 32 33 29 0a 70 6c 74 2e 74 69 74 6c 65 28 22 73 61 6d 70 6c 69 6b 65 33 22 | bplot(223).plt.title("samplike3" |
12540 | 29 0a 6e 78 2e 64 72 61 77 28 47 33 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 35 30 2c | ).nx.draw(G3,.pos,.node_size=50, |
12560 | 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 29 0a 70 6c 74 2e 73 75 62 70 6c 6f 74 28 | .with_labels=False).plt.subplot( |
12580 | 32 32 34 29 0a 70 6c 74 2e 74 69 74 6c 65 28 22 73 61 6d 70 6c 69 6b 65 31 2c 32 2c 33 22 29 0a | 224).plt.title("samplike1,2,3"). |
125a0 | 6e 78 2e 64 72 61 77 28 47 33 2c 20 70 6f 73 2c 20 65 64 67 65 6c 69 73 74 3d 6c 69 73 74 28 47 | nx.draw(G3,.pos,.edgelist=list(G |
125c0 | 33 2e 65 64 67 65 73 28 29 29 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 35 30 2c 20 77 69 74 68 5f 6c | 3.edges()),.node_size=50,.with_l |
125e0 | 61 62 65 6c 73 3d 46 61 6c 73 65 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 | abels=False).nx.draw_networkx_ed |
12600 | 67 65 73 28 47 31 2c 20 70 6f 73 2c 20 61 6c 70 68 61 3d 30 2e 32 35 29 0a 6e 78 2e 64 72 61 77 | ges(G1,.pos,.alpha=0.25).nx.draw |
12620 | 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 47 32 2c 20 70 6f 73 2c 20 61 6c 70 68 61 3d 30 | _networkx_edges(G2,.pos,.alpha=0 |
12640 | 2e 32 35 29 0a 70 6c 74 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 2e 73 68 6f 77 | .25).plt.tight_layout().plt.show |
12660 | 28 29 0a 50 4b 03 04 14 00 00 00 00 00 21 7b 57 56 48 43 5f 48 da 03 00 00 da 03 00 00 1c 00 00 | ().PK........!{WVHC_H........... |
12680 | 00 65 78 74 65 72 6e 61 6c 2f 6a 61 76 61 73 63 72 69 70 74 5f 66 6f 72 63 65 2e 70 79 22 22 22 | .external/javascript_force.py""" |
126a0 | 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4a 61 76 61 73 63 72 69 70 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d | .==========.Javascript.========= |
126c0 | 3d 0a 0a 45 78 61 6d 70 6c 65 20 6f 66 20 77 72 69 74 69 6e 67 20 4a 53 4f 4e 20 66 6f 72 6d 61 | =..Example.of.writing.JSON.forma |
126e0 | 74 20 67 72 61 70 68 20 64 61 74 61 20 61 6e 64 20 75 73 69 6e 67 20 74 68 65 20 44 33 20 4a 61 | t.graph.data.and.using.the.D3.Ja |
12700 | 76 61 73 63 72 69 70 74 20 6c 69 62 72 61 72 79 0a 74 6f 20 70 72 6f 64 75 63 65 20 61 6e 20 48 | vascript.library.to.produce.an.H |
12720 | 54 4d 4c 2f 4a 61 76 61 73 63 72 69 70 74 20 64 72 61 77 69 6e 67 2e 0a 0a 59 6f 75 20 77 69 6c | TML/Javascript.drawing...You.wil |
12740 | 6c 20 6e 65 65 64 20 74 6f 20 64 6f 77 6e 6c 6f 61 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 | l.need.to.download.the.following |
12760 | 20 64 69 72 65 63 74 6f 72 79 3a 0a 0a 2d 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f | .directory:..-.https://github.co |
12780 | 6d 2f 6e 65 74 77 6f 72 6b 78 2f 6e 65 74 77 6f 72 6b 78 2f 74 72 65 65 2f 6d 61 69 6e 2f 65 78 | m/networkx/networkx/tree/main/ex |
127a0 | 61 6d 70 6c 65 73 2f 65 78 74 65 72 6e 61 6c 2f 66 6f 72 63 65 0a 22 22 22 0a 69 6d 70 6f 72 74 | amples/external/force.""".import |
127c0 | 20 6a 73 6f 6e 0a 0a 69 6d 70 6f 72 74 20 66 6c 61 73 6b 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f | .json..import.flask.import.netwo |
127e0 | 72 6b 78 20 61 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 62 61 72 62 65 6c 6c 5f 67 72 61 70 68 28 | rkx.as.nx..G.=.nx.barbell_graph( |
12800 | 36 2c 20 33 29 0a 23 20 74 68 69 73 20 64 33 20 65 78 61 6d 70 6c 65 20 75 73 65 73 20 74 68 65 | 6,.3).#.this.d3.example.uses.the |
12820 | 20 6e 61 6d 65 20 61 74 74 72 69 62 75 74 65 20 66 6f 72 20 74 68 65 20 6d 6f 75 73 65 2d 68 6f | .name.attribute.for.the.mouse-ho |
12840 | 76 65 72 20 76 61 6c 75 65 2c 0a 23 20 73 6f 20 61 64 64 20 61 20 6e 61 6d 65 20 74 6f 20 65 61 | ver.value,.#.so.add.a.name.to.ea |
12860 | 63 68 20 6e 6f 64 65 0a 66 6f 72 20 6e 20 69 6e 20 47 3a 0a 20 20 20 20 47 2e 6e 6f 64 65 73 5b | ch.node.for.n.in.G:.....G.nodes[ |
12880 | 6e 5d 5b 22 6e 61 6d 65 22 5d 20 3d 20 6e 0a 23 20 77 72 69 74 65 20 6a 73 6f 6e 20 66 6f 72 6d | n]["name"].=.n.#.write.json.form |
128a0 | 61 74 74 65 64 20 64 61 74 61 0a 64 20 3d 20 6e 78 2e 6a 73 6f 6e 5f 67 72 61 70 68 2e 6e 6f 64 | atted.data.d.=.nx.json_graph.nod |
128c0 | 65 5f 6c 69 6e 6b 5f 64 61 74 61 28 47 29 20 20 23 20 6e 6f 64 65 2d 6c 69 6e 6b 20 66 6f 72 6d | e_link_data(G)..#.node-link.form |
128e0 | 61 74 20 74 6f 20 73 65 72 69 61 6c 69 7a 65 0a 23 20 77 72 69 74 65 20 6a 73 6f 6e 0a 6a 73 6f | at.to.serialize.#.write.json.jso |
12900 | 6e 2e 64 75 6d 70 28 64 2c 20 6f 70 65 6e 28 22 66 6f 72 63 65 2f 66 6f 72 63 65 2e 6a 73 6f 6e | n.dump(d,.open("force/force.json |
12920 | 22 2c 20 22 77 22 29 29 0a 70 72 69 6e 74 28 22 57 72 6f 74 65 20 6e 6f 64 65 2d 6c 69 6e 6b 20 | ",."w")).print("Wrote.node-link. |
12940 | 4a 53 4f 4e 20 64 61 74 61 20 74 6f 20 66 6f 72 63 65 2f 66 6f 72 63 65 2e 6a 73 6f 6e 22 29 0a | JSON.data.to.force/force.json"). |
12960 | 0a 23 20 53 65 72 76 65 20 74 68 65 20 66 69 6c 65 20 6f 76 65 72 20 68 74 74 70 20 74 6f 20 61 | .#.Serve.the.file.over.http.to.a |
12980 | 6c 6c 6f 77 20 66 6f 72 20 63 72 6f 73 73 20 6f 72 69 67 69 6e 20 72 65 71 75 65 73 74 73 0a 61 | llow.for.cross.origin.requests.a |
129a0 | 70 70 20 3d 20 66 6c 61 73 6b 2e 46 6c 61 73 6b 28 5f 5f 6e 61 6d 65 5f 5f 2c 20 73 74 61 74 69 | pp.=.flask.Flask(__name__,.stati |
129c0 | 63 5f 66 6f 6c 64 65 72 3d 22 66 6f 72 63 65 22 29 0a 0a 0a 40 61 70 70 2e 72 6f 75 74 65 28 22 | c_folder="force")...@app.route(" |
129e0 | 2f 22 29 0a 64 65 66 20 73 74 61 74 69 63 5f 70 72 6f 78 79 28 29 3a 0a 20 20 20 20 72 65 74 75 | /").def.static_proxy():.....retu |
12a00 | 72 6e 20 61 70 70 2e 73 65 6e 64 5f 73 74 61 74 69 63 5f 66 69 6c 65 28 22 66 6f 72 63 65 2e 68 | rn.app.send_static_file("force.h |
12a20 | 74 6d 6c 22 29 0a 0a 0a 70 72 69 6e 74 28 22 5c 6e 47 6f 20 74 6f 20 68 74 74 70 3a 2f 2f 6c 6f | tml")...print("\nGo.to.http://lo |
12a40 | 63 61 6c 68 6f 73 74 3a 38 30 30 30 20 74 6f 20 73 65 65 20 74 68 65 20 65 78 61 6d 70 6c 65 5c | calhost:8000.to.see.the.example\ |
12a60 | 6e 22 29 0a 61 70 70 2e 72 75 6e 28 70 6f 72 74 3d 38 30 30 30 29 0a 50 4b 03 04 14 00 00 00 00 | n").app.run(port=8000).PK....... |
12a80 | 00 21 7b 57 56 fb 9b b3 8f 1d 04 00 00 1d 04 00 00 17 00 00 00 65 78 74 65 72 6e 61 6c 2f 70 6c | .!{WV................external/pl |
12aa0 | 6f 74 5f 69 67 72 61 70 68 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 0a 69 67 72 61 70 68 0a 3d 3d | ot_igraph.py""".======.igraph.== |
12ac0 | 3d 3d 3d 3d 0a 0a 69 67 72 61 70 68 20 28 68 74 74 70 73 3a 2f 2f 69 67 72 61 70 68 2e 6f 72 67 | ====..igraph.(https://igraph.org |
12ae0 | 2f 29 20 69 73 20 61 20 70 6f 70 75 6c 61 72 20 6e 65 74 77 6f 72 6b 20 61 6e 61 6c 79 73 69 73 | /).is.a.popular.network.analysis |
12b00 | 20 70 61 63 6b 61 67 65 20 74 68 61 74 0a 70 72 6f 76 69 64 65 73 20 28 61 6d 6f 6e 67 20 6d 61 | .package.that.provides.(among.ma |
12b20 | 6e 79 20 6f 74 68 65 72 20 74 68 69 6e 67 73 29 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f 20 63 6f | ny.other.things).functions.to.co |
12b40 | 6e 76 65 72 74 20 74 6f 2f 66 72 6f 6d 20 4e 65 74 77 6f 72 6b 58 2e 0a 22 22 22 0a 0a 69 6d 70 | nvert.to/from.NetworkX.."""..imp |
12b60 | 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 | ort.matplotlib.pyplot.as.plt.imp |
12b80 | 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 69 67 72 61 70 68 | ort.networkx.as.nx.import.igraph |
12ba0 | 20 61 73 20 69 67 0a 0a 23 20 25 25 0a 23 20 4e 65 74 77 6f 72 6b 58 20 74 6f 20 69 67 72 61 70 | .as.ig..#.%%.#.NetworkX.to.igrap |
12bc0 | 68 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 47 20 3d 20 6e 78 2e 64 | h.#.------------------..G.=.nx.d |
12be0 | 65 6e 73 65 5f 67 6e 6d 5f 72 61 6e 64 6f 6d 5f 67 72 61 70 68 28 33 30 2c 20 34 30 2c 20 73 65 | ense_gnm_random_graph(30,.40,.se |
12c00 | 65 64 3d 34 32 29 0a 0a 23 20 6c 61 72 67 65 73 74 20 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 | ed=42)..#.largest.connected.comp |
12c20 | 6f 6e 65 6e 74 0a 63 6f 6d 70 6f 6e 65 6e 74 73 20 3d 20 6e 78 2e 63 6f 6e 6e 65 63 74 65 64 5f | onent.components.=.nx.connected_ |
12c40 | 63 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 0a 6c 61 72 67 65 73 74 5f 63 6f 6d 70 6f 6e 65 6e 74 20 | components(G).largest_component. |
12c60 | 3d 20 6d 61 78 28 63 6f 6d 70 6f 6e 65 6e 74 73 2c 20 6b 65 79 3d 6c 65 6e 29 0a 48 20 3d 20 47 | =.max(components,.key=len).H.=.G |
12c80 | 2e 73 75 62 67 72 61 70 68 28 6c 61 72 67 65 73 74 5f 63 6f 6d 70 6f 6e 65 6e 74 29 0a 0a 23 20 | .subgraph(largest_component)..#. |
12ca0 | 63 6f 6e 76 65 72 74 20 74 6f 20 69 67 72 61 70 68 0a 68 20 3d 20 69 67 2e 47 72 61 70 68 2e 66 | convert.to.igraph.h.=.ig.Graph.f |
12cc0 | 72 6f 6d 5f 6e 65 74 77 6f 72 6b 78 28 48 29 0a 0a 0a 23 20 50 6c 6f 74 20 74 68 65 20 73 61 6d | rom_networkx(H)...#.Plot.the.sam |
12ce0 | 65 20 6e 65 74 77 6f 72 6b 20 77 69 74 68 20 4e 65 74 77 6f 72 6b 58 20 61 6e 64 20 69 67 72 61 | e.network.with.NetworkX.and.igra |
12d00 | 70 68 0a 66 69 67 2c 20 28 61 78 30 2c 20 61 78 31 29 20 3d 20 70 6c 74 2e 73 75 62 70 6c 6f 74 | ph.fig,.(ax0,.ax1).=.plt.subplot |
12d20 | 73 28 6e 72 6f 77 73 3d 31 2c 20 6e 63 6f 6c 73 3d 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 32 2c | s(nrows=1,.ncols=2,.figsize=(12, |
12d40 | 20 36 29 29 0a 0a 23 20 4e 65 74 77 6f 72 6b 58 20 64 72 61 77 0a 61 78 30 2e 73 65 74 5f 74 69 | .6))..#.NetworkX.draw.ax0.set_ti |
12d60 | 74 6c 65 28 22 50 6c 6f 74 20 77 69 74 68 20 4e 65 74 77 6f 72 6b 58 20 64 72 61 77 22 29 0a 6e | tle("Plot.with.NetworkX.draw").n |
12d80 | 78 2e 64 72 61 77 5f 6b 61 6d 61 64 61 5f 6b 61 77 61 69 28 48 2c 20 6e 6f 64 65 5f 73 69 7a 65 | x.draw_kamada_kawai(H,.node_size |
12da0 | 3d 35 30 2c 20 61 78 3d 61 78 30 29 0a 0a 23 20 69 67 72 61 70 68 20 64 72 61 77 0a 61 78 31 2e | =50,.ax=ax0)..#.igraph.draw.ax1. |
12dc0 | 73 65 74 5f 74 69 74 6c 65 28 22 50 6c 6f 74 20 77 69 74 68 20 69 67 72 61 70 68 20 70 6c 6f 74 | set_title("Plot.with.igraph.plot |
12de0 | 22 29 0a 6c 61 79 6f 75 74 20 3d 20 68 2e 6c 61 79 6f 75 74 5f 6b 61 6d 61 64 61 5f 6b 61 77 61 | ").layout.=.h.layout_kamada_kawa |
12e00 | 69 28 29 0a 69 67 2e 70 6c 6f 74 28 68 2c 20 6c 61 79 6f 75 74 3d 6c 61 79 6f 75 74 2c 20 74 61 | i().ig.plot(h,.layout=layout,.ta |
12e20 | 72 67 65 74 3d 61 78 31 29 0a 70 6c 74 2e 61 78 69 73 28 22 6f 66 66 22 29 0a 70 6c 74 2e 73 68 | rget=ax1).plt.axis("off").plt.sh |
12e40 | 6f 77 28 29 0a 0a 0a 23 20 25 25 0a 23 20 69 67 72 61 70 68 20 74 6f 20 4e 65 74 77 6f 72 6b 58 | ow()...#.%%.#.igraph.to.NetworkX |
12e60 | 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 67 20 3d 20 69 67 2e 47 72 | .#.------------------..g.=.ig.Gr |
12e80 | 61 70 68 2e 47 52 47 28 33 30 2c 20 30 2e 32 29 0a 47 20 3d 20 67 2e 74 6f 5f 6e 65 74 77 6f 72 | aph.GRG(30,.0.2).G.=.g.to_networ |
12ea0 | 6b 78 28 29 0a 6e 78 2e 64 72 61 77 28 47 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 35 30 29 0a 70 6c | kx().nx.draw(G,.node_size=50).pl |
12ec0 | 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 26 7b 57 56 1d 30 9c dd 80 07 00 00 80 | t.show().PK........&{WV.0....... |
12ee0 | 07 00 00 18 00 00 00 67 65 6f 73 70 61 74 69 61 6c 2f 70 6c 6f 74 5f 6f 73 6d 6e 78 2e 70 79 22 | .......geospatial/plot_osmnx.py" |
12f00 | 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 70 65 6e | "".========================.Open |
12f20 | 53 74 72 65 65 74 4d 61 70 20 77 69 74 68 20 4f 53 4d 6e 78 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | StreetMap.with.OSMnx.=========== |
12f40 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 | =============..This.example.show |
12f60 | 73 20 68 6f 77 20 74 6f 20 75 73 65 20 4f 53 4d 6e 78 20 74 6f 20 64 6f 77 6e 6c 6f 61 64 20 61 | s.how.to.use.OSMnx.to.download.a |
12f80 | 6e 64 20 6d 6f 64 65 6c 20 61 20 73 74 72 65 65 74 20 6e 65 74 77 6f 72 6b 0a 66 72 6f 6d 20 4f | nd.model.a.street.network.from.O |
12fa0 | 70 65 6e 53 74 72 65 65 74 4d 61 70 2c 20 76 69 73 75 61 6c 69 7a 65 20 63 65 6e 74 72 61 6c 69 | penStreetMap,.visualize.centrali |
12fc0 | 74 79 2c 20 61 6e 64 20 73 61 76 65 20 74 68 65 20 67 72 61 70 68 20 61 73 20 61 20 73 68 61 70 | ty,.and.save.the.graph.as.a.shap |
12fe0 | 65 66 69 6c 65 2c 0a 61 20 47 65 6f 50 61 63 6b 61 67 65 2c 20 6f 72 20 47 72 61 70 68 4d 4c 2e | efile,.a.GeoPackage,.or.GraphML. |
13000 | 0a 0a 4f 53 4d 6e 78 20 69 73 20 61 20 50 79 74 68 6f 6e 20 70 61 63 6b 61 67 65 20 74 6f 20 72 | ..OSMnx.is.a.Python.package.to.r |
13020 | 65 74 72 69 65 76 65 2c 20 6d 6f 64 65 6c 2c 20 61 6e 61 6c 79 7a 65 2c 20 61 6e 64 20 76 69 73 | etrieve,.model,.analyze,.and.vis |
13040 | 75 61 6c 69 7a 65 0a 4f 70 65 6e 53 74 72 65 65 74 4d 61 70 20 73 74 72 65 65 74 20 6e 65 74 77 | ualize.OpenStreetMap.street.netw |
13060 | 6f 72 6b 73 20 61 73 20 4e 65 74 77 6f 72 6b 58 20 4d 75 6c 74 69 44 69 47 72 61 70 68 20 6f 62 | orks.as.NetworkX.MultiDiGraph.ob |
13080 | 6a 65 63 74 73 2e 20 49 74 20 63 61 6e 20 61 6c 73 6f 0a 72 65 74 72 69 65 76 65 20 61 6e 79 20 | jects..It.can.also.retrieve.any. |
130a0 | 6f 74 68 65 72 20 73 70 61 74 69 61 6c 20 64 61 74 61 20 66 72 6f 6d 20 4f 53 4d 20 61 73 20 67 | other.spatial.data.from.OSM.as.g |
130c0 | 65 6f 70 61 6e 64 61 73 20 47 65 6f 44 61 74 61 46 72 61 6d 65 73 2e 20 53 65 65 0a 68 74 74 70 | eopandas.GeoDataFrames..See.http |
130e0 | 73 3a 2f 2f 6f 73 6d 6e 78 2e 72 65 61 64 74 68 65 64 6f 63 73 2e 69 6f 2f 20 66 6f 72 20 4f 53 | s://osmnx.readthedocs.io/.for.OS |
13100 | 4d 6e 78 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 20 75 73 61 67 65 2e 0a 22 22 22 | Mnx.documentation.and.usage..""" |
13120 | 0a 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 6f | ..import.networkx.as.nx.import.o |
13140 | 73 6d 6e 78 20 61 73 20 6f 78 0a 0a 6f 78 2e 63 6f 6e 66 69 67 28 75 73 65 5f 63 61 63 68 65 3d | smnx.as.ox..ox.config(use_cache= |
13160 | 54 72 75 65 2c 20 6c 6f 67 5f 63 6f 6e 73 6f 6c 65 3d 54 72 75 65 29 0a 0a 23 20 64 6f 77 6e 6c | True,.log_console=True)..#.downl |
13180 | 6f 61 64 20 73 74 72 65 65 74 20 6e 65 74 77 6f 72 6b 20 64 61 74 61 20 66 72 6f 6d 20 4f 53 4d | oad.street.network.data.from.OSM |
131a0 | 20 61 6e 64 20 63 6f 6e 73 74 72 75 63 74 20 61 20 4d 75 6c 74 69 44 69 47 72 61 70 68 20 6d 6f | .and.construct.a.MultiDiGraph.mo |
131c0 | 64 65 6c 0a 47 20 3d 20 6f 78 2e 67 72 61 70 68 5f 66 72 6f 6d 5f 70 6f 69 6e 74 28 28 33 37 2e | del.G.=.ox.graph_from_point((37. |
131e0 | 37 39 2c 20 2d 31 32 32 2e 34 31 29 2c 20 64 69 73 74 3d 37 35 30 2c 20 6e 65 74 77 6f 72 6b 5f | 79,.-122.41),.dist=750,.network_ |
13200 | 74 79 70 65 3d 22 64 72 69 76 65 22 29 0a 0a 23 20 69 6d 70 75 74 65 20 65 64 67 65 20 28 64 72 | type="drive")..#.impute.edge.(dr |
13220 | 69 76 69 6e 67 29 20 73 70 65 65 64 73 20 61 6e 64 20 63 61 6c 63 75 6c 61 74 65 20 65 64 67 65 | iving).speeds.and.calculate.edge |
13240 | 20 74 72 61 76 65 72 73 61 6c 20 74 69 6d 65 73 0a 47 20 3d 20 6f 78 2e 61 64 64 5f 65 64 67 65 | .traversal.times.G.=.ox.add_edge |
13260 | 5f 73 70 65 65 64 73 28 47 29 0a 47 20 3d 20 6f 78 2e 61 64 64 5f 65 64 67 65 5f 74 72 61 76 65 | _speeds(G).G.=.ox.add_edge_trave |
13280 | 6c 5f 74 69 6d 65 73 28 47 29 0a 0a 23 20 79 6f 75 20 63 61 6e 20 63 6f 6e 76 65 72 74 20 4d 75 | l_times(G)..#.you.can.convert.Mu |
132a0 | 6c 74 69 44 69 47 72 61 70 68 20 74 6f 2f 66 72 6f 6d 20 67 65 6f 70 61 6e 64 61 73 20 47 65 6f | ltiDiGraph.to/from.geopandas.Geo |
132c0 | 44 61 74 61 46 72 61 6d 65 73 0a 67 64 66 5f 6e 6f 64 65 73 2c 20 67 64 66 5f 65 64 67 65 73 20 | DataFrames.gdf_nodes,.gdf_edges. |
132e0 | 3d 20 6f 78 2e 67 72 61 70 68 5f 74 6f 5f 67 64 66 73 28 47 29 0a 47 20 3d 20 6f 78 2e 67 72 61 | =.ox.graph_to_gdfs(G).G.=.ox.gra |
13300 | 70 68 5f 66 72 6f 6d 5f 67 64 66 73 28 67 64 66 5f 6e 6f 64 65 73 2c 20 67 64 66 5f 65 64 67 65 | ph_from_gdfs(gdf_nodes,.gdf_edge |
13320 | 73 2c 20 67 72 61 70 68 5f 61 74 74 72 73 3d 47 2e 67 72 61 70 68 29 0a 0a 23 20 63 6f 6e 76 65 | s,.graph_attrs=G.graph)..#.conve |
13340 | 72 74 20 4d 75 6c 74 69 44 69 47 72 61 70 68 20 74 6f 20 44 69 47 72 61 70 68 20 74 6f 20 75 73 | rt.MultiDiGraph.to.DiGraph.to.us |
13360 | 65 20 6e 78 2e 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e 74 72 61 6c 69 74 79 20 66 75 6e 63 | e.nx.betweenness_centrality.func |
13380 | 74 69 6f 6e 0a 23 20 63 68 6f 6f 73 65 20 62 65 74 77 65 65 6e 20 70 61 72 61 6c 6c 65 6c 20 65 | tion.#.choose.between.parallel.e |
133a0 | 64 67 65 73 20 62 79 20 6d 69 6e 69 6d 69 7a 69 6e 67 20 74 72 61 76 65 6c 5f 74 69 6d 65 20 61 | dges.by.minimizing.travel_time.a |
133c0 | 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 0a 44 20 3d 20 6f 78 2e 75 74 69 6c 73 5f 67 72 61 70 | ttribute.value.D.=.ox.utils_grap |
133e0 | 68 2e 67 65 74 5f 64 69 67 72 61 70 68 28 47 2c 20 77 65 69 67 68 74 3d 22 74 72 61 76 65 6c 5f | h.get_digraph(G,.weight="travel_ |
13400 | 74 69 6d 65 22 29 0a 0a 23 20 63 61 6c 63 75 6c 61 74 65 20 6e 6f 64 65 20 62 65 74 77 65 65 6e | time")..#.calculate.node.between |
13420 | 6e 65 73 73 20 63 65 6e 74 72 61 6c 69 74 79 2c 20 77 65 69 67 68 74 65 64 20 62 79 20 74 72 61 | ness.centrality,.weighted.by.tra |
13440 | 76 65 6c 20 74 69 6d 65 0a 62 63 20 3d 20 6e 78 2e 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e | vel.time.bc.=.nx.betweenness_cen |
13460 | 74 72 61 6c 69 74 79 28 44 2c 20 77 65 69 67 68 74 3d 22 74 72 61 76 65 6c 5f 74 69 6d 65 22 2c | trality(D,.weight="travel_time", |
13480 | 20 6e 6f 72 6d 61 6c 69 7a 65 64 3d 54 72 75 65 29 0a 6e 78 2e 73 65 74 5f 6e 6f 64 65 5f 61 74 | .normalized=True).nx.set_node_at |
134a0 | 74 72 69 62 75 74 65 73 28 47 2c 20 76 61 6c 75 65 73 3d 62 63 2c 20 6e 61 6d 65 3d 22 62 63 22 | tributes(G,.values=bc,.name="bc" |
134c0 | 29 0a 0a 23 20 70 6c 6f 74 20 74 68 65 20 67 72 61 70 68 2c 20 63 6f 6c 6f 72 69 6e 67 20 6e 6f | )..#.plot.the.graph,.coloring.no |
134e0 | 64 65 73 20 62 79 20 62 65 74 77 65 65 6e 6e 65 73 73 20 63 65 6e 74 72 61 6c 69 74 79 0a 6e 63 | des.by.betweenness.centrality.nc |
13500 | 20 3d 20 6f 78 2e 70 6c 6f 74 2e 67 65 74 5f 6e 6f 64 65 5f 63 6f 6c 6f 72 73 5f 62 79 5f 61 74 | .=.ox.plot.get_node_colors_by_at |
13520 | 74 72 28 47 2c 20 22 62 63 22 2c 20 63 6d 61 70 3d 22 70 6c 61 73 6d 61 22 29 0a 66 69 67 2c 20 | tr(G,."bc",.cmap="plasma").fig,. |
13540 | 61 78 20 3d 20 6f 78 2e 70 6c 6f 74 5f 67 72 61 70 68 28 0a 20 20 20 20 47 2c 20 62 67 63 6f 6c | ax.=.ox.plot_graph(.....G,.bgcol |
13560 | 6f 72 3d 22 6b 22 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 6e 63 2c 20 6e 6f 64 65 5f 73 69 7a 65 | or="k",.node_color=nc,.node_size |
13580 | 3d 35 30 2c 20 65 64 67 65 5f 6c 69 6e 65 77 69 64 74 68 3d 32 2c 20 65 64 67 65 5f 63 6f 6c 6f | =50,.edge_linewidth=2,.edge_colo |
135a0 | 72 3d 22 23 33 33 33 33 33 33 22 0a 29 0a 0a 23 20 73 61 76 65 20 67 72 61 70 68 20 74 6f 20 73 | r="#333333".)..#.save.graph.to.s |
135c0 | 68 61 70 65 66 69 6c 65 2c 20 67 65 6f 70 61 63 6b 61 67 65 2c 20 6f 72 20 67 72 61 70 68 6d 6c | hapefile,.geopackage,.or.graphml |
135e0 | 0a 6f 78 2e 73 61 76 65 5f 67 72 61 70 68 5f 73 68 61 70 65 66 69 6c 65 28 47 2c 20 66 69 6c 65 | .ox.save_graph_shapefile(G,.file |
13600 | 70 61 74 68 3d 22 2e 2f 67 72 61 70 68 5f 73 68 61 70 65 66 69 6c 65 2f 22 29 0a 6f 78 2e 73 61 | path="./graph_shapefile/").ox.sa |
13620 | 76 65 5f 67 72 61 70 68 5f 67 65 6f 70 61 63 6b 61 67 65 28 47 2c 20 66 69 6c 65 70 61 74 68 3d | ve_graph_geopackage(G,.filepath= |
13640 | 22 2e 2f 67 72 61 70 68 2e 67 70 6b 67 22 29 0a 6f 78 2e 73 61 76 65 5f 67 72 61 70 68 6d 6c 28 | "./graph.gpkg").ox.save_graphml( |
13660 | 47 2c 20 66 69 6c 65 70 61 74 68 3d 22 2e 2f 67 72 61 70 68 2e 67 72 61 70 68 6d 6c 22 29 0a 50 | G,.filepath="./graph.graphml").P |
13680 | 4b 03 04 14 00 00 00 00 00 24 7b 57 56 9f de 91 4c 38 0f 00 00 38 0f 00 00 18 00 00 00 67 65 6f | K........${WV...L8...8.......geo |
136a0 | 73 70 61 74 69 61 6c 2f 70 6c 6f 74 5f 6c 69 6e 65 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d | spatial/plot_lines.py""".======= |
136c0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 47 72 61 70 68 73 20 66 72 6f 6d 20 | ===================.Graphs.from. |
136e0 | 61 20 73 65 74 20 6f 66 20 6c 69 6e 65 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | a.set.of.lines.================= |
13700 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 73 20 68 6f | =========..This.example.shows.ho |
13720 | 77 20 74 6f 20 62 75 69 6c 64 20 61 20 67 72 61 70 68 20 66 72 6f 6d 20 61 20 73 65 74 20 6f 66 | w.to.build.a.graph.from.a.set.of |
13740 | 20 67 65 6f 67 72 61 70 68 69 63 20 6c 69 6e 65 73 0a 28 73 6f 6d 65 74 69 6d 65 73 20 63 61 6c | .geographic.lines.(sometimes.cal |
13760 | 6c 65 64 20 22 6c 69 6e 65 73 74 72 69 6e 67 73 22 29 20 75 73 69 6e 67 20 47 65 6f 50 61 6e 64 | led."linestrings").using.GeoPand |
13780 | 61 73 2c 20 6d 6f 6d 65 70 79 20 61 6e 64 20 61 6c 74 65 72 6e 61 74 69 76 65 6c 79 0a 50 79 53 | as,.momepy.and.alternatively.PyS |
137a0 | 41 4c 2e 20 57 65 27 6c 6c 20 70 6c 6f 74 20 73 6f 6d 65 20 72 69 76 65 72 73 20 61 6e 64 20 73 | AL..We'll.plot.some.rivers.and.s |
137c0 | 74 72 65 65 74 73 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 69 72 20 67 72 61 70 68 73 20 | treets,.as.well.as.their.graphs. |
137e0 | 66 6f 72 6d 65 64 0a 66 72 6f 6d 20 74 68 65 20 73 65 67 6d 65 6e 74 73 2e 0a 0a 54 68 65 72 65 | formed.from.the.segments...There |
13800 | 20 61 72 65 20 67 65 6e 65 72 61 6c 6c 79 20 74 77 6f 20 77 61 79 73 20 6f 66 20 63 72 65 61 74 | .are.generally.two.ways.of.creat |
13820 | 69 6e 67 20 67 72 61 70 68 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 6c 69 6e 65 20 67 65 6f 6d 65 | ing.graph.object.from.line.geome |
13840 | 74 72 79 2e 0a 4c 65 74 27 73 20 75 73 65 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 73 74 72 | try..Let's.use.an.example.of.str |
13860 | 65 65 74 20 6e 65 74 77 6f 72 6b 20 74 6f 20 69 6c 6c 75 73 74 72 61 74 65 20 62 6f 74 68 3a 0a | eet.network.to.illustrate.both:. |
13880 | 0a 54 68 65 20 66 69 72 73 74 20 77 61 79 20 69 73 20 61 20 73 6f 2d 63 61 6c 6c 65 64 20 70 72 | .The.first.way.is.a.so-called.pr |
138a0 | 69 6d 61 6c 20 61 70 70 72 6f 61 63 68 2c 20 77 68 65 72 65 20 65 61 63 68 20 69 6e 74 65 72 73 | imal.approach,.where.each.inters |
138c0 | 65 63 74 69 6f 6e 20 69 73 0a 61 20 6e 6f 64 65 20 61 6e 64 20 65 61 63 68 20 6c 69 6e 65 73 74 | ection.is.a.node.and.each.linest |
138e0 | 72 69 6e 67 20 73 65 67 6d 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6e 67 20 74 77 6f 20 69 6e 74 65 | ring.segment.connecting.two.inte |
13900 | 72 73 65 63 74 69 6f 6e 73 20 69 73 20 61 6e 20 65 64 67 65 2e 0a 0a 54 68 65 20 73 65 63 6f 6e | rsections.is.an.edge...The.secon |
13920 | 64 20 77 61 79 20 69 73 20 73 6f 2d 63 61 6c 6c 65 64 20 64 75 61 6c 20 61 70 70 72 6f 61 63 68 | d.way.is.so-called.dual.approach |
13940 | 2c 20 77 68 65 72 65 20 65 61 63 68 20 6c 69 6e 65 20 69 73 20 61 20 6e 6f 64 65 20 61 6e 64 0a | ,.where.each.line.is.a.node.and. |
13960 | 69 6e 74 65 72 73 65 63 74 69 6f 6e 20 74 6f 70 6f 6c 6f 67 79 20 69 73 20 74 75 72 6e 65 64 20 | intersection.topology.is.turned. |
13980 | 69 6e 74 6f 20 65 64 67 65 73 2e 20 4f 6e 65 20 6f 66 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 68 | into.edges..One.of.the.options.h |
139a0 | 6f 77 20 74 68 69 73 20 69 73 0a 75 73 65 64 20 66 6f 72 20 73 74 72 65 65 74 20 6e 65 74 77 6f | ow.this.is.used.for.street.netwo |
139c0 | 72 6b 20 61 6e 61 6c 79 73 69 73 20 69 73 20 61 6e 20 61 6e 67 75 6c 61 72 20 61 6e 61 6c 79 73 | rk.analysis.is.an.angular.analys |
139e0 | 69 73 2c 20 77 68 65 72 65 20 79 6f 75 72 20 72 6f 75 74 69 6e 67 0a 69 73 20 77 65 69 67 68 74 | is,.where.your.routing.is.weight |
13a00 | 65 64 20 76 69 61 20 61 6e 67 6c 65 73 20 62 65 74 77 65 65 6e 20 73 74 72 65 65 74 20 73 65 67 | ed.via.angles.between.street.seg |
13a20 | 6d 65 6e 74 73 20 6f 6e 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 73 2e 0a 0a 57 65 20 77 69 6c 6c | ments.on.intersections...We.will |
13a40 | 20 75 73 65 20 47 65 6f 50 61 6e 64 61 73 20 74 6f 20 72 65 61 64 20 73 70 61 74 69 61 6c 20 64 | .use.GeoPandas.to.read.spatial.d |
13a60 | 61 74 61 20 61 6e 64 20 6d 6f 6d 65 70 79 20 74 6f 20 67 65 6e 65 72 61 74 65 20 66 69 72 73 74 | ata.and.momepy.to.generate.first |
13a80 | 0a 70 72 69 6d 61 6c 20 67 72 61 70 68 20 61 6e 64 20 74 68 65 6e 20 64 75 61 6c 20 67 72 61 70 | .primal.graph.and.then.dual.grap |
13aa0 | 68 2e 20 46 75 72 74 68 65 72 6d 6f 72 65 2c 20 77 65 20 77 69 6c 6c 20 75 73 65 20 50 79 53 41 | h..Furthermore,.we.will.use.PySA |
13ac0 | 4c 20 74 6f 0a 69 6c 6c 75 73 74 72 61 74 65 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 77 | L.to.illustrate.an.alternative.w |
13ae0 | 61 79 20 6f 66 20 63 72 65 61 74 69 6e 67 20 72 61 77 20 64 75 61 6c 20 67 72 61 70 68 2e 0a 22 | ay.of.creating.raw.dual.graph.." |
13b00 | 22 22 0a 0a 0a 69 6d 70 6f 72 74 20 67 65 6f 70 61 6e 64 61 73 0a 69 6d 70 6f 72 74 20 6d 61 74 | ""...import.geopandas.import.mat |
13b20 | 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6d 6f 6d | plotlib.pyplot.as.plt.import.mom |
13b40 | 65 70 79 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 66 72 6f 6d 20 63 | epy.import.networkx.as.nx.from.c |
13b60 | 6f 6e 74 65 78 74 69 6c 79 20 69 6d 70 6f 72 74 20 61 64 64 5f 62 61 73 65 6d 61 70 0a 66 72 6f | ontextily.import.add_basemap.fro |
13b80 | 6d 20 6c 69 62 70 79 73 61 6c 20 69 6d 70 6f 72 74 20 77 65 69 67 68 74 73 0a 0a 23 20 25 25 0a | m.libpysal.import.weights..#.%%. |
13ba0 | 23 20 52 65 61 64 20 69 6e 20 65 78 61 6d 70 6c 65 20 72 69 76 65 72 20 67 65 6f 6d 65 74 72 79 | #.Read.in.example.river.geometry |
13bc0 | 20 66 72 6f 6d 20 47 65 6f 4a 53 4f 4e 2e 20 53 6f 75 72 63 65 20 6f 66 20 65 78 61 6d 70 6c 65 | .from.GeoJSON..Source.of.example |
13be0 | 20 64 61 74 61 3a 0a 23 20 68 74 74 70 73 3a 2f 2f 64 6f 69 2e 6f 72 67 2f 31 30 2e 33 33 39 30 | .data:.#.https://doi.org/10.3390 |
13c00 | 2f 64 61 74 61 35 30 31 30 30 30 38 20 28 4e 69 63 6f 6c 61 73 20 43 61 64 69 65 75 78 29 0a 72 | /data5010008.(Nicolas.Cadieux).r |
13c20 | 69 76 65 72 73 20 3d 20 67 65 6f 70 61 6e 64 61 73 2e 72 65 61 64 5f 66 69 6c 65 28 22 72 69 76 | ivers.=.geopandas.read_file("riv |
13c40 | 65 72 73 2e 67 65 6f 6a 73 6f 6e 22 29 0a 0a 23 20 25 25 0a 23 20 43 6f 6e 73 74 72 75 63 74 20 | ers.geojson")..#.%%.#.Construct. |
13c60 | 74 68 65 20 70 72 69 6d 61 6c 20 67 72 61 70 68 2e 20 6d 6f 6d 65 70 79 20 61 75 74 6f 6d 61 74 | the.primal.graph..momepy.automat |
13c80 | 69 63 61 6c 6c 79 20 70 72 65 73 65 72 76 65 73 20 61 6c 6c 20 61 74 74 72 69 62 75 74 65 73 0a | ically.preserves.all.attributes. |
13ca0 | 23 20 66 72 6f 6d 20 47 65 6f 44 61 74 61 46 72 61 6d 65 20 61 6e 64 20 73 74 6f 72 65 73 20 74 | #.from.GeoDataFrame.and.stores.t |
13cc0 | 68 65 6e 20 61 73 20 65 64 67 65 20 61 74 74 72 69 62 75 74 65 73 2e 0a 47 20 3d 20 6d 6f 6d 65 | hen.as.edge.attributes..G.=.mome |
13ce0 | 70 79 2e 67 64 66 5f 74 6f 5f 6e 78 28 72 69 76 65 72 73 2c 20 61 70 70 72 6f 61 63 68 3d 22 70 | py.gdf_to_nx(rivers,.approach="p |
13d00 | 72 69 6d 61 6c 22 29 0a 0a 23 20 25 25 0a 23 20 45 61 63 68 20 6e 6f 64 65 20 69 73 20 65 6e 63 | rimal")..#.%%.#.Each.node.is.enc |
13d20 | 6f 64 65 64 20 62 79 20 69 74 73 20 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 77 68 69 63 68 20 61 | oded.by.its.coordinates,.which.a |
13d40 | 6c 6c 6f 77 73 20 75 73 20 74 6f 20 75 73 65 20 74 68 65 6d 0a 23 20 69 6e 20 70 6c 6f 74 74 69 | llows.us.to.use.them.#.in.plotti |
13d60 | 6e 67 2e 0a 70 6f 73 69 74 69 6f 6e 73 20 3d 20 7b 6e 3a 20 5b 6e 5b 30 5d 2c 20 6e 5b 31 5d 5d | ng..positions.=.{n:.[n[0],.n[1]] |
13d80 | 20 66 6f 72 20 6e 20 69 6e 20 6c 69 73 74 28 47 2e 6e 6f 64 65 73 29 7d 0a 0a 23 20 50 6c 6f 74 | .for.n.in.list(G.nodes)}..#.Plot |
13da0 | 0a 66 2c 20 61 78 20 3d 20 70 6c 74 2e 73 75 62 70 6c 6f 74 73 28 31 2c 20 32 2c 20 66 69 67 73 | .f,.ax.=.plt.subplots(1,.2,.figs |
13dc0 | 69 7a 65 3d 28 31 32 2c 20 36 29 2c 20 73 68 61 72 65 78 3d 54 72 75 65 2c 20 73 68 61 72 65 79 | ize=(12,.6),.sharex=True,.sharey |
13de0 | 3d 54 72 75 65 29 0a 72 69 76 65 72 73 2e 70 6c 6f 74 28 63 6f 6c 6f 72 3d 22 6b 22 2c 20 61 78 | =True).rivers.plot(color="k",.ax |
13e00 | 3d 61 78 5b 30 5d 29 0a 66 6f 72 20 69 2c 20 66 61 63 65 74 20 69 6e 20 65 6e 75 6d 65 72 61 74 | =ax[0]).for.i,.facet.in.enumerat |
13e20 | 65 28 61 78 29 3a 0a 20 20 20 20 66 61 63 65 74 2e 73 65 74 5f 74 69 74 6c 65 28 28 22 52 69 76 | e(ax):.....facet.set_title(("Riv |
13e40 | 65 72 73 22 2c 20 22 47 72 61 70 68 22 29 5b 69 5d 29 0a 20 20 20 20 66 61 63 65 74 2e 61 78 69 | ers",."Graph")[i]).....facet.axi |
13e60 | 73 28 22 6f 66 66 22 29 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 69 74 69 6f 6e 73 2c 20 61 | s("off").nx.draw(G,.positions,.a |
13e80 | 78 3d 61 78 5b 31 5d 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 35 29 0a 0a 23 20 25 25 0a 23 20 4f 6e | x=ax[1],.node_size=5)..#.%%.#.On |
13ea0 | 63 65 20 77 65 20 66 69 6e 69 73 68 20 67 72 61 70 68 2d 62 61 73 65 64 20 61 6e 61 6c 79 73 69 | ce.we.finish.graph-based.analysi |
13ec0 | 73 2c 20 77 65 20 63 61 6e 20 63 6f 6e 76 65 72 74 20 67 72 61 70 68 20 62 61 63 6b 0a 23 20 74 | s,.we.can.convert.graph.back.#.t |
13ee0 | 6f 20 47 65 6f 44 61 74 61 46 72 61 6d 65 73 2e 20 6d 6f 6d 65 70 79 20 63 61 6e 20 72 65 74 75 | o.GeoDataFrames..momepy.can.retu |
13f00 | 72 6e 20 6e 6f 64 65 73 20 61 73 20 70 6f 69 6e 74 20 67 65 6f 6d 65 74 72 79 2c 0a 23 20 65 64 | rn.nodes.as.point.geometry,.#.ed |
13f20 | 67 65 73 20 61 73 20 6f 72 69 67 69 6e 61 6c 20 6c 69 6e 65 20 67 65 6f 6d 65 74 72 79 20 61 6e | ges.as.original.line.geometry.an |
13f40 | 64 20 57 20 6f 62 6a 65 63 74 2c 20 77 68 69 63 68 20 69 73 20 50 79 53 41 4c 0a 23 20 73 70 61 | d.W.object,.which.is.PySAL.#.spa |
13f60 | 74 69 61 6c 20 77 65 69 67 68 74 73 20 6d 61 74 72 69 78 20 65 6e 63 6f 64 69 6e 67 20 6f 72 69 | tial.weights.matrix.encoding.ori |
13f80 | 67 69 6e 61 6c 20 67 72 61 70 68 20 73 6f 20 77 65 20 63 61 6e 20 75 73 65 0a 23 20 69 74 20 77 | ginal.graph.so.we.can.use.#.it.w |
13fa0 | 69 74 68 20 6e 6f 64 65 20 47 65 6f 44 61 74 61 46 72 61 6d 65 2e 0a 6e 6f 64 65 73 2c 20 65 64 | ith.node.GeoDataFrame..nodes,.ed |
13fc0 | 67 65 73 2c 20 57 20 3d 20 6d 6f 6d 65 70 79 2e 6e 78 5f 74 6f 5f 67 64 66 28 47 2c 20 73 70 61 | ges,.W.=.momepy.nx_to_gdf(G,.spa |
13fe0 | 74 69 61 6c 5f 77 65 69 67 68 74 73 3d 54 72 75 65 29 0a 0a 0a 23 20 52 65 61 64 20 69 6e 20 65 | tial_weights=True)...#.Read.in.e |
14000 | 78 61 6d 70 6c 65 20 73 74 72 65 65 74 20 6e 65 74 77 6f 72 6b 20 66 72 6f 6d 20 47 65 6f 50 61 | xample.street.network.from.GeoPa |
14020 | 63 6b 61 67 65 0a 73 74 72 65 65 74 73 20 3d 20 67 65 6f 70 61 6e 64 61 73 2e 72 65 61 64 5f 66 | ckage.streets.=.geopandas.read_f |
14040 | 69 6c 65 28 6d 6f 6d 65 70 79 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 70 61 74 68 28 22 62 75 | ile(momepy.datasets.get_path("bu |
14060 | 62 65 6e 65 63 22 29 2c 20 6c 61 79 65 72 3d 22 73 74 72 65 65 74 73 22 29 0a 0a 23 20 43 6f 6e | benec"),.layer="streets")..#.Con |
14080 | 73 74 72 75 63 74 20 74 68 65 20 70 72 69 6d 61 6c 20 67 72 61 70 68 0a 47 5f 70 72 69 6d 61 6c | struct.the.primal.graph.G_primal |
140a0 | 20 3d 20 6d 6f 6d 65 70 79 2e 67 64 66 5f 74 6f 5f 6e 78 28 73 74 72 65 65 74 73 2c 20 61 70 70 | .=.momepy.gdf_to_nx(streets,.app |
140c0 | 72 6f 61 63 68 3d 22 70 72 69 6d 61 6c 22 29 0a 0a 23 20 50 6c 6f 74 0a 66 2c 20 61 78 20 3d 20 | roach="primal")..#.Plot.f,.ax.=. |
140e0 | 70 6c 74 2e 73 75 62 70 6c 6f 74 73 28 31 2c 20 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 32 2c 20 | plt.subplots(1,.2,.figsize=(12,. |
14100 | 36 29 2c 20 73 68 61 72 65 78 3d 54 72 75 65 2c 20 73 68 61 72 65 79 3d 54 72 75 65 29 0a 73 74 | 6),.sharex=True,.sharey=True).st |
14120 | 72 65 65 74 73 2e 70 6c 6f 74 28 63 6f 6c 6f 72 3d 22 6b 22 2c 20 61 78 3d 61 78 5b 30 5d 29 0a | reets.plot(color="k",.ax=ax[0]). |
14140 | 66 6f 72 20 69 2c 20 66 61 63 65 74 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 61 78 29 3a 0a 20 | for.i,.facet.in.enumerate(ax):.. |
14160 | 20 20 20 66 61 63 65 74 2e 73 65 74 5f 74 69 74 6c 65 28 28 22 53 74 72 65 65 74 73 22 2c 20 22 | ...facet.set_title(("Streets",." |
14180 | 47 72 61 70 68 22 29 5b 69 5d 29 0a 20 20 20 20 66 61 63 65 74 2e 61 78 69 73 28 22 6f 66 66 22 | Graph")[i]).....facet.axis("off" |
141a0 | 29 0a 20 20 20 20 61 64 64 5f 62 61 73 65 6d 61 70 28 66 61 63 65 74 29 0a 6e 78 2e 64 72 61 77 | ).....add_basemap(facet).nx.draw |
141c0 | 28 0a 20 20 20 20 47 5f 70 72 69 6d 61 6c 2c 20 7b 6e 3a 20 5b 6e 5b 30 5d 2c 20 6e 5b 31 5d 5d | (.....G_primal,.{n:.[n[0],.n[1]] |
141e0 | 20 66 6f 72 20 6e 20 69 6e 20 6c 69 73 74 28 47 5f 70 72 69 6d 61 6c 2e 6e 6f 64 65 73 29 7d 2c | .for.n.in.list(G_primal.nodes)}, |
14200 | 20 61 78 3d 61 78 5b 31 5d 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 35 30 0a 29 0a 0a 23 20 25 25 0a | .ax=ax[1],.node_size=50.)..#.%%. |
14220 | 23 20 43 6f 6e 73 74 72 75 63 74 20 74 68 65 20 64 75 61 6c 20 67 72 61 70 68 2e 20 6d 6f 6d 65 | #.Construct.the.dual.graph..mome |
14240 | 70 79 20 77 69 6c 6c 20 73 74 6f 72 65 20 72 6f 77 20 61 74 74 72 69 62 75 74 65 73 20 61 73 20 | py.will.store.row.attributes.as. |
14260 | 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 73 20 61 6e 64 0a 23 20 61 75 74 6f 6d 61 74 69 63 61 | node.attributes.and.#.automatica |
14280 | 6c 6c 79 20 6d 65 61 73 75 72 65 73 20 61 6e 67 6c 65 20 62 65 74 77 65 65 6e 20 6c 69 6e 65 73 | lly.measures.angle.between.lines |
142a0 | 2e 0a 47 5f 64 75 61 6c 20 3d 20 6d 6f 6d 65 70 79 2e 67 64 66 5f 74 6f 5f 6e 78 28 73 74 72 65 | ..G_dual.=.momepy.gdf_to_nx(stre |
142c0 | 65 74 73 2c 20 61 70 70 72 6f 61 63 68 3d 22 64 75 61 6c 22 29 0a 0a 23 20 50 6c 6f 74 0a 66 2c | ets,.approach="dual")..#.Plot.f, |
142e0 | 20 61 78 20 3d 20 70 6c 74 2e 73 75 62 70 6c 6f 74 73 28 31 2c 20 32 2c 20 66 69 67 73 69 7a 65 | .ax.=.plt.subplots(1,.2,.figsize |
14300 | 3d 28 31 32 2c 20 36 29 2c 20 73 68 61 72 65 78 3d 54 72 75 65 2c 20 73 68 61 72 65 79 3d 54 72 | =(12,.6),.sharex=True,.sharey=Tr |
14320 | 75 65 29 0a 73 74 72 65 65 74 73 2e 70 6c 6f 74 28 63 6f 6c 6f 72 3d 22 6b 22 2c 20 61 78 3d 61 | ue).streets.plot(color="k",.ax=a |
14340 | 78 5b 30 5d 29 0a 66 6f 72 20 69 2c 20 66 61 63 65 74 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 | x[0]).for.i,.facet.in.enumerate( |
14360 | 61 78 29 3a 0a 20 20 20 20 66 61 63 65 74 2e 73 65 74 5f 74 69 74 6c 65 28 28 22 53 74 72 65 65 | ax):.....facet.set_title(("Stree |
14380 | 74 73 22 2c 20 22 47 72 61 70 68 22 29 5b 69 5d 29 0a 20 20 20 20 66 61 63 65 74 2e 61 78 69 73 | ts",."Graph")[i]).....facet.axis |
143a0 | 28 22 6f 66 66 22 29 0a 20 20 20 20 61 64 64 5f 62 61 73 65 6d 61 70 28 66 61 63 65 74 29 0a 6e | ("off").....add_basemap(facet).n |
143c0 | 78 2e 64 72 61 77 28 47 5f 64 75 61 6c 2c 20 7b 6e 3a 20 5b 6e 5b 30 5d 2c 20 6e 5b 31 5d 5d 20 | x.draw(G_dual,.{n:.[n[0],.n[1]]. |
143e0 | 66 6f 72 20 6e 20 69 6e 20 6c 69 73 74 28 47 5f 64 75 61 6c 2e 6e 6f 64 65 73 29 7d 2c 20 61 78 | for.n.in.list(G_dual.nodes)},.ax |
14400 | 3d 61 78 5b 31 5d 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 35 30 29 0a 70 6c 74 2e 73 68 6f 77 28 29 | =ax[1],.node_size=50).plt.show() |
14420 | 0a 0a 23 20 43 6f 6e 76 65 72 74 20 64 75 61 6c 20 67 72 61 70 68 20 62 61 63 6b 20 74 6f 20 47 | ..#.Convert.dual.graph.back.to.G |
14440 | 65 6f 44 61 74 61 46 72 61 6d 65 2e 20 52 65 74 75 72 6e 73 20 6f 6e 6c 79 20 6f 72 69 67 69 6e | eoDataFrame..Returns.only.origin |
14460 | 61 6c 20 6c 69 6e 65 20 67 65 6f 6d 65 74 72 79 2e 0a 6c 69 6e 65 73 20 3d 20 6d 6f 6d 65 70 79 | al.line.geometry..lines.=.momepy |
14480 | 2e 6e 78 5f 74 6f 5f 67 64 66 28 47 5f 64 75 61 6c 29 0a 0a 23 20 25 25 0a 23 20 57 65 20 63 61 | .nx_to_gdf(G_dual)..#.%%.#.We.ca |
144a0 | 6e 20 61 6c 73 6f 20 63 6f 6e 73 74 72 75 63 74 20 74 68 65 20 64 75 61 6c 20 67 72 61 70 68 20 | n.also.construct.the.dual.graph. |
144c0 | 75 73 69 6e 67 20 50 79 53 41 4c 2e 20 4e 6f 74 65 20 74 68 61 74 20 69 74 20 6f 6e 6c 79 20 65 | using.PySAL..Note.that.it.only.e |
144e0 | 6e 63 6f 64 65 73 0a 23 20 72 65 6c 61 74 69 6f 6e 73 68 69 70 20 62 65 74 77 65 65 6e 20 67 65 | ncodes.#.relationship.between.ge |
14500 | 6f 6d 65 74 72 69 65 73 20 61 6e 64 20 64 6f 20 6e 6f 74 20 61 6e 79 20 73 74 6f 72 65 20 61 74 | ometries.and.do.not.any.store.at |
14520 | 74 72 69 62 75 74 65 73 2e 20 48 6f 77 65 76 65 72 2c 20 69 74 20 69 73 0a 23 20 73 69 67 6e 69 | tributes..However,.it.is.#.signi |
14540 | 66 69 63 61 6e 74 6c 79 20 66 61 73 74 65 72 20 74 68 61 6e 20 6d 6f 6d 65 70 79 2e 67 64 66 5f | ficantly.faster.than.momepy.gdf_ |
14560 | 74 6f 5f 6e 78 28 29 2e 0a 23 20 43 72 65 61 74 65 20 50 79 53 41 4c 20 77 65 69 67 68 74 73 20 | to_nx()..#.Create.PySAL.weights. |
14580 | 28 67 72 61 70 68 29 2e 0a 57 20 3d 20 77 65 69 67 68 74 73 2e 51 75 65 65 6e 2e 66 72 6f 6d 5f | (graph)..W.=.weights.Queen.from_ |
145a0 | 64 61 74 61 66 72 61 6d 65 28 73 74 72 65 65 74 73 29 0a 0a 23 20 43 6f 6e 76 65 72 74 20 74 68 | dataframe(streets)..#.Convert.th |
145c0 | 65 20 67 72 61 70 68 20 74 6f 20 6e 65 74 77 6f 72 6b 78 0a 47 5f 64 75 61 6c 20 3d 20 57 2e 74 | e.graph.to.networkx.G_dual.=.W.t |
145e0 | 6f 5f 6e 65 74 77 6f 72 6b 78 28 29 0a 50 4b 03 04 14 00 00 00 00 00 2c 7b 57 56 ae 9b 92 8f cc | o_networkx().PK........,{WV..... |
14600 | 08 00 00 cc 08 00 00 1b 00 00 00 67 65 6f 73 70 61 74 69 61 6c 2f 70 6c 6f 74 5f 70 6f 6c 79 67 | ...........geospatial/plot_polyg |
14620 | 6f 6e 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 47 | ons.py""".====================.G |
14640 | 72 61 70 68 73 20 66 72 6f 6d 20 50 6f 6c 79 67 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | raphs.from.Polygons.============ |
14660 | 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 73 20 68 6f 77 | ========..This.example.shows.how |
14680 | 20 74 6f 20 62 75 69 6c 64 20 61 20 67 72 61 70 68 20 66 72 6f 6d 20 61 20 73 65 74 20 6f 66 20 | .to.build.a.graph.from.a.set.of. |
146a0 | 70 6f 6c 79 67 6f 6e 73 0a 75 73 69 6e 67 20 50 79 53 41 4c 20 61 6e 64 20 67 65 6f 70 61 6e 64 | polygons.using.PySAL.and.geopand |
146c0 | 61 73 2e 20 57 65 27 6c 6c 20 66 6f 63 75 73 20 6f 6e 20 74 68 65 20 51 75 65 65 6e 20 63 6f 6e | as..We'll.focus.on.the.Queen.con |
146e0 | 74 69 67 75 69 74 79 20 0a 67 72 61 70 68 2c 20 62 75 74 20 63 6f 6e 73 74 72 75 63 74 6f 72 73 | tiguity..graph,.but.constructors |
14700 | 20 61 72 65 20 61 6c 73 6f 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 52 6f 6f 6b 20 63 6f 6e 74 | .are.also.provided.for.Rook.cont |
14720 | 69 67 75 69 74 79 2c 20 0a 61 73 20 77 65 6c 6c 20 61 73 20 6f 74 68 65 72 20 6b 69 6e 64 73 20 | iguity,..as.well.as.other.kinds. |
14740 | 6f 66 20 67 72 61 70 68 73 20 66 72 6f 6d 20 74 68 65 20 70 6f 6c 79 67 6f 6e 20 63 65 6e 74 72 | of.graphs.from.the.polygon.centr |
14760 | 6f 69 64 73 2e 20 0a 22 22 22 0a 0a 66 72 6f 6d 20 6c 69 62 70 79 73 61 6c 20 69 6d 70 6f 72 74 | oids..."""..from.libpysal.import |
14780 | 20 77 65 69 67 68 74 73 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f | .weights.import.matplotlib.pyplo |
147a0 | 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 | t.as.plt.import.networkx.as.nx.i |
147c0 | 6d 70 6f 72 74 20 67 65 6f 70 61 6e 64 61 73 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 | mport.geopandas.import.numpy.as. |
147e0 | 6e 70 0a 0a 23 20 72 65 61 64 20 69 6e 20 65 78 61 6d 70 6c 65 20 64 61 74 61 20 66 72 6f 6d 20 | np..#.read.in.example.data.from. |
14800 | 67 65 6f 6a 73 6f 6e 2e 20 47 65 6f 4a 53 4f 4e 20 69 73 20 61 20 66 69 6c 65 20 66 6f 72 6d 61 | geojson..GeoJSON.is.a.file.forma |
14820 | 74 0a 23 20 66 6f 72 20 65 6e 63 6f 64 69 6e 67 20 67 65 6f 67 72 61 70 68 69 63 20 64 61 74 61 | t.#.for.encoding.geographic.data |
14840 | 20 62 61 73 65 64 20 6f 6e 20 4a 53 4f 4e 2e 20 49 74 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 | .based.on.JSON..It.is.useful.for |
14860 | 0a 23 20 70 72 65 73 65 6e 74 69 6e 67 20 67 65 6f 67 72 61 70 68 69 63 20 64 61 74 61 20 6f 6e | .#.presenting.geographic.data.on |
14880 | 20 74 68 65 20 77 65 62 2c 20 61 6e 64 20 69 73 20 69 6e 63 72 65 61 73 69 6e 67 6c 79 0a 23 20 | .the.web,.and.is.increasingly.#. |
148a0 | 75 73 65 64 20 61 73 20 61 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 67 65 6f 67 72 61 | used.as.a.file.format.for.geogra |
148c0 | 70 68 69 63 20 64 61 74 61 2e 0a 66 69 6c 65 70 61 74 68 20 3d 20 22 6e 75 74 73 31 2e 67 65 6f | phic.data..filepath.=."nuts1.geo |
148e0 | 6a 73 6f 6e 22 0a 65 75 72 6f 70 65 61 6e 5f 72 65 67 69 6f 6e 73 20 3d 20 67 65 6f 70 61 6e 64 | json".european_regions.=.geopand |
14900 | 61 73 2e 72 65 61 64 5f 66 69 6c 65 28 66 69 6c 65 70 61 74 68 29 0a 0a 23 20 65 78 74 72 61 63 | as.read_file(filepath)..#.extrac |
14920 | 74 20 74 68 65 20 63 65 6e 74 72 6f 69 64 73 20 66 6f 72 20 63 6f 6e 6e 65 63 74 69 6e 67 20 74 | t.the.centroids.for.connecting.t |
14940 | 68 65 20 72 65 67 69 6f 6e 73 2c 20 77 68 69 63 68 20 69 73 0a 23 20 74 68 65 20 61 76 65 72 61 | he.regions,.which.is.#.the.avera |
14960 | 67 65 20 6f 66 20 74 68 65 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 74 68 61 74 20 64 65 66 69 6e | ge.of.the.coordinates.that.defin |
14980 | 65 20 74 68 65 20 70 6f 6c 79 67 6f 6e 27 73 20 62 6f 75 6e 64 61 72 79 0a 63 65 6e 74 72 6f 69 | e.the.polygon's.boundary.centroi |
149a0 | 64 73 20 3d 20 6e 70 2e 63 6f 6c 75 6d 6e 5f 73 74 61 63 6b 28 28 65 75 72 6f 70 65 61 6e 5f 72 | ds.=.np.column_stack((european_r |
149c0 | 65 67 69 6f 6e 73 2e 63 65 6e 74 72 6f 69 64 2e 78 2c 20 65 75 72 6f 70 65 61 6e 5f 72 65 67 69 | egions.centroid.x,.european_regi |
149e0 | 6f 6e 73 2e 63 65 6e 74 72 6f 69 64 2e 79 29 29 0a 0a 23 20 63 6f 6e 73 74 72 75 63 74 20 74 68 | ons.centroid.y))..#.construct.th |
14a00 | 65 20 22 51 75 65 65 6e 22 20 61 64 6a 61 63 65 6e 63 79 20 67 72 61 70 68 2e 20 49 6e 20 67 65 | e."Queen".adjacency.graph..In.ge |
14a20 | 6f 67 72 61 70 68 69 63 61 6c 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 0a 23 20 74 68 65 20 22 | ographical.applications,.#.the." |
14a40 | 51 75 65 65 6e 22 20 61 64 6a 61 63 65 6e 63 79 20 67 72 61 70 68 20 63 6f 6e 73 69 64 65 72 73 | Queen".adjacency.graph.considers |
14a60 | 20 74 77 6f 20 70 6f 6c 79 67 6f 6e 73 20 61 73 20 63 6f 6e 6e 65 63 74 65 64 20 69 66 0a 23 20 | .two.polygons.as.connected.if.#. |
14a80 | 74 68 65 79 20 73 68 61 72 65 20 61 20 73 69 6e 67 6c 65 20 70 6f 69 6e 74 20 6f 6e 20 74 68 65 | they.share.a.single.point.on.the |
14aa0 | 69 72 20 62 6f 75 6e 64 61 72 79 2e 20 54 68 69 73 20 69 73 20 61 6e 20 61 6e 61 6c 6f 67 75 65 | ir.boundary..This.is.an.analogue |
14ac0 | 20 74 6f 0a 23 20 74 68 65 20 22 4d 6f 6f 72 65 22 20 6e 65 69 67 68 62 6f 72 68 6f 6f 64 20 6e | .to.#.the."Moore".neighborhood.n |
14ae0 | 69 6e 65 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 63 65 6c 6c 73 20 69 6e 20 61 20 72 65 67 75 6c | ine.surrounding.cells.in.a.regul |
14b00 | 61 72 20 67 72 69 64 2e 0a 71 75 65 65 6e 20 3d 20 77 65 69 67 68 74 73 2e 51 75 65 65 6e 2e 66 | ar.grid..queen.=.weights.Queen.f |
14b20 | 72 6f 6d 5f 64 61 74 61 66 72 61 6d 65 28 65 75 72 6f 70 65 61 6e 5f 72 65 67 69 6f 6e 73 29 0a | rom_dataframe(european_regions). |
14b40 | 0a 23 20 54 68 65 6e 2c 20 77 65 20 63 61 6e 20 63 6f 6e 76 65 72 74 20 74 68 65 20 67 72 61 70 | .#.Then,.we.can.convert.the.grap |
14b60 | 68 20 74 6f 20 6e 65 74 77 6f 72 6b 78 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 20 74 68 65 0a 23 | h.to.networkx.object.using.the.# |
14b80 | 20 2e 74 6f 5f 6e 65 74 77 6f 72 6b 78 28 29 20 6d 65 74 68 6f 64 2e 0a 67 72 61 70 68 20 3d 20 | ..to_networkx().method..graph.=. |
14ba0 | 71 75 65 65 6e 2e 74 6f 5f 6e 65 74 77 6f 72 6b 78 28 29 0a 0a 23 20 54 6f 20 70 6c 6f 74 20 77 | queen.to_networkx()..#.To.plot.w |
14bc0 | 69 74 68 20 6e 65 74 77 6f 72 6b 78 2c 20 77 65 20 6e 65 65 64 20 74 6f 20 6d 65 72 67 65 20 74 | ith.networkx,.we.need.to.merge.t |
14be0 | 68 65 20 6e 6f 64 65 73 20 62 61 63 6b 20 74 6f 0a 23 20 74 68 65 69 72 20 70 6f 73 69 74 69 6f | he.nodes.back.to.#.their.positio |
14c00 | 6e 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 6c 6f 74 20 69 6e 20 6e 65 74 77 6f 72 6b 78 0a | ns.in.order.to.plot.in.networkx. |
14c20 | 70 6f 73 69 74 69 6f 6e 73 20 3d 20 64 69 63 74 28 7a 69 70 28 67 72 61 70 68 2e 6e 6f 64 65 73 | positions.=.dict(zip(graph.nodes |
14c40 | 2c 20 63 65 6e 74 72 6f 69 64 73 29 29 0a 0a 23 20 70 6c 6f 74 20 77 69 74 68 20 61 20 6e 69 63 | ,.centroids))..#.plot.with.a.nic |
14c60 | 65 20 62 61 73 65 6d 61 70 0a 61 78 20 3d 20 65 75 72 6f 70 65 61 6e 5f 72 65 67 69 6f 6e 73 2e | e.basemap.ax.=.european_regions. |
14c80 | 70 6c 6f 74 28 6c 69 6e 65 77 69 64 74 68 3d 31 2c 20 65 64 67 65 63 6f 6c 6f 72 3d 22 67 72 65 | plot(linewidth=1,.edgecolor="gre |
14ca0 | 79 22 2c 20 66 61 63 65 63 6f 6c 6f 72 3d 22 6c 69 67 68 74 62 6c 75 65 22 29 0a 61 78 2e 61 78 | y",.facecolor="lightblue").ax.ax |
14cc0 | 69 73 28 5b 2d 31 32 2c 20 34 35 2c 20 33 33 2c 20 36 36 5d 29 0a 61 78 2e 61 78 69 73 28 22 6f | is([-12,.45,.33,.66]).ax.axis("o |
14ce0 | 66 66 22 29 0a 6e 78 2e 64 72 61 77 28 67 72 61 70 68 2c 20 70 6f 73 69 74 69 6f 6e 73 2c 20 61 | ff").nx.draw(graph,.positions,.a |
14d00 | 78 3d 61 78 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 35 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 72 | x=ax,.node_size=5,.node_color="r |
14d20 | 22 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 0a 23 20 41 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 | ").plt.show()..#.An.alternative. |
14d40 | 6d 65 74 68 6f 64 20 74 6f 20 63 6f 6e 73 74 72 75 63 74 20 67 72 61 70 68 73 20 66 72 6f 6d 20 | method.to.construct.graphs.from. |
14d60 | 70 6f 6c 79 67 6f 6e 73 20 6d 61 79 20 75 73 65 0a 23 20 70 79 67 65 6f 73 2e 20 54 68 69 73 20 | polygons.may.use.#.pygeos..This. |
14d80 | 70 61 63 6b 61 67 65 20 69 73 20 61 20 68 69 67 68 2d 70 65 72 66 6f 72 6d 61 6e 63 65 20 69 6e | package.is.a.high-performance.in |
14da0 | 74 65 72 66 61 63 65 20 74 6f 20 74 68 65 20 47 45 4f 53 20 43 0a 23 20 6c 69 62 72 61 72 79 2c | terface.to.the.GEOS.C.#.library, |
14dc0 | 20 75 73 65 64 20 69 6e 20 63 6f 6d 70 75 74 69 6e 67 20 67 65 6f 67 72 61 70 68 69 63 61 6c 20 | .used.in.computing.geographical. |
14de0 | 72 65 6c 61 74 69 6f 6e 73 68 69 70 73 2e 20 54 68 65 73 65 20 6c 65 74 20 75 73 0a 23 20 64 65 | relationships..These.let.us.#.de |
14e00 | 73 63 72 69 62 65 20 74 68 65 20 72 65 6c 61 74 69 6f 6e 73 68 69 70 73 20 62 65 74 77 65 65 6e | scribe.the.relationships.between |
14e20 | 20 22 70 6f 69 6e 74 20 73 65 74 73 2c 22 20 6c 69 6b 65 20 70 6f 6c 79 67 6f 6e 73 20 77 68 65 | ."point.sets,".like.polygons.whe |
14e40 | 74 68 65 72 0a 23 20 6f 72 20 6e 6f 74 20 61 20 6c 69 6e 65 20 22 63 72 6f 73 73 65 73 22 20 61 | ther.#.or.not.a.line."crosses".a |
14e60 | 20 70 6f 6c 79 67 6f 6e 2c 20 6f 72 20 77 68 65 74 68 65 72 20 74 77 6f 20 70 6f 6c 79 67 6f 6e | .polygon,.or.whether.two.polygon |
14e80 | 73 20 22 74 6f 75 63 68 2e 22 0a 23 20 54 68 65 73 65 20 72 65 6c 61 74 69 6f 6e 73 68 69 70 73 | s."touch.".#.These.relationships |
14ea0 | 2c 20 63 61 6c 6c 65 64 20 22 70 72 65 64 69 63 61 74 65 73 22 2c 20 61 72 65 20 65 78 74 65 6e | ,.called."predicates",.are.exten |
14ec0 | 73 69 76 65 2c 20 61 6e 64 20 61 72 65 20 64 6f 63 75 6d 65 6e 74 65 64 0a 23 20 62 79 20 74 68 | sive,.and.are.documented.#.by.th |
14ee0 | 65 20 70 79 67 65 6f 73 20 70 61 63 6b 61 67 65 2e 0a 50 4b 03 04 14 00 00 00 00 00 21 7b 57 56 | e.pygeos.package..PK........!{WV |
14f00 | 46 4d ec 62 07 0c 00 00 07 0c 00 00 1b 00 00 00 67 65 6f 73 70 61 74 69 61 6c 2f 70 6c 6f 74 5f | FM.b............geospatial/plot_ |
14f20 | 64 65 6c 61 75 6e 61 79 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | delaunay.py""".================= |
14f40 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 44 65 6c 61 75 6e 61 79 20 67 | =====================.Delaunay.g |
14f60 | 72 61 70 68 73 20 66 72 6f 6d 20 67 65 6f 67 72 61 70 68 69 63 20 70 6f 69 6e 74 73 0a 3d 3d 3d | raphs.from.geographic.points.=== |
14f80 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
14fa0 | 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 73 20 68 6f 77 20 74 6f 20 62 | ===..This.example.shows.how.to.b |
14fc0 | 75 69 6c 64 20 61 20 64 65 6c 61 75 6e 61 79 20 67 72 61 70 68 20 28 70 6c 75 73 20 69 74 73 20 | uild.a.delaunay.graph.(plus.its. |
14fe0 | 64 75 61 6c 2c 0a 74 68 65 20 73 65 74 20 6f 66 20 56 6f 72 6f 6e 6f 69 20 70 6f 6c 79 67 6f 6e | dual,.the.set.of.Voronoi.polygon |
15000 | 73 29 20 66 72 6f 6d 20 61 20 73 65 74 20 6f 66 20 70 6f 69 6e 74 73 2e 0a 46 6f 72 20 74 68 69 | s).from.a.set.of.points..For.thi |
15020 | 73 2c 20 77 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 73 65 74 20 6f 66 20 63 68 6f 6c 65 72 | s,.we.will.use.the.set.of.choler |
15040 | 61 20 63 61 73 65 73 20 61 74 20 74 68 65 20 42 72 6f 61 64 20 53 74 72 65 65 74 20 50 75 6d 70 | a.cases.at.the.Broad.Street.Pump |
15060 | 2c 20 0a 72 65 63 6f 72 64 65 64 20 62 79 20 4a 6f 68 6e 20 53 6e 6f 77 20 69 6e 20 31 38 35 33 | ,..recorded.by.John.Snow.in.1853 |
15080 | 2e 20 54 68 65 20 6d 65 74 68 6f 64 73 20 73 68 6f 77 6e 20 68 65 72 65 20 63 61 6e 20 61 6c 73 | ..The.methods.shown.here.can.als |
150a0 | 6f 20 77 6f 72 6b 20 0a 64 69 72 65 63 74 6c 79 20 77 69 74 68 20 70 6f 6c 79 67 6f 6e 61 6c 20 | o.work..directly.with.polygonal. |
150c0 | 64 61 74 61 20 75 73 69 6e 67 20 74 68 65 69 72 20 63 65 6e 74 72 6f 69 64 73 20 61 73 20 72 65 | data.using.their.centroids.as.re |
150e0 | 70 72 65 73 65 6e 74 61 74 69 76 65 20 70 6f 69 6e 74 73 2e 20 0a 22 22 22 0a 0a 66 72 6f 6d 20 | presentative.points..."""..from. |
15100 | 6c 69 62 70 79 73 61 6c 20 69 6d 70 6f 72 74 20 77 65 69 67 68 74 73 2c 20 65 78 61 6d 70 6c 65 | libpysal.import.weights,.example |
15120 | 73 0a 66 72 6f 6d 20 6c 69 62 70 79 73 61 6c 2e 63 67 20 69 6d 70 6f 72 74 20 76 6f 72 6f 6e 6f | s.from.libpysal.cg.import.vorono |
15140 | 69 5f 66 72 61 6d 65 73 0a 66 72 6f 6d 20 63 6f 6e 74 65 78 74 69 6c 79 20 69 6d 70 6f 72 74 20 | i_frames.from.contextily.import. |
15160 | 61 64 64 5f 62 61 73 65 6d 61 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 | add_basemap.import.matplotlib.py |
15180 | 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e | plot.as.plt.import.networkx.as.n |
151a0 | 78 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 67 65 6f 70 | x.import.numpy.as.np.import.geop |
151c0 | 61 6e 64 61 73 0a 0a 23 20 72 65 61 64 20 69 6e 20 65 78 61 6d 70 6c 65 20 64 61 74 61 20 66 72 | andas..#.read.in.example.data.fr |
151e0 | 6f 6d 20 61 20 67 65 6f 70 61 63 6b 61 67 65 20 66 69 6c 65 2e 20 47 65 6f 70 61 63 6b 61 67 65 | om.a.geopackage.file..Geopackage |
15200 | 73 0a 23 20 61 72 65 20 61 20 66 6f 72 6d 61 74 20 66 6f 72 20 73 74 6f 72 69 6e 67 20 67 65 6f | s.#.are.a.format.for.storing.geo |
15220 | 67 72 61 70 68 69 63 20 64 61 74 61 20 74 68 61 74 20 69 73 20 62 61 63 6b 65 64 0a 23 20 62 79 | graphic.data.that.is.backed.#.by |
15240 | 20 73 71 6c 69 74 65 2e 20 67 65 6f 70 61 6e 64 61 73 20 72 65 61 64 73 20 64 61 74 61 20 72 65 | .sqlite..geopandas.reads.data.re |
15260 | 6c 79 69 6e 67 20 6f 6e 20 74 68 65 20 66 69 6f 6e 61 20 70 61 63 6b 61 67 65 2c 0a 23 20 70 72 | lying.on.the.fiona.package,.#.pr |
15280 | 6f 76 69 64 69 6e 67 20 61 20 68 69 67 68 2d 6c 65 76 65 6c 20 70 61 6e 64 61 73 2d 73 74 79 6c | oviding.a.high-level.pandas-styl |
152a0 | 65 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 67 65 6f 67 72 61 70 68 69 63 20 64 61 74 61 2e 0a | e.interface.to.geographic.data.. |
152c0 | 23 20 4d 61 6e 79 20 64 69 66 66 65 72 65 6e 74 20 6b 69 6e 64 73 20 6f 66 20 67 65 6f 67 72 61 | #.Many.different.kinds.of.geogra |
152e0 | 70 68 69 63 20 64 61 74 61 20 66 6f 72 6d 61 74 73 20 63 61 6e 20 62 65 20 72 65 61 64 20 62 79 | phic.data.formats.can.be.read.by |
15300 | 20 67 65 6f 70 61 6e 64 61 73 2e 0a 63 61 73 65 73 20 3d 20 67 65 6f 70 61 6e 64 61 73 2e 72 65 | .geopandas..cases.=.geopandas.re |
15320 | 61 64 5f 66 69 6c 65 28 22 63 68 6f 6c 65 72 61 5f 63 61 73 65 73 2e 67 70 6b 67 22 29 0a 0a 23 | ad_file("cholera_cases.gpkg")..# |
15340 | 20 49 6e 20 6f 72 64 65 72 20 66 6f 72 20 6e 65 74 77 6f 72 6b 78 20 74 6f 20 70 6c 6f 74 20 74 | .In.order.for.networkx.to.plot.t |
15360 | 68 65 20 6e 6f 64 65 73 20 6f 66 20 6f 75 72 20 67 72 61 70 68 20 63 6f 72 72 65 63 74 6c 79 2c | he.nodes.of.our.graph.correctly, |
15380 | 20 77 65 0a 23 20 6e 65 65 64 20 74 6f 20 63 6f 6e 73 74 72 75 63 74 20 74 68 65 20 61 72 72 61 | .we.#.need.to.construct.the.arra |
153a0 | 79 20 6f 66 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 66 6f 72 20 65 61 63 68 20 70 6f 69 6e 74 20 | y.of.coordinates.for.each.point. |
153c0 | 69 6e 20 6f 75 72 20 64 61 74 61 73 65 74 2e 0a 23 20 54 6f 20 67 65 74 20 74 68 69 73 20 61 73 | in.our.dataset..#.To.get.this.as |
153e0 | 20 61 20 6e 75 6d 70 79 20 61 72 72 61 79 2c 20 77 65 20 65 78 74 72 61 63 74 20 74 68 65 20 78 | .a.numpy.array,.we.extract.the.x |
15400 | 20 61 6e 64 20 79 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 66 72 6f 6d 20 74 68 65 0a 23 20 67 65 | .and.y.coordinates.from.the.#.ge |
15420 | 6f 6d 65 74 72 79 20 63 6f 6c 75 6d 6e 2e 0a 63 6f 6f 72 64 69 6e 61 74 65 73 20 3d 20 6e 70 2e | ometry.column..coordinates.=.np. |
15440 | 63 6f 6c 75 6d 6e 5f 73 74 61 63 6b 28 28 63 61 73 65 73 2e 67 65 6f 6d 65 74 72 79 2e 78 2c 20 | column_stack((cases.geometry.x,. |
15460 | 63 61 73 65 73 2e 67 65 6f 6d 65 74 72 79 2e 79 29 29 0a 0a 23 20 57 68 69 6c 65 20 77 65 20 63 | cases.geometry.y))..#.While.we.c |
15480 | 6f 75 6c 64 20 73 69 6d 70 6c 79 20 70 72 65 73 65 6e 74 20 74 68 65 20 44 65 6c 61 75 6e 61 79 | ould.simply.present.the.Delaunay |
154a0 | 20 67 72 61 70 68 20 64 69 72 65 63 74 6c 79 2c 20 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f | .graph.directly,.it.is.useful.to |
154c0 | 0a 23 20 76 69 73 75 61 6c 69 7a 65 20 74 68 65 20 44 65 6c 61 75 6e 61 79 20 67 72 61 70 68 20 | .#.visualize.the.Delaunay.graph. |
154e0 | 61 6c 6f 6e 67 73 69 64 65 20 74 68 65 20 56 6f 72 6f 6e 6f 69 20 64 69 61 67 72 61 6d 2e 20 54 | alongside.the.Voronoi.diagram..T |
15500 | 68 69 73 20 69 73 20 62 65 63 61 75 73 65 0a 23 20 74 68 65 20 74 77 6f 20 61 72 65 20 69 6e 74 | his.is.because.#.the.two.are.int |
15520 | 72 69 6e 73 69 63 61 6c 6c 79 20 6c 69 6e 6b 65 64 3a 20 74 68 65 20 61 64 6a 61 63 65 6e 63 79 | rinsically.linked:.the.adjacency |
15540 | 20 67 72 61 70 68 20 6f 66 20 74 68 65 20 56 6f 72 6f 6e 6f 69 20 64 69 61 67 72 61 6d 0a 23 20 | .graph.of.the.Voronoi.diagram.#. |
15560 | 69 73 20 74 68 65 20 44 65 6c 61 75 6e 61 79 20 67 72 61 70 68 20 66 6f 72 20 74 68 65 20 73 65 | is.the.Delaunay.graph.for.the.se |
15580 | 74 20 6f 66 20 67 65 6e 65 72 61 74 6f 72 20 70 6f 69 6e 74 73 21 20 50 75 74 20 73 69 6d 70 6c | t.of.generator.points!.Put.simpl |
155a0 | 79 2c 20 74 68 69 73 20 6d 65 61 6e 73 0a 23 20 77 65 20 63 61 6e 20 62 75 69 6c 64 20 74 68 65 | y,.this.means.#.we.can.build.the |
155c0 | 20 56 6f 72 6f 6e 6f 69 20 64 69 61 67 72 61 6d 20 28 72 65 6c 79 69 6e 67 20 6f 6e 20 73 63 69 | .Voronoi.diagram.(relying.on.sci |
155e0 | 70 79 2e 73 70 61 74 69 61 6c 20 66 6f 72 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 0a 23 20 | py.spatial.for.the.underlying.#. |
15600 | 63 6f 6d 70 75 74 61 74 69 6f 6e 73 29 2c 20 61 6e 64 20 74 68 65 6e 20 63 6f 6e 76 65 72 74 20 | computations),.and.then.convert. |
15620 | 74 68 65 73 65 20 70 6f 6c 79 67 6f 6e 73 20 71 75 69 63 6b 6c 79 20 69 6e 74 6f 20 74 68 65 20 | these.polygons.quickly.into.the. |
15640 | 44 65 6c 61 75 6e 61 79 20 67 72 61 70 68 2e 0a 23 20 42 65 20 63 61 72 65 66 75 6c 2c 20 74 68 | Delaunay.graph..#.Be.careful,.th |
15660 | 6f 75 67 68 3b 20 6f 75 72 20 61 6c 67 6f 72 69 74 68 6d 2c 20 62 79 20 64 65 66 61 75 6c 74 2c | ough;.our.algorithm,.by.default, |
15680 | 20 77 69 6c 6c 20 63 6c 69 70 20 74 68 65 20 76 6f 72 6f 6e 6f 69 20 64 69 61 67 72 61 6d 20 74 | .will.clip.the.voronoi.diagram.t |
156a0 | 6f 0a 23 20 74 68 65 20 62 6f 75 6e 64 69 6e 67 20 62 6f 78 20 6f 66 20 74 68 65 20 70 6f 69 6e | o.#.the.bounding.box.of.the.poin |
156c0 | 74 20 70 61 74 74 65 72 6e 2e 20 54 68 69 73 20 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 | t.pattern..This.is.controlled.by |
156e0 | 20 74 68 65 20 22 63 6c 69 70 22 20 61 72 67 75 6d 65 6e 74 2e 0a 63 65 6c 6c 73 2c 20 67 65 6e | .the."clip".argument..cells,.gen |
15700 | 65 72 61 74 6f 72 73 20 3d 20 76 6f 72 6f 6e 6f 69 5f 66 72 61 6d 65 73 28 63 6f 6f 72 64 69 6e | erators.=.voronoi_frames(coordin |
15720 | 61 74 65 73 2c 20 63 6c 69 70 3d 22 63 6f 6e 76 65 78 20 68 75 6c 6c 22 29 0a 0a 23 20 57 69 74 | ates,.clip="convex.hull")..#.Wit |
15740 | 68 20 74 68 65 20 76 6f 72 6f 6e 6f 69 20 70 6f 6c 79 67 6f 6e 73 2c 20 77 65 20 63 61 6e 20 63 | h.the.voronoi.polygons,.we.can.c |
15760 | 6f 6e 73 74 72 75 63 74 20 74 68 65 20 61 64 6a 61 63 65 6e 63 79 20 67 72 61 70 68 20 62 65 74 | onstruct.the.adjacency.graph.bet |
15780 | 77 65 65 6e 20 74 68 65 6d 20 75 73 69 6e 67 0a 23 20 22 52 6f 6f 6b 22 20 63 6f 6e 74 69 67 75 | ween.them.using.#."Rook".contigu |
157a0 | 69 74 79 2e 20 54 68 69 73 20 72 65 70 72 65 73 65 6e 74 73 20 76 6f 72 6f 6e 6f 69 20 63 65 6c | ity..This.represents.voronoi.cel |
157c0 | 6c 73 20 61 73 20 62 65 69 6e 67 20 61 64 6a 61 63 65 6e 74 20 69 66 20 74 68 65 79 20 73 68 61 | ls.as.being.adjacent.if.they.sha |
157e0 | 72 65 0a 23 20 61 6e 20 65 64 67 65 2f 66 61 63 65 2e 20 54 68 69 73 20 69 73 20 61 6e 20 61 6e | re.#.an.edge/face..This.is.an.an |
15800 | 61 6c 6f 67 75 65 20 74 6f 20 74 68 65 20 22 76 6f 6e 20 4e 65 75 6d 61 6e 22 20 6e 65 69 67 68 | alogue.to.the."von.Neuman".neigh |
15820 | 62 6f 72 68 6f 6f 64 2c 20 6f 72 20 74 68 65 20 34 20 63 61 72 64 69 6e 61 6c 0a 23 20 6e 65 69 | borhood,.or.the.4.cardinal.#.nei |
15840 | 67 68 62 6f 72 73 20 69 6e 20 61 20 72 65 67 75 6c 61 72 20 67 72 69 64 2e 20 54 68 65 20 6e 61 | ghbors.in.a.regular.grid..The.na |
15860 | 6d 65 20 63 6f 6d 65 73 20 66 72 6f 6d 20 74 68 65 20 64 69 72 65 63 74 69 6f 6e 73 20 61 20 52 | me.comes.from.the.directions.a.R |
15880 | 6f 6f 6b 20 70 69 65 63 65 20 63 61 6e 20 6d 6f 76 65 0a 23 20 6f 6e 20 61 20 63 68 65 73 73 62 | ook.piece.can.move.#.on.a.chessb |
158a0 | 6f 61 72 64 2e 0a 64 65 6c 61 75 6e 61 79 20 3d 20 77 65 69 67 68 74 73 2e 52 6f 6f 6b 2e 66 72 | oard..delaunay.=.weights.Rook.fr |
158c0 | 6f 6d 5f 64 61 74 61 66 72 61 6d 65 28 63 65 6c 6c 73 29 0a 0a 23 20 4f 6e 63 65 20 74 68 65 20 | om_dataframe(cells)..#.Once.the. |
158e0 | 67 72 61 70 68 20 69 73 20 62 75 69 6c 74 2c 20 77 65 20 63 61 6e 20 63 6f 6e 76 65 72 74 20 74 | graph.is.built,.we.can.convert.t |
15900 | 68 65 20 67 72 61 70 68 73 20 74 6f 20 6e 65 74 77 6f 72 6b 78 20 6f 62 6a 65 63 74 73 20 75 73 | he.graphs.to.networkx.objects.us |
15920 | 69 6e 67 20 74 68 65 0a 23 20 72 65 6c 65 76 61 6e 74 20 6d 65 74 68 6f 64 2e 0a 64 65 6c 61 75 | ing.the.#.relevant.method..delau |
15940 | 6e 61 79 5f 67 72 61 70 68 20 3d 20 64 65 6c 61 75 6e 61 79 2e 74 6f 5f 6e 65 74 77 6f 72 6b 78 | nay_graph.=.delaunay.to_networkx |
15960 | 28 29 0a 0a 23 20 54 6f 20 70 6c 6f 74 20 77 69 74 68 20 6e 65 74 77 6f 72 6b 78 2c 20 77 65 20 | ()..#.To.plot.with.networkx,.we. |
15980 | 6e 65 65 64 20 74 6f 20 6d 65 72 67 65 20 74 68 65 20 6e 6f 64 65 73 20 62 61 63 6b 20 74 6f 0a | need.to.merge.the.nodes.back.to. |
159a0 | 23 20 74 68 65 69 72 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 6c | #.their.positions.in.order.to.pl |
159c0 | 6f 74 20 69 6e 20 6e 65 74 77 6f 72 6b 78 0a 70 6f 73 69 74 69 6f 6e 73 20 3d 20 64 69 63 74 28 | ot.in.networkx.positions.=.dict( |
159e0 | 7a 69 70 28 64 65 6c 61 75 6e 61 79 5f 67 72 61 70 68 2e 6e 6f 64 65 73 2c 20 63 6f 6f 72 64 69 | zip(delaunay_graph.nodes,.coordi |
15a00 | 6e 61 74 65 73 29 29 0a 0a 23 20 4e 6f 77 2c 20 77 65 20 63 61 6e 20 70 6c 6f 74 20 77 69 74 68 | nates))..#.Now,.we.can.plot.with |
15a20 | 20 61 20 6e 69 63 65 20 62 61 73 65 6d 61 70 2e 0a 61 78 20 3d 20 63 65 6c 6c 73 2e 70 6c 6f 74 | .a.nice.basemap..ax.=.cells.plot |
15a40 | 28 66 61 63 65 63 6f 6c 6f 72 3d 22 6c 69 67 68 74 62 6c 75 65 22 2c 20 61 6c 70 68 61 3d 30 2e | (facecolor="lightblue",.alpha=0. |
15a60 | 35 30 2c 20 65 64 67 65 63 6f 6c 6f 72 3d 22 63 6f 72 6e 73 69 6c 6b 22 2c 20 6c 69 6e 65 77 69 | 50,.edgecolor="cornsilk",.linewi |
15a80 | 64 74 68 3d 32 29 0a 61 64 64 5f 62 61 73 65 6d 61 70 28 61 78 29 0a 61 78 2e 61 78 69 73 28 22 | dth=2).add_basemap(ax).ax.axis(" |
15aa0 | 6f 66 66 22 29 0a 6e 78 2e 64 72 61 77 28 0a 20 20 20 20 64 65 6c 61 75 6e 61 79 5f 67 72 61 70 | off").nx.draw(.....delaunay_grap |
15ac0 | 68 2c 0a 20 20 20 20 70 6f 73 69 74 69 6f 6e 73 2c 0a 20 20 20 20 61 78 3d 61 78 2c 0a 20 20 20 | h,.....positions,.....ax=ax,.... |
15ae0 | 20 6e 6f 64 65 5f 73 69 7a 65 3d 32 2c 0a 20 20 20 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 6b 22 | .node_size=2,.....node_color="k" |
15b00 | 2c 0a 20 20 20 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 22 6b 22 2c 0a 20 20 20 20 61 6c 70 68 61 3d | ,.....edge_color="k",.....alpha= |
15b20 | 30 2e 38 2c 0a 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 29 7b 57 56 | 0.8,.).plt.show().PK........){WV |
15b40 | 65 4d 6f 7e b9 08 00 00 b9 08 00 00 19 00 00 00 67 65 6f 73 70 61 74 69 61 6c 2f 70 6c 6f 74 5f | eMo~............geospatial/plot_ |
15b60 | 70 6f 69 6e 74 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | points.py""".=================== |
15b80 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 47 72 61 70 68 73 20 66 72 6f 6d 20 67 65 6f 67 72 61 70 68 69 | ==========.Graphs.from.geographi |
15ba0 | 63 20 70 6f 69 6e 74 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | c.points.======================= |
15bc0 | 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 73 20 68 6f 77 20 74 | ======..This.example.shows.how.t |
15be0 | 6f 20 62 75 69 6c 64 20 61 20 67 72 61 70 68 20 66 72 6f 6d 20 61 20 73 65 74 20 6f 66 20 70 6f | o.build.a.graph.from.a.set.of.po |
15c00 | 69 6e 74 73 0a 75 73 69 6e 67 20 50 79 53 41 4c 20 61 6e 64 20 67 65 6f 70 61 6e 64 61 73 2e 20 | ints.using.PySAL.and.geopandas.. |
15c20 | 49 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 2c 20 77 65 27 6c 6c 20 75 73 65 20 74 68 65 20 66 | In.this.example,.we'll.use.the.f |
15c40 | 61 6d 6f 75 73 0a 73 65 74 20 6f 66 20 63 68 6f 6c 65 72 61 20 63 61 73 65 73 20 61 74 20 74 68 | amous.set.of.cholera.cases.at.th |
15c60 | 65 20 42 72 6f 61 64 20 53 74 72 65 65 74 20 50 75 6d 70 2c 20 72 65 63 6f 72 64 65 64 20 62 79 | e.Broad.Street.Pump,.recorded.by |
15c80 | 20 4a 6f 68 6e 20 53 6e 6f 77 20 69 6e 20 31 38 35 33 2e 0a 54 68 65 20 6d 65 74 68 6f 64 73 20 | .John.Snow.in.1853..The.methods. |
15ca0 | 73 68 6f 77 6e 20 68 65 72 65 20 63 61 6e 20 61 6c 73 6f 20 77 6f 72 6b 20 64 69 72 65 63 74 6c | shown.here.can.also.work.directl |
15cc0 | 79 20 77 69 74 68 20 70 6f 6c 79 67 6f 6e 61 6c 20 64 61 74 61 20 75 73 69 6e 67 20 74 68 65 69 | y.with.polygonal.data.using.thei |
15ce0 | 72 0a 63 65 6e 74 72 6f 69 64 73 20 61 73 20 72 65 70 72 65 73 65 6e 74 61 74 69 76 65 20 70 6f | r.centroids.as.representative.po |
15d00 | 69 6e 74 73 2e 20 0a 22 22 22 0a 0a 66 72 6f 6d 20 6c 69 62 70 79 73 61 6c 20 69 6d 70 6f 72 74 | ints..."""..from.libpysal.import |
15d20 | 20 77 65 69 67 68 74 73 2c 20 65 78 61 6d 70 6c 65 73 0a 66 72 6f 6d 20 63 6f 6e 74 65 78 74 69 | .weights,.examples.from.contexti |
15d40 | 6c 79 20 69 6d 70 6f 72 74 20 61 64 64 5f 62 61 73 65 6d 61 70 0a 69 6d 70 6f 72 74 20 6d 61 74 | ly.import.add_basemap.import.mat |
15d60 | 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 | plotlib.pyplot.as.plt.import.net |
15d80 | 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 | workx.as.nx.import.numpy.as.np.i |
15da0 | 6d 70 6f 72 74 20 67 65 6f 70 61 6e 64 61 73 0a 0a 23 20 72 65 61 64 20 69 6e 20 65 78 61 6d 70 | mport.geopandas..#.read.in.examp |
15dc0 | 6c 65 20 64 61 74 61 20 66 72 6f 6d 20 61 20 67 65 6f 70 61 63 6b 61 67 65 20 66 69 6c 65 2e 20 | le.data.from.a.geopackage.file.. |
15de0 | 47 65 6f 70 61 63 6b 61 67 65 73 0a 23 20 61 72 65 20 61 20 66 6f 72 6d 61 74 20 66 6f 72 20 73 | Geopackages.#.are.a.format.for.s |
15e00 | 74 6f 72 69 6e 67 20 67 65 6f 67 72 61 70 68 69 63 20 64 61 74 61 20 74 68 61 74 20 69 73 20 62 | toring.geographic.data.that.is.b |
15e20 | 61 63 6b 65 64 0a 23 20 62 79 20 73 71 6c 69 74 65 2e 20 67 65 6f 70 61 6e 64 61 73 20 72 65 61 | acked.#.by.sqlite..geopandas.rea |
15e40 | 64 73 20 64 61 74 61 20 72 65 6c 79 69 6e 67 20 6f 6e 20 74 68 65 20 66 69 6f 6e 61 20 70 61 63 | ds.data.relying.on.the.fiona.pac |
15e60 | 6b 61 67 65 2c 0a 23 20 70 72 6f 76 69 64 69 6e 67 20 61 20 68 69 67 68 2d 6c 65 76 65 6c 20 70 | kage,.#.providing.a.high-level.p |
15e80 | 61 6e 64 61 73 2d 73 74 79 6c 65 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 67 65 6f 67 72 61 70 | andas-style.interface.to.geograp |
15ea0 | 68 69 63 20 64 61 74 61 2e 0a 63 61 73 65 73 20 3d 20 67 65 6f 70 61 6e 64 61 73 2e 72 65 61 64 | hic.data..cases.=.geopandas.read |
15ec0 | 5f 66 69 6c 65 28 22 63 68 6f 6c 65 72 61 5f 63 61 73 65 73 2e 67 70 6b 67 22 29 0a 0a 23 20 63 | _file("cholera_cases.gpkg")..#.c |
15ee0 | 6f 6e 73 74 72 75 63 74 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 63 6f 6f 72 64 69 6e 61 74 65 | onstruct.the.array.of.coordinate |
15f00 | 73 20 66 6f 72 20 74 68 65 20 63 65 6e 74 72 6f 69 64 0a 63 6f 6f 72 64 69 6e 61 74 65 73 20 3d | s.for.the.centroid.coordinates.= |
15f20 | 20 6e 70 2e 63 6f 6c 75 6d 6e 5f 73 74 61 63 6b 28 28 63 61 73 65 73 2e 67 65 6f 6d 65 74 72 79 | .np.column_stack((cases.geometry |
15f40 | 2e 78 2c 20 63 61 73 65 73 2e 67 65 6f 6d 65 74 72 79 2e 79 29 29 0a 0a 23 20 63 6f 6e 73 74 72 | .x,.cases.geometry.y))..#.constr |
15f60 | 75 63 74 20 74 77 6f 20 64 69 66 66 65 72 65 6e 74 20 6b 69 6e 64 73 20 6f 66 20 67 72 61 70 68 | uct.two.different.kinds.of.graph |
15f80 | 73 3a 0a 0a 23 23 20 33 2d 6e 65 61 72 65 73 74 20 6e 65 69 67 68 62 6f 72 20 67 72 61 70 68 2c | s:..##.3-nearest.neighbor.graph, |
15fa0 | 20 6d 65 61 6e 69 6e 67 20 74 68 61 74 20 70 6f 69 6e 74 73 20 61 72 65 20 63 6f 6e 6e 65 63 74 | .meaning.that.points.are.connect |
15fc0 | 65 64 0a 23 23 20 74 6f 20 74 68 65 20 74 68 72 65 65 20 63 6c 6f 73 65 73 74 20 6f 74 68 65 72 | ed.##.to.the.three.closest.other |
15fe0 | 20 70 6f 69 6e 74 73 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 65 76 65 72 79 20 70 6f 69 6e 74 0a | .points..This.means.every.point. |
16000 | 23 23 20 77 69 6c 6c 20 68 61 76 65 20 65 78 61 63 74 6c 79 20 74 68 72 65 65 20 6e 65 69 67 68 | ##.will.have.exactly.three.neigh |
16020 | 62 6f 72 73 2e 0a 6b 6e 6e 33 20 3d 20 77 65 69 67 68 74 73 2e 4b 4e 4e 2e 66 72 6f 6d 5f 64 61 | bors..knn3.=.weights.KNN.from_da |
16040 | 74 61 66 72 61 6d 65 28 63 61 73 65 73 2c 20 6b 3d 33 29 0a 0a 23 23 20 54 68 65 20 35 30 2d 6d | taframe(cases,.k=3)..##.The.50-m |
16060 | 65 74 65 72 20 64 69 73 74 61 6e 63 65 20 62 61 6e 64 20 67 72 61 70 68 20 77 69 6c 6c 20 63 6f | eter.distance.band.graph.will.co |
16080 | 6e 6e 65 63 74 20 61 6c 6c 20 70 61 69 72 73 20 6f 66 20 70 6f 69 6e 74 73 0a 23 23 20 74 68 61 | nnect.all.pairs.of.points.##.tha |
160a0 | 74 20 61 72 65 20 77 69 74 68 69 6e 20 35 30 20 6d 65 74 65 72 73 20 66 72 6f 6d 20 6f 6e 65 20 | t.are.within.50.meters.from.one. |
160c0 | 61 6e 6f 74 68 65 72 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 70 6f 69 6e 74 73 0a | another..This.means.that.points. |
160e0 | 23 23 20 6d 61 79 20 68 61 76 65 20 64 69 66 66 65 72 65 6e 74 20 6e 75 6d 62 65 72 73 20 6f 66 | ##.may.have.different.numbers.of |
16100 | 20 6e 65 69 67 68 62 6f 72 73 2e 0a 64 69 73 74 20 3d 20 77 65 69 67 68 74 73 2e 44 69 73 74 61 | .neighbors..dist.=.weights.Dista |
16120 | 6e 63 65 42 61 6e 64 2e 66 72 6f 6d 5f 61 72 72 61 79 28 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 | nceBand.from_array(coordinates,. |
16140 | 74 68 72 65 73 68 6f 6c 64 3d 35 30 29 0a 0a 23 20 54 68 65 6e 2c 20 77 65 20 63 61 6e 20 63 6f | threshold=50)..#.Then,.we.can.co |
16160 | 6e 76 65 72 74 20 74 68 65 20 67 72 61 70 68 20 74 6f 20 6e 65 74 77 6f 72 6b 78 20 6f 62 6a 65 | nvert.the.graph.to.networkx.obje |
16180 | 63 74 20 75 73 69 6e 67 20 74 68 65 0a 23 20 2e 74 6f 5f 6e 65 74 77 6f 72 6b 78 28 29 20 6d 65 | ct.using.the.#..to_networkx().me |
161a0 | 74 68 6f 64 2e 0a 6b 6e 6e 5f 67 72 61 70 68 20 3d 20 6b 6e 6e 33 2e 74 6f 5f 6e 65 74 77 6f 72 | thod..knn_graph.=.knn3.to_networ |
161c0 | 6b 78 28 29 0a 64 69 73 74 5f 67 72 61 70 68 20 3d 20 64 69 73 74 2e 74 6f 5f 6e 65 74 77 6f 72 | kx().dist_graph.=.dist.to_networ |
161e0 | 6b 78 28 29 0a 0a 23 20 54 6f 20 70 6c 6f 74 20 77 69 74 68 20 6e 65 74 77 6f 72 6b 78 2c 20 77 | kx()..#.To.plot.with.networkx,.w |
16200 | 65 20 6e 65 65 64 20 74 6f 20 6d 65 72 67 65 20 74 68 65 20 6e 6f 64 65 73 20 62 61 63 6b 20 74 | e.need.to.merge.the.nodes.back.t |
16220 | 6f 0a 23 20 74 68 65 69 72 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 | o.#.their.positions.in.order.to. |
16240 | 70 6c 6f 74 20 69 6e 20 6e 65 74 77 6f 72 6b 78 0a 70 6f 73 69 74 69 6f 6e 73 20 3d 20 64 69 63 | plot.in.networkx.positions.=.dic |
16260 | 74 28 7a 69 70 28 6b 6e 6e 5f 67 72 61 70 68 2e 6e 6f 64 65 73 2c 20 63 6f 6f 72 64 69 6e 61 74 | t(zip(knn_graph.nodes,.coordinat |
16280 | 65 73 29 29 0a 0a 23 20 70 6c 6f 74 20 77 69 74 68 20 61 20 6e 69 63 65 20 62 61 73 65 6d 61 70 | es))..#.plot.with.a.nice.basemap |
162a0 | 0a 66 2c 20 61 78 20 3d 20 70 6c 74 2e 73 75 62 70 6c 6f 74 73 28 31 2c 20 32 2c 20 66 69 67 73 | .f,.ax.=.plt.subplots(1,.2,.figs |
162c0 | 69 7a 65 3d 28 38 2c 20 34 29 29 0a 66 6f 72 20 69 2c 20 66 61 63 65 74 20 69 6e 20 65 6e 75 6d | ize=(8,.4)).for.i,.facet.in.enum |
162e0 | 65 72 61 74 65 28 61 78 29 3a 0a 20 20 20 20 63 61 73 65 73 2e 70 6c 6f 74 28 6d 61 72 6b 65 72 | erate(ax):.....cases.plot(marker |
16300 | 3d 22 2e 22 2c 20 63 6f 6c 6f 72 3d 22 6f 72 61 6e 67 65 72 65 64 22 2c 20 61 78 3d 66 61 63 65 | =".",.color="orangered",.ax=face |
16320 | 74 29 0a 20 20 20 20 61 64 64 5f 62 61 73 65 6d 61 70 28 66 61 63 65 74 29 0a 20 20 20 20 66 61 | t).....add_basemap(facet).....fa |
16340 | 63 65 74 2e 73 65 74 5f 74 69 74 6c 65 28 28 22 4b 4e 4e 2d 33 22 2c 20 22 35 30 2d 6d 65 74 65 | cet.set_title(("KNN-3",."50-mete |
16360 | 72 20 44 69 73 74 61 6e 63 65 20 42 61 6e 64 22 29 5b 69 5d 29 0a 20 20 20 20 66 61 63 65 74 2e | r.Distance.Band")[i]).....facet. |
16380 | 61 78 69 73 28 22 6f 66 66 22 29 0a 6e 78 2e 64 72 61 77 28 6b 6e 6e 5f 67 72 61 70 68 2c 20 70 | axis("off").nx.draw(knn_graph,.p |
163a0 | 6f 73 69 74 69 6f 6e 73 2c 20 61 78 3d 61 78 5b 30 5d 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 35 2c | ositions,.ax=ax[0],.node_size=5, |
163c0 | 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 62 22 29 0a 6e 78 2e 64 72 61 77 28 64 69 73 74 5f 67 72 | .node_color="b").nx.draw(dist_gr |
163e0 | 61 70 68 2c 20 70 6f 73 69 74 69 6f 6e 73 2c 20 61 78 3d 61 78 5b 31 5d 2c 20 6e 6f 64 65 5f 73 | aph,.positions,.ax=ax[1],.node_s |
16400 | 69 7a 65 3d 35 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 62 22 29 0a 70 6c 74 2e 73 68 6f 77 28 | ize=5,.node_color="b").plt.show( |
16420 | 29 0a 50 4b 03 04 14 00 00 00 00 00 08 7b 57 56 cf e3 c7 3b 4e 08 00 00 4e 08 00 00 13 00 00 00 | ).PK.........{WV...;N...N....... |
16440 | 67 72 61 70 68 2f 70 6c 6f 74 5f 72 6f 67 65 74 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 0a 52 6f 67 | graph/plot_roget.py""".=====.Rog |
16460 | 65 74 0a 3d 3d 3d 3d 3d 0a 0a 42 75 69 6c 64 20 61 20 64 69 72 65 63 74 65 64 20 67 72 61 70 68 | et.=====..Build.a.directed.graph |
16480 | 20 6f 66 20 31 30 32 32 20 63 61 74 65 67 6f 72 69 65 73 20 61 6e 64 20 35 30 37 35 20 63 72 6f | .of.1022.categories.and.5075.cro |
164a0 | 73 73 2d 72 65 66 65 72 65 6e 63 65 73 20 61 73 20 64 65 66 69 6e 65 64 0a 69 6e 20 74 68 65 20 | ss-references.as.defined.in.the. |
164c0 | 31 38 37 39 20 76 65 72 73 69 6f 6e 20 6f 66 20 52 6f 67 65 74 27 73 20 54 68 65 73 61 75 72 75 | 1879.version.of.Roget's.Thesauru |
164e0 | 73 2e 20 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 64 65 73 63 72 69 62 65 64 20 69 6e 20 | s..This.example.is.described.in. |
16500 | 53 65 63 74 69 6f 6e 0a 31 2e 32 20 6f 66 0a 0a 20 20 20 20 44 6f 6e 61 6c 64 20 45 2e 20 4b 6e | Section.1.2.of......Donald.E..Kn |
16520 | 75 74 68 2c 20 22 54 68 65 20 53 74 61 6e 66 6f 72 64 20 47 72 61 70 68 42 61 73 65 3a 20 41 20 | uth,."The.Stanford.GraphBase:.A. |
16540 | 50 6c 61 74 66 6f 72 6d 20 66 6f 72 20 43 6f 6d 62 69 6e 61 74 6f 72 69 61 6c 0a 20 20 20 20 43 | Platform.for.Combinatorial.....C |
16560 | 6f 6d 70 75 74 69 6e 67 22 2c 20 41 43 4d 20 50 72 65 73 73 2c 20 4e 65 77 20 59 6f 72 6b 2c 20 | omputing",.ACM.Press,.New.York,. |
16580 | 31 39 39 33 2e 0a 20 20 20 20 68 74 74 70 3a 2f 2f 77 77 77 2d 63 73 2d 66 61 63 75 6c 74 79 2e | 1993......http://www-cs-faculty. |
165a0 | 73 74 61 6e 66 6f 72 64 2e 65 64 75 2f 7e 6b 6e 75 74 68 2f 73 67 62 2e 68 74 6d 6c 0a 0a 4e 6f | stanford.edu/~knuth/sgb.html..No |
165c0 | 74 65 20 74 68 61 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 35 30 37 35 20 63 72 6f 73 73 20 72 65 | te.that.one.of.the.5075.cross.re |
165e0 | 66 65 72 65 6e 63 65 73 20 69 73 20 61 20 73 65 6c 66 20 6c 6f 6f 70 20 79 65 74 20 69 74 20 69 | ferences.is.a.self.loop.yet.it.i |
16600 | 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 0a 74 68 65 20 67 72 61 70 68 20 62 75 69 6c 74 20 68 65 | s.included.in.the.graph.built.he |
16620 | 72 65 20 62 65 63 61 75 73 65 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6e 65 74 77 6f 72 6b 78 | re.because.the.standard.networkx |
16640 | 20 60 44 69 47 72 61 70 68 60 20 63 6c 61 73 73 20 61 6c 6c 6f 77 73 20 73 65 6c 66 0a 6c 6f 6f | .`DiGraph`.class.allows.self.loo |
16660 | 70 73 2e 20 20 28 63 66 2e 20 34 30 30 70 75 6e 67 65 6e 63 79 3a 34 30 30 20 34 30 31 20 34 30 | ps...(cf..400pungency:400.401.40 |
16680 | 33 20 34 30 35 29 2e 0a 0a 54 68 65 20 64 61 74 61 20 66 69 6c 65 20 63 61 6e 20 62 65 20 66 6f | 3.405)...The.data.file.can.be.fo |
166a0 | 75 6e 64 20 61 74 3a 0a 0a 2d 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6e 65 | und.at:..-.https://github.com/ne |
166c0 | 74 77 6f 72 6b 78 2f 6e 65 74 77 6f 72 6b 78 2f 62 6c 6f 62 2f 6d 61 69 6e 2f 65 78 61 6d 70 6c | tworkx/networkx/blob/main/exampl |
166e0 | 65 73 2f 67 72 61 70 68 2f 72 6f 67 65 74 5f 64 61 74 2e 74 78 74 2e 67 7a 0a 22 22 22 0a 0a 69 | es/graph/roget_dat.txt.gz."""..i |
16700 | 6d 70 6f 72 74 20 67 7a 69 70 0a 69 6d 70 6f 72 74 20 72 65 0a 69 6d 70 6f 72 74 20 73 79 73 0a | mport.gzip.import.re.import.sys. |
16720 | 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 | .import.matplotlib.pyplot.as.plt |
16740 | 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 0a 64 65 66 20 72 6f 67 | .import.networkx.as.nx...def.rog |
16760 | 65 74 5f 67 72 61 70 68 28 29 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 74 68 | et_graph():....."""Return.the.th |
16780 | 65 73 61 75 72 75 73 20 67 72 61 70 68 20 66 72 6f 6d 20 74 68 65 20 72 6f 67 65 74 2e 64 61 74 | esaurus.graph.from.the.roget.dat |
167a0 | 20 65 78 61 6d 70 6c 65 20 69 6e 0a 20 20 20 20 74 68 65 20 53 74 61 6e 66 6f 72 64 20 47 72 61 | .example.in.....the.Stanford.Gra |
167c0 | 70 68 20 42 61 73 65 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 23 20 6f 70 65 6e 20 66 69 6c 65 | ph.Base......""".....#.open.file |
167e0 | 20 72 6f 67 65 74 5f 64 61 74 2e 74 78 74 2e 67 7a 0a 20 20 20 20 66 68 20 3d 20 67 7a 69 70 2e | .roget_dat.txt.gz.....fh.=.gzip. |
16800 | 6f 70 65 6e 28 22 72 6f 67 65 74 5f 64 61 74 2e 74 78 74 2e 67 7a 22 2c 20 22 72 22 29 0a 0a 20 | open("roget_dat.txt.gz",."r")... |
16820 | 20 20 20 47 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 29 0a 0a 20 20 20 20 66 6f 72 20 6c 69 6e | ...G.=.nx.DiGraph()......for.lin |
16840 | 65 20 69 6e 20 66 68 2e 72 65 61 64 6c 69 6e 65 73 28 29 3a 0a 20 20 20 20 20 20 20 20 6c 69 6e | e.in.fh.readlines():.........lin |
16860 | 65 20 3d 20 6c 69 6e 65 2e 64 65 63 6f 64 65 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6c 69 6e | e.=.line.decode().........if.lin |
16880 | 65 2e 73 74 61 72 74 73 77 69 74 68 28 22 2a 22 29 3a 20 20 23 20 73 6b 69 70 20 63 6f 6d 6d 65 | e.startswith("*"):..#.skip.comme |
168a0 | 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 20 20 20 20 20 20 20 | nts.............continue........ |
168c0 | 20 69 66 20 6c 69 6e 65 2e 73 74 61 72 74 73 77 69 74 68 28 22 20 22 29 3a 20 20 23 20 74 68 69 | .if.line.startswith("."):..#.thi |
168e0 | 73 20 69 73 20 61 20 63 6f 6e 74 69 6e 75 61 74 69 6f 6e 20 6c 69 6e 65 2c 20 61 70 70 65 6e 64 | s.is.a.continuation.line,.append |
16900 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d 20 6f 6c 64 6c 69 6e 65 20 2b 20 6c 69 | .............line.=.oldline.+.li |
16920 | 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 6c 69 6e 65 2e 65 6e 64 73 77 69 74 68 28 22 5c 5c 5c | ne.........if.line.endswith("\\\ |
16940 | 6e 22 29 3a 20 20 23 20 63 6f 6e 74 69 6e 75 61 74 69 6f 6e 20 6c 69 6e 65 2c 20 62 75 66 66 65 | n"):..#.continuation.line,.buffe |
16960 | 72 2c 20 67 6f 74 6f 20 6e 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 6c 64 6c 69 6e 65 | r,.goto.next.............oldline |
16980 | 20 3d 20 6c 69 6e 65 2e 73 74 72 69 70 28 22 5c 5c 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 | .=.line.strip("\\\n")........... |
169a0 | 20 20 63 6f 6e 74 69 6e 75 65 0a 0a 20 20 20 20 20 20 20 20 28 68 65 61 64 6e 61 6d 65 2c 20 74 | ..continue..........(headname,.t |
169c0 | 61 69 6c 73 29 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 29 0a 0a 20 20 20 20 20 20 20 | ails).=.line.split(":")......... |
169e0 | 20 23 20 68 65 61 64 0a 20 20 20 20 20 20 20 20 6e 75 6d 66 69 6e 64 20 3d 20 72 65 2e 63 6f 6d | .#.head.........numfind.=.re.com |
16a00 | 70 69 6c 65 28 72 22 5e 5c 64 2b 22 29 20 20 23 20 72 65 20 74 6f 20 66 69 6e 64 20 74 68 65 20 | pile(r"^\d+")..#.re.to.find.the. |
16a20 | 6e 75 6d 62 65 72 20 6f 66 20 74 68 69 73 20 77 6f 72 64 0a 20 20 20 20 20 20 20 20 68 65 61 64 | number.of.this.word.........head |
16a40 | 20 3d 20 6e 75 6d 66 69 6e 64 2e 66 69 6e 64 61 6c 6c 28 68 65 61 64 6e 61 6d 65 29 5b 30 5d 20 | .=.numfind.findall(headname)[0]. |
16a60 | 20 23 20 67 65 74 20 74 68 65 20 6e 75 6d 62 65 72 0a 0a 20 20 20 20 20 20 20 20 47 2e 61 64 64 | .#.get.the.number..........G.add |
16a80 | 5f 6e 6f 64 65 28 68 65 61 64 29 0a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 74 61 69 6c 20 69 6e | _node(head)..........for.tail.in |
16aa0 | 20 74 61 69 6c 73 2e 73 70 6c 69 74 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 68 | .tails.split():.............if.h |
16ac0 | 65 61 64 20 3d 3d 20 74 61 69 6c 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 | ead.==.tail:.................pri |
16ae0 | 6e 74 28 22 73 6b 69 70 70 69 6e 67 20 73 65 6c 66 20 6c 6f 6f 70 22 2c 20 68 65 61 64 2c 20 74 | nt("skipping.self.loop",.head,.t |
16b00 | 61 69 6c 2c 20 66 69 6c 65 3d 73 79 73 2e 73 74 64 65 72 72 29 0a 20 20 20 20 20 20 20 20 20 20 | ail,.file=sys.stderr)........... |
16b20 | 20 20 47 2e 61 64 64 5f 65 64 67 65 28 68 65 61 64 2c 20 74 61 69 6c 29 0a 0a 20 20 20 20 72 65 | ..G.add_edge(head,.tail)......re |
16b40 | 74 75 72 6e 20 47 0a 0a 0a 47 20 3d 20 72 6f 67 65 74 5f 67 72 61 70 68 28 29 0a 70 72 69 6e 74 | turn.G...G.=.roget_graph().print |
16b60 | 28 22 4c 6f 61 64 65 64 20 72 6f 67 65 74 5f 64 61 74 2e 74 78 74 20 63 6f 6e 74 61 69 6e 69 6e | ("Loaded.roget_dat.txt.containin |
16b80 | 67 20 31 30 32 32 20 63 61 74 65 67 6f 72 69 65 73 2e 22 29 0a 70 72 69 6e 74 28 47 29 0a 55 47 | g.1022.categories.").print(G).UG |
16ba0 | 20 3d 20 47 2e 74 6f 5f 75 6e 64 69 72 65 63 74 65 64 28 29 0a 70 72 69 6e 74 28 6e 78 2e 6e 75 | .=.G.to_undirected().print(nx.nu |
16bc0 | 6d 62 65 72 5f 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 55 47 29 2c 20 22 | mber_connected_components(UG),." |
16be0 | 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 73 22 29 0a 0a 6f 70 74 69 6f 6e 73 20 | connected.components")..options. |
16c00 | 3d 20 7b 0a 20 20 20 20 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 3a 20 22 62 6c 61 63 6b 22 2c 0a 20 | =.{....."node_color":."black",.. |
16c20 | 20 20 20 22 6e 6f 64 65 5f 73 69 7a 65 22 3a 20 31 2c 0a 20 20 20 20 22 65 64 67 65 5f 63 6f 6c | ..."node_size":.1,....."edge_col |
16c40 | 6f 72 22 3a 20 22 67 72 61 79 22 2c 0a 20 20 20 20 22 6c 69 6e 65 77 69 64 74 68 73 22 3a 20 30 | or":."gray",....."linewidths":.0 |
16c60 | 2c 0a 20 20 20 20 22 77 69 64 74 68 22 3a 20 30 2e 31 2c 0a 7d 0a 6e 78 2e 64 72 61 77 5f 63 69 | ,....."width":.0.1,.}.nx.draw_ci |
16c80 | 72 63 75 6c 61 72 28 55 47 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 70 6c 74 2e 73 68 6f 77 28 29 | rcular(UG,.**options).plt.show() |
16ca0 | 0a 50 4b 03 04 14 00 00 00 00 00 09 7b 57 56 3c 44 85 f0 79 0a 00 00 79 0a 00 00 13 00 00 00 67 | .PK.........{WV<D..y...y.......g |
16cc0 | 72 61 70 68 2f 70 6c 6f 74 5f 77 6f 72 64 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | raph/plot_words.py""".========== |
16ce0 | 3d 3d 3d 3d 3d 3d 3d 3d 0a 57 6f 72 64 73 2f 4c 61 64 64 65 72 20 47 72 61 70 68 0a 3d 3d 3d 3d | ========.Words/Ladder.Graph.==== |
16d00 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 47 65 6e 65 72 61 74 65 20 20 61 6e 20 75 6e 64 | ==============..Generate..an.und |
16d20 | 69 72 65 63 74 65 64 20 67 72 61 70 68 20 6f 76 65 72 20 74 68 65 20 35 37 35 37 20 35 2d 6c 65 | irected.graph.over.the.5757.5-le |
16d40 | 74 74 65 72 20 77 6f 72 64 73 20 69 6e 20 74 68 65 20 64 61 74 61 66 69 6c 65 0a 60 77 6f 72 64 | tter.words.in.the.datafile.`word |
16d60 | 73 5f 64 61 74 2e 74 78 74 2e 67 7a 60 2e 20 20 54 77 6f 20 77 6f 72 64 73 20 61 72 65 20 63 6f | s_dat.txt.gz`...Two.words.are.co |
16d80 | 6e 6e 65 63 74 65 64 20 62 79 20 61 6e 20 65 64 67 65 20 69 66 20 74 68 65 79 20 64 69 66 66 65 | nnected.by.an.edge.if.they.diffe |
16da0 | 72 20 69 6e 20 6f 6e 65 0a 6c 65 74 74 65 72 2c 20 72 65 73 75 6c 74 69 6e 67 20 69 6e 20 31 34 | r.in.one.letter,.resulting.in.14 |
16dc0 | 2c 31 33 35 20 65 64 67 65 73 2e 20 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 64 65 73 63 | ,135.edges..This.example.is.desc |
16de0 | 72 69 62 65 64 20 69 6e 20 53 65 63 74 69 6f 6e 20 31 2e 31 20 6f 66 0a 0a 20 20 20 20 44 6f 6e | ribed.in.Section.1.1.of......Don |
16e00 | 61 6c 64 20 45 2e 20 4b 6e 75 74 68 2c 20 22 54 68 65 20 53 74 61 6e 66 6f 72 64 20 47 72 61 70 | ald.E..Knuth,."The.Stanford.Grap |
16e20 | 68 42 61 73 65 3a 20 41 20 50 6c 61 74 66 6f 72 6d 20 66 6f 72 20 43 6f 6d 62 69 6e 61 74 6f 72 | hBase:.A.Platform.for.Combinator |
16e40 | 69 61 6c 0a 20 20 20 20 43 6f 6d 70 75 74 69 6e 67 22 2c 20 41 43 4d 20 50 72 65 73 73 2c 20 4e | ial.....Computing",.ACM.Press,.N |
16e60 | 65 77 20 59 6f 72 6b 2c 20 31 39 39 33 2e 0a 20 20 20 20 68 74 74 70 3a 2f 2f 77 77 77 2d 63 73 | ew.York,.1993......http://www-cs |
16e80 | 2d 66 61 63 75 6c 74 79 2e 73 74 61 6e 66 6f 72 64 2e 65 64 75 2f 7e 6b 6e 75 74 68 2f 73 67 62 | -faculty.stanford.edu/~knuth/sgb |
16ea0 | 2e 68 74 6d 6c 0a 0a 54 68 65 20 64 61 74 61 20 66 69 6c 65 20 63 61 6e 20 62 65 20 66 6f 75 6e | .html..The.data.file.can.be.foun |
16ec0 | 64 20 61 74 3a 0a 0a 2d 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6e 65 74 77 | d.at:..-.https://github.com/netw |
16ee0 | 6f 72 6b 78 2f 6e 65 74 77 6f 72 6b 78 2f 62 6c 6f 62 2f 6d 61 69 6e 2f 65 78 61 6d 70 6c 65 73 | orkx/networkx/blob/main/examples |
16f00 | 2f 67 72 61 70 68 2f 77 6f 72 64 73 5f 64 61 74 2e 74 78 74 2e 67 7a 0a 22 22 22 0a 0a 69 6d 70 | /graph/words_dat.txt.gz."""..imp |
16f20 | 6f 72 74 20 67 7a 69 70 0a 66 72 6f 6d 20 73 74 72 69 6e 67 20 69 6d 70 6f 72 74 20 61 73 63 69 | ort.gzip.from.string.import.asci |
16f40 | 69 5f 6c 6f 77 65 72 63 61 73 65 20 61 73 20 6c 6f 77 65 72 63 61 73 65 0a 0a 69 6d 70 6f 72 74 | i_lowercase.as.lowercase..import |
16f60 | 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 | .matplotlib.pyplot.as.plt.import |
16f80 | 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 0a 64 65 66 20 67 65 6e 65 72 61 74 65 5f 67 | .networkx.as.nx...def.generate_g |
16fa0 | 72 61 70 68 28 77 6f 72 64 73 29 3a 0a 20 20 20 20 47 20 3d 20 6e 78 2e 47 72 61 70 68 28 6e 61 | raph(words):.....G.=.nx.Graph(na |
16fc0 | 6d 65 3d 22 77 6f 72 64 73 22 29 0a 20 20 20 20 6c 6f 6f 6b 75 70 20 3d 20 7b 63 3a 20 6c 6f 77 | me="words").....lookup.=.{c:.low |
16fe0 | 65 72 63 61 73 65 2e 69 6e 64 65 78 28 63 29 20 66 6f 72 20 63 20 69 6e 20 6c 6f 77 65 72 63 61 | ercase.index(c).for.c.in.lowerca |
17000 | 73 65 7d 0a 0a 20 20 20 20 64 65 66 20 65 64 69 74 5f 64 69 73 74 61 6e 63 65 5f 6f 6e 65 28 77 | se}......def.edit_distance_one(w |
17020 | 6f 72 64 29 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e | ord):.........for.i.in.range(len |
17040 | 28 77 6f 72 64 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 2c 20 63 2c 20 72 69 | (word)):.............left,.c,.ri |
17060 | 67 68 74 20 3d 20 77 6f 72 64 5b 30 3a 69 5d 2c 20 77 6f 72 64 5b 69 5d 2c 20 77 6f 72 64 5b 69 | ght.=.word[0:i],.word[i],.word[i |
17080 | 20 2b 20 31 20 3a 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6a 20 3d 20 6c 6f 6f 6b 75 70 5b 63 | .+.1.:].............j.=.lookup[c |
170a0 | 5d 20 20 23 20 6c 6f 77 65 72 63 61 73 65 2e 69 6e 64 65 78 28 63 29 0a 20 20 20 20 20 20 20 20 | ]..#.lowercase.index(c)......... |
170c0 | 20 20 20 20 66 6f 72 20 63 63 20 69 6e 20 6c 6f 77 65 72 63 61 73 65 5b 6a 20 2b 20 31 20 3a 5d | ....for.cc.in.lowercase[j.+.1.:] |
170e0 | 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 79 69 65 6c 64 20 6c 65 66 74 20 2b 20 63 | :.................yield.left.+.c |
17100 | 63 20 2b 20 72 69 67 68 74 0a 0a 20 20 20 20 63 61 6e 64 67 65 6e 20 3d 20 28 0a 20 20 20 20 20 | c.+.right......candgen.=.(...... |
17120 | 20 20 20 28 77 6f 72 64 2c 20 63 61 6e 64 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 77 6f 72 64 | ...(word,.cand).........for.word |
17140 | 20 69 6e 20 73 6f 72 74 65 64 28 77 6f 72 64 73 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 63 61 | .in.sorted(words).........for.ca |
17160 | 6e 64 20 69 6e 20 65 64 69 74 5f 64 69 73 74 61 6e 63 65 5f 6f 6e 65 28 77 6f 72 64 29 0a 20 20 | nd.in.edit_distance_one(word)... |
17180 | 20 20 20 20 20 20 69 66 20 63 61 6e 64 20 69 6e 20 77 6f 72 64 73 0a 20 20 20 20 29 0a 20 20 20 | ......if.cand.in.words.....).... |
171a0 | 20 47 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 77 6f 72 64 73 29 0a 20 20 20 20 66 6f 72 | .G.add_nodes_from(words).....for |
171c0 | 20 77 6f 72 64 2c 20 63 61 6e 64 20 69 6e 20 63 61 6e 64 67 65 6e 3a 0a 20 20 20 20 20 20 20 20 | .word,.cand.in.candgen:......... |
171e0 | 47 2e 61 64 64 5f 65 64 67 65 28 77 6f 72 64 2c 20 63 61 6e 64 29 0a 20 20 20 20 72 65 74 75 72 | G.add_edge(word,.cand).....retur |
17200 | 6e 20 47 0a 0a 0a 64 65 66 20 77 6f 72 64 73 5f 67 72 61 70 68 28 29 3a 0a 20 20 20 20 22 22 22 | n.G...def.words_graph():.....""" |
17220 | 52 65 74 75 72 6e 20 74 68 65 20 77 6f 72 64 73 20 65 78 61 6d 70 6c 65 20 67 72 61 70 68 20 66 | Return.the.words.example.graph.f |
17240 | 72 6f 6d 20 74 68 65 20 53 74 61 6e 66 6f 72 64 20 47 72 61 70 68 42 61 73 65 22 22 22 0a 20 20 | rom.the.Stanford.GraphBase"""... |
17260 | 20 20 66 68 20 3d 20 67 7a 69 70 2e 6f 70 65 6e 28 22 77 6f 72 64 73 5f 64 61 74 2e 74 78 74 2e | ..fh.=.gzip.open("words_dat.txt. |
17280 | 67 7a 22 2c 20 22 72 22 29 0a 20 20 20 20 77 6f 72 64 73 20 3d 20 73 65 74 28 29 0a 20 20 20 20 | gz",."r").....words.=.set()..... |
172a0 | 66 6f 72 20 6c 69 6e 65 20 69 6e 20 66 68 2e 72 65 61 64 6c 69 6e 65 73 28 29 3a 0a 20 20 20 20 | for.line.in.fh.readlines():..... |
172c0 | 20 20 20 20 6c 69 6e 65 20 3d 20 6c 69 6e 65 2e 64 65 63 6f 64 65 28 29 0a 20 20 20 20 20 20 20 | ....line.=.line.decode()........ |
172e0 | 20 69 66 20 6c 69 6e 65 2e 73 74 61 72 74 73 77 69 74 68 28 22 2a 22 29 3a 0a 20 20 20 20 20 20 | .if.line.startswith("*"):....... |
17300 | 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 20 20 20 20 20 20 20 20 77 20 3d 20 73 74 72 28 6c | ......continue.........w.=.str(l |
17320 | 69 6e 65 5b 30 3a 35 5d 29 0a 20 20 20 20 20 20 20 20 77 6f 72 64 73 2e 61 64 64 28 77 29 0a 20 | ine[0:5]).........words.add(w).. |
17340 | 20 20 20 72 65 74 75 72 6e 20 67 65 6e 65 72 61 74 65 5f 67 72 61 70 68 28 77 6f 72 64 73 29 0a | ...return.generate_graph(words). |
17360 | 0a 0a 47 20 3d 20 77 6f 72 64 73 5f 67 72 61 70 68 28 29 0a 70 72 69 6e 74 28 22 4c 6f 61 64 65 | ..G.=.words_graph().print("Loade |
17380 | 64 20 77 6f 72 64 73 5f 64 61 74 2e 74 78 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 35 37 35 37 20 | d.words_dat.txt.containing.5757. |
173a0 | 66 69 76 65 2d 6c 65 74 74 65 72 20 45 6e 67 6c 69 73 68 20 77 6f 72 64 73 2e 22 29 0a 70 72 69 | five-letter.English.words.").pri |
173c0 | 6e 74 28 22 54 77 6f 20 77 6f 72 64 73 20 61 72 65 20 63 6f 6e 6e 65 63 74 65 64 20 69 66 20 74 | nt("Two.words.are.connected.if.t |
173e0 | 68 65 79 20 64 69 66 66 65 72 20 69 6e 20 6f 6e 65 20 6c 65 74 74 65 72 2e 22 29 0a 70 72 69 6e | hey.differ.in.one.letter.").prin |
17400 | 74 28 47 29 0a 70 72 69 6e 74 28 66 22 7b 6e 78 2e 6e 75 6d 62 65 72 5f 63 6f 6e 6e 65 63 74 65 | t(G).print(f"{nx.number_connecte |
17420 | 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 7d 20 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f | d_components(G)}.connected.compo |
17440 | 6e 65 6e 74 73 22 29 0a 0a 66 6f 72 20 73 6f 75 72 63 65 2c 20 74 61 72 67 65 74 20 69 6e 20 5b | nents")..for.source,.target.in.[ |
17460 | 28 22 63 68 61 6f 73 22 2c 20 22 6f 72 64 65 72 22 29 2c 20 28 22 6e 6f 64 65 73 22 2c 20 22 67 | ("chaos",."order"),.("nodes",."g |
17480 | 72 61 70 68 22 29 2c 20 28 22 70 6f 75 6e 64 22 2c 20 22 6d 61 72 6b 73 22 29 5d 3a 0a 20 20 20 | raph"),.("pound",."marks")]:.... |
174a0 | 20 70 72 69 6e 74 28 66 22 53 68 6f 72 74 65 73 74 20 70 61 74 68 20 62 65 74 77 65 65 6e 20 7b | .print(f"Shortest.path.between.{ |
174c0 | 73 6f 75 72 63 65 7d 20 61 6e 64 20 7b 74 61 72 67 65 74 7d 20 69 73 22 29 0a 20 20 20 20 74 72 | source}.and.{target}.is").....tr |
174e0 | 79 3a 0a 20 20 20 20 20 20 20 20 73 68 6f 72 74 65 73 74 5f 70 61 74 68 20 3d 20 6e 78 2e 73 68 | y:.........shortest_path.=.nx.sh |
17500 | 6f 72 74 65 73 74 5f 70 61 74 68 28 47 2c 20 73 6f 75 72 63 65 2c 20 74 61 72 67 65 74 29 0a 20 | ortest_path(G,.source,.target).. |
17520 | 20 20 20 20 20 20 20 66 6f 72 20 6e 20 69 6e 20 73 68 6f 72 74 65 73 74 5f 70 61 74 68 3a 0a 20 | .......for.n.in.shortest_path:.. |
17540 | 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 6e 29 0a 20 20 20 20 65 78 63 65 70 74 20 6e | ...........print(n).....except.n |
17560 | 78 2e 4e 65 74 77 6f 72 6b 58 4e 6f 50 61 74 68 3a 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 | x.NetworkXNoPath:.........print( |
17580 | 22 4e 6f 6e 65 22 29 0a 0a 0a 23 20 64 72 61 77 20 61 20 73 75 62 73 65 74 20 6f 66 20 74 68 65 | "None")...#.draw.a.subset.of.the |
175a0 | 20 67 72 61 70 68 0a 62 6f 75 6e 64 61 72 79 20 3d 20 6c 69 73 74 28 6e 78 2e 6e 6f 64 65 5f 62 | .graph.boundary.=.list(nx.node_b |
175c0 | 6f 75 6e 64 61 72 79 28 47 2c 20 73 68 6f 72 74 65 73 74 5f 70 61 74 68 29 29 0a 47 2e 61 64 64 | oundary(G,.shortest_path)).G.add |
175e0 | 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 73 68 6f 72 74 65 73 74 5f 70 61 74 68 2c 20 63 6f 6c 6f 72 | _nodes_from(shortest_path,.color |
17600 | 3d 22 72 65 64 22 29 0a 47 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 62 6f 75 6e 64 61 72 | ="red").G.add_nodes_from(boundar |
17620 | 79 2c 20 63 6f 6c 6f 72 3d 22 62 6c 75 65 22 29 0a 48 20 3d 20 47 2e 73 75 62 67 72 61 70 68 28 | y,.color="blue").H.=.G.subgraph( |
17640 | 73 68 6f 72 74 65 73 74 5f 70 61 74 68 20 2b 20 62 6f 75 6e 64 61 72 79 29 0a 63 6f 6c 6f 72 73 | shortest_path.+.boundary).colors |
17660 | 20 3d 20 6e 78 2e 67 65 74 5f 6e 6f 64 65 5f 61 74 74 72 69 62 75 74 65 73 28 48 2c 20 22 63 6f | .=.nx.get_node_attributes(H,."co |
17680 | 6c 6f 72 22 29 0a 6f 70 74 69 6f 6e 73 20 3d 20 7b 22 6e 6f 64 65 5f 73 69 7a 65 22 3a 20 31 35 | lor").options.=.{"node_size":.15 |
176a0 | 30 30 2c 20 22 61 6c 70 68 61 22 3a 20 30 2e 33 2c 20 22 6e 6f 64 65 5f 63 6f 6c 6f 72 22 3a 20 | 00,."alpha":.0.3,."node_color":. |
176c0 | 63 6f 6c 6f 72 73 2e 76 61 6c 75 65 73 28 29 7d 0a 70 6f 73 20 3d 20 6e 78 2e 6b 61 6d 61 64 61 | colors.values()}.pos.=.nx.kamada |
176e0 | 5f 6b 61 77 61 69 5f 6c 61 79 6f 75 74 28 48 29 0a 6e 78 2e 64 72 61 77 28 48 2c 20 70 6f 73 2c | _kawai_layout(H).nx.draw(H,.pos, |
17700 | 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6c 61 62 | .**options).nx.draw_networkx_lab |
17720 | 65 6c 73 28 48 2c 20 70 6f 73 2c 20 66 6f 6e 74 5f 77 65 69 67 68 74 3d 22 62 6f 6c 64 22 29 0a | els(H,.pos,.font_weight="bold"). |
17740 | 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 07 7b 57 56 0f 9f 6b e9 49 03 00 | plt.show().PK.........{WV..k.I.. |
17760 | 00 49 03 00 00 19 00 00 00 67 72 61 70 68 2f 70 6c 6f 74 5f 65 72 64 6f 73 5f 72 65 6e 79 69 2e | .I.......graph/plot_erdos_renyi. |
17780 | 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 45 72 64 6f 73 20 52 65 6e 79 69 0a 3d 3d | py""".===========.Erdos.Renyi.== |
177a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 43 72 65 61 74 65 20 61 6e 20 47 7b 6e 2c 6d 7d 20 72 61 6e 64 | =========..Create.an.G{n,m}.rand |
177c0 | 6f 6d 20 67 72 61 70 68 20 77 69 74 68 20 6e 20 6e 6f 64 65 73 20 61 6e 64 20 6d 20 65 64 67 65 | om.graph.with.n.nodes.and.m.edge |
177e0 | 73 0a 61 6e 64 20 72 65 70 6f 72 74 20 73 6f 6d 65 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 0a 54 | s.and.report.some.properties...T |
17800 | 68 69 73 20 67 72 61 70 68 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 63 61 6c 6c 65 64 20 74 68 | his.graph.is.sometimes.called.th |
17820 | 65 20 45 72 64 c5 91 73 2d 52 c3 a9 6e 79 69 20 67 72 61 70 68 0a 62 75 74 20 69 73 20 64 69 66 | e.Erd..s-R..nyi.graph.but.is.dif |
17840 | 66 65 72 65 6e 74 20 66 72 6f 6d 20 47 7b 6e 2c 70 7d 20 6f 72 20 62 69 6e 6f 6d 69 61 6c 5f 67 | ferent.from.G{n,p}.or.binomial_g |
17860 | 72 61 70 68 20 77 68 69 63 68 20 69 73 20 61 6c 73 6f 0a 73 6f 6d 65 74 69 6d 65 73 20 63 61 6c | raph.which.is.also.sometimes.cal |
17880 | 6c 65 64 20 74 68 65 20 45 72 64 c5 91 73 2d 52 c3 a9 6e 79 69 20 67 72 61 70 68 2e 0a 22 22 22 | led.the.Erd..s-R..nyi.graph..""" |
178a0 | 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c | ..import.matplotlib.pyplot.as.pl |
178c0 | 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 6e 20 3d 20 31 30 20 | t.import.networkx.as.nx..n.=.10. |
178e0 | 20 23 20 31 30 20 6e 6f 64 65 73 0a 6d 20 3d 20 32 30 20 20 23 20 32 30 20 65 64 67 65 73 0a 73 | .#.10.nodes.m.=.20..#.20.edges.s |
17900 | 65 65 64 20 3d 20 32 30 31 36 30 20 20 23 20 73 65 65 64 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 | eed.=.20160..#.seed.random.numbe |
17920 | 72 20 67 65 6e 65 72 61 74 6f 72 73 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 79 | r.generators.for.reproducibility |
17940 | 0a 0a 23 20 55 73 65 20 73 65 65 64 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 79 | ..#.Use.seed.for.reproducibility |
17960 | 0a 47 20 3d 20 6e 78 2e 67 6e 6d 5f 72 61 6e 64 6f 6d 5f 67 72 61 70 68 28 6e 2c 20 6d 2c 20 73 | .G.=.nx.gnm_random_graph(n,.m,.s |
17980 | 65 65 64 3d 73 65 65 64 29 0a 0a 23 20 73 6f 6d 65 20 70 72 6f 70 65 72 74 69 65 73 0a 70 72 69 | eed=seed)..#.some.properties.pri |
179a0 | 6e 74 28 22 6e 6f 64 65 20 64 65 67 72 65 65 20 63 6c 75 73 74 65 72 69 6e 67 22 29 0a 66 6f 72 | nt("node.degree.clustering").for |
179c0 | 20 76 20 69 6e 20 6e 78 2e 6e 6f 64 65 73 28 47 29 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b | .v.in.nx.nodes(G):.....print(f"{ |
179e0 | 76 7d 20 7b 6e 78 2e 64 65 67 72 65 65 28 47 2c 20 76 29 7d 20 7b 6e 78 2e 63 6c 75 73 74 65 72 | v}.{nx.degree(G,.v)}.{nx.cluster |
17a00 | 69 6e 67 28 47 2c 20 76 29 7d 22 29 0a 0a 70 72 69 6e 74 28 29 0a 70 72 69 6e 74 28 22 74 68 65 | ing(G,.v)}")..print().print("the |
17a20 | 20 61 64 6a 61 63 65 6e 63 79 20 6c 69 73 74 22 29 0a 66 6f 72 20 6c 69 6e 65 20 69 6e 20 6e 78 | .adjacency.list").for.line.in.nx |
17a40 | 2e 67 65 6e 65 72 61 74 65 5f 61 64 6a 6c 69 73 74 28 47 29 3a 0a 20 20 20 20 70 72 69 6e 74 28 | .generate_adjlist(G):.....print( |
17a60 | 6c 69 6e 65 29 0a 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c | line)..pos.=.nx.spring_layout(G, |
17a80 | 20 73 65 65 64 3d 73 65 65 64 29 20 20 23 20 53 65 65 64 20 66 6f 72 20 72 65 70 72 6f 64 75 63 | .seed=seed)..#.Seed.for.reproduc |
17aa0 | 69 62 6c 65 20 6c 61 79 6f 75 74 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 3d 70 6f 73 29 0a | ible.layout.nx.draw(G,.pos=pos). |
17ac0 | 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 08 7b 57 56 61 9a b2 f5 96 0b 00 | plt.show().PK.........{WVa...... |
17ae0 | 00 96 0b 00 00 18 00 00 00 67 72 61 70 68 2f 70 6c 6f 74 5f 6d 6f 72 73 65 5f 74 72 69 65 2e 70 | .........graph/plot_morse_trie.p |
17b00 | 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4d 6f 72 73 65 20 54 72 69 65 0a 3d 3d 3d 3d 3d | y""".==========.Morse.Trie.===== |
17b20 | 3d 3d 3d 3d 3d 0a 0a 41 20 70 72 65 66 69 78 20 74 72 65 65 20 28 61 6b 61 20 61 20 22 74 72 69 | =====..A.prefix.tree.(aka.a."tri |
17b40 | 65 22 29 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 4d 6f 72 73 65 20 65 6e 63 6f 64 | e").representing.the.Morse.encod |
17b60 | 69 6e 67 20 6f 66 20 74 68 65 20 61 6c 70 68 61 62 65 74 2e 0a 41 20 6c 65 74 74 65 72 20 63 61 | ing.of.the.alphabet..A.letter.ca |
17b80 | 6e 20 62 65 20 65 6e 63 6f 64 65 64 20 62 79 20 74 72 61 63 69 6e 67 20 74 68 65 20 70 61 74 68 | n.be.encoded.by.tracing.the.path |
17ba0 | 20 66 72 6f 6d 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6e 6f 64 65 20 69 6e 20 | .from.the.corresponding.node.in. |
17bc0 | 74 68 65 0a 74 72 65 65 20 74 6f 20 74 68 65 20 72 6f 6f 74 20 6e 6f 64 65 2c 20 72 65 76 65 72 | the.tree.to.the.root.node,.rever |
17be0 | 73 69 6e 67 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20 74 68 65 20 73 79 6d 62 6f 6c 73 20 65 6e | sing.the.order.of.the.symbols.en |
17c00 | 63 6f 75 6e 74 65 72 65 64 20 61 6c 6f 6e 67 0a 74 68 65 20 70 61 74 68 2e 0a 22 22 22 0a 69 6d | countered.along.the.path..""".im |
17c20 | 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 23 20 55 6e 69 63 6f 64 65 20 63 | port.networkx.as.nx..#.Unicode.c |
17c40 | 68 61 72 61 63 74 65 72 73 20 74 6f 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 64 6f 74 73 2f | haracters.to.represent.the.dots/ |
17c60 | 64 61 73 68 65 73 20 28 6f 72 20 64 69 74 73 2f 64 61 68 73 29 20 6f 66 20 4d 6f 72 73 65 20 63 | dashes.(or.dits/dahs).of.Morse.c |
17c80 | 6f 64 65 0a 64 6f 74 20 3d 20 22 e2 80 a2 22 0a 64 61 73 68 20 3d 20 22 e2 80 94 22 0a 0a 23 20 | ode.dot.=."...".dash.=."..."..#. |
17ca0 | 53 74 61 72 74 20 77 69 74 68 20 74 68 65 20 64 69 72 65 63 74 20 6d 61 70 70 69 6e 67 20 6f 66 | Start.with.the.direct.mapping.of |
17cc0 | 20 6c 65 74 74 65 72 20 2d 3e 20 63 6f 64 65 0a 6d 6f 72 73 65 5f 64 69 72 65 63 74 5f 6d 61 70 | .letter.->.code.morse_direct_map |
17ce0 | 70 69 6e 67 20 3d 20 7b 0a 20 20 20 20 22 61 22 3a 20 64 6f 74 20 2b 20 64 61 73 68 2c 0a 20 20 | ping.=.{....."a":.dot.+.dash,... |
17d00 | 20 20 22 62 22 3a 20 64 61 73 68 20 2b 20 64 6f 74 20 2a 20 33 2c 0a 20 20 20 20 22 63 22 3a 20 | .."b":.dash.+.dot.*.3,....."c":. |
17d20 | 64 61 73 68 20 2b 20 64 6f 74 20 2b 20 64 61 73 68 20 2b 20 64 6f 74 2c 0a 20 20 20 20 22 64 22 | dash.+.dot.+.dash.+.dot,....."d" |
17d40 | 3a 20 64 61 73 68 20 2b 20 64 6f 74 20 2a 20 32 2c 0a 20 20 20 20 22 65 22 3a 20 64 6f 74 2c 0a | :.dash.+.dot.*.2,....."e":.dot,. |
17d60 | 20 20 20 20 22 66 22 3a 20 64 6f 74 20 2a 20 32 20 2b 20 64 61 73 68 20 2b 20 64 6f 74 2c 0a 20 | ...."f":.dot.*.2.+.dash.+.dot,.. |
17d80 | 20 20 20 22 67 22 3a 20 64 61 73 68 20 2a 20 32 20 2b 20 64 6f 74 2c 0a 20 20 20 20 22 68 22 3a | ..."g":.dash.*.2.+.dot,....."h": |
17da0 | 20 64 6f 74 20 2a 20 34 2c 0a 20 20 20 20 22 69 22 3a 20 64 6f 74 20 2a 20 32 2c 0a 20 20 20 20 | .dot.*.4,....."i":.dot.*.2,..... |
17dc0 | 22 6a 22 3a 20 64 6f 74 20 2b 20 64 61 73 68 20 2a 20 33 2c 0a 20 20 20 20 22 6b 22 3a 20 64 61 | "j":.dot.+.dash.*.3,....."k":.da |
17de0 | 73 68 20 2b 20 64 6f 74 20 2b 20 64 61 73 68 2c 0a 20 20 20 20 22 6c 22 3a 20 64 6f 74 20 2b 20 | sh.+.dot.+.dash,....."l":.dot.+. |
17e00 | 64 61 73 68 20 2b 20 64 6f 74 20 2a 20 32 2c 0a 20 20 20 20 22 6d 22 3a 20 64 61 73 68 20 2a 20 | dash.+.dot.*.2,....."m":.dash.*. |
17e20 | 32 2c 0a 20 20 20 20 22 6e 22 3a 20 64 61 73 68 20 2b 20 64 6f 74 2c 0a 20 20 20 20 22 6f 22 3a | 2,....."n":.dash.+.dot,....."o": |
17e40 | 20 64 61 73 68 20 2a 20 33 2c 0a 20 20 20 20 22 70 22 3a 20 64 6f 74 20 2b 20 64 61 73 68 20 2a | .dash.*.3,....."p":.dot.+.dash.* |
17e60 | 20 32 20 2b 20 64 6f 74 2c 0a 20 20 20 20 22 71 22 3a 20 64 61 73 68 20 2a 20 32 20 2b 20 64 6f | .2.+.dot,....."q":.dash.*.2.+.do |
17e80 | 74 20 2b 20 64 61 73 68 2c 0a 20 20 20 20 22 72 22 3a 20 64 6f 74 20 2b 20 64 61 73 68 20 2b 20 | t.+.dash,....."r":.dot.+.dash.+. |
17ea0 | 64 6f 74 2c 0a 20 20 20 20 22 73 22 3a 20 64 6f 74 20 2a 20 33 2c 0a 20 20 20 20 22 74 22 3a 20 | dot,....."s":.dot.*.3,....."t":. |
17ec0 | 64 61 73 68 2c 0a 20 20 20 20 22 75 22 3a 20 64 6f 74 20 2a 20 32 20 2b 20 64 61 73 68 2c 0a 20 | dash,....."u":.dot.*.2.+.dash,.. |
17ee0 | 20 20 20 22 76 22 3a 20 64 6f 74 20 2a 20 33 20 2b 20 64 61 73 68 2c 0a 20 20 20 20 22 77 22 3a | ..."v":.dot.*.3.+.dash,....."w": |
17f00 | 20 64 6f 74 20 2b 20 64 61 73 68 20 2a 20 32 2c 0a 20 20 20 20 22 78 22 3a 20 64 61 73 68 20 2b | .dot.+.dash.*.2,....."x":.dash.+ |
17f20 | 20 64 6f 74 20 2a 20 32 20 2b 20 64 61 73 68 2c 0a 20 20 20 20 22 79 22 3a 20 64 61 73 68 20 2b | .dot.*.2.+.dash,....."y":.dash.+ |
17f40 | 20 64 6f 74 20 2b 20 64 61 73 68 20 2a 20 32 2c 0a 20 20 20 20 22 7a 22 3a 20 64 61 73 68 20 2a | .dot.+.dash.*.2,....."z":.dash.* |
17f60 | 20 32 20 2b 20 64 6f 74 20 2a 20 32 2c 0a 7d 0a 0a 23 23 23 20 4d 61 6e 75 61 6c 6c 79 20 63 6f | .2.+.dot.*.2,.}..###.Manually.co |
17f80 | 6e 73 74 72 75 63 74 20 74 68 65 20 70 72 65 66 69 78 20 74 72 65 65 20 66 72 6f 6d 20 74 68 69 | nstruct.the.prefix.tree.from.thi |
17fa0 | 73 20 6d 61 70 70 69 6e 67 0a 0a 23 20 53 6f 6d 65 20 70 72 65 70 72 6f 63 65 73 73 69 6e 67 3a | s.mapping..#.Some.preprocessing: |
17fc0 | 20 73 6f 72 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 6d 61 70 70 69 6e 67 20 62 79 20 63 6f | .sort.the.original.mapping.by.co |
17fe0 | 64 65 20 6c 65 6e 67 74 68 20 61 6e 64 20 63 68 61 72 61 63 74 65 72 0a 23 20 76 61 6c 75 65 0a | de.length.and.character.#.value. |
18000 | 6d 6f 72 73 65 5f 6d 61 70 70 69 6e 67 5f 73 6f 72 74 65 64 20 3d 20 64 69 63 74 28 0a 20 20 20 | morse_mapping_sorted.=.dict(.... |
18020 | 20 73 6f 72 74 65 64 28 6d 6f 72 73 65 5f 64 69 72 65 63 74 5f 6d 61 70 70 69 6e 67 2e 69 74 65 | .sorted(morse_direct_mapping.ite |
18040 | 6d 73 28 29 2c 20 6b 65 79 3d 6c 61 6d 62 64 61 20 69 74 65 6d 3a 20 28 6c 65 6e 28 69 74 65 6d | ms(),.key=lambda.item:.(len(item |
18060 | 5b 31 5d 29 2c 20 69 74 65 6d 5b 31 5d 29 29 0a 29 0a 0a 23 20 4d 6f 72 65 20 70 72 65 70 72 6f | [1]),.item[1])).)..#.More.prepro |
18080 | 63 65 73 73 69 6e 67 3a 20 63 72 65 61 74 65 20 74 68 65 20 72 65 76 65 72 73 65 20 6d 61 70 70 | cessing:.create.the.reverse.mapp |
180a0 | 69 6e 67 20 74 6f 20 73 69 6d 70 6c 69 66 79 20 6c 6f 6f 6b 75 70 0a 72 65 76 65 72 73 65 5f 6d | ing.to.simplify.lookup.reverse_m |
180c0 | 61 70 70 69 6e 67 20 3d 20 7b 76 3a 20 6b 20 66 6f 72 20 6b 2c 20 76 20 69 6e 20 6d 6f 72 73 65 | apping.=.{v:.k.for.k,.v.in.morse |
180e0 | 5f 64 69 72 65 63 74 5f 6d 61 70 70 69 6e 67 2e 69 74 65 6d 73 28 29 7d 0a 72 65 76 65 72 73 65 | _direct_mapping.items()}.reverse |
18100 | 5f 6d 61 70 70 69 6e 67 5b 22 22 5d 20 3d 20 22 22 20 20 23 20 52 65 70 72 65 73 65 6e 74 20 74 | _mapping[""].=.""..#.Represent.t |
18120 | 68 65 20 22 72 6f 6f 74 22 20 6e 6f 64 65 20 77 69 74 68 20 61 6e 20 65 6d 70 74 79 20 73 74 72 | he."root".node.with.an.empty.str |
18140 | 69 6e 67 0a 0a 23 20 43 6f 6e 73 74 72 75 63 74 20 74 68 65 20 70 72 65 66 69 78 20 74 72 65 65 | ing..#.Construct.the.prefix.tree |
18160 | 20 66 72 6f 6d 20 74 68 65 20 73 6f 72 74 65 64 20 6d 61 70 70 69 6e 67 0a 47 20 3d 20 6e 78 2e | .from.the.sorted.mapping.G.=.nx. |
18180 | 44 69 47 72 61 70 68 28 29 0a 66 6f 72 20 6e 6f 64 65 2c 20 63 68 61 72 20 69 6e 20 6d 6f 72 73 | DiGraph().for.node,.char.in.mors |
181a0 | 65 5f 6d 61 70 70 69 6e 67 5f 73 6f 72 74 65 64 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 70 72 | e_mapping_sorted.items():.....pr |
181c0 | 65 64 20 3d 20 63 68 61 72 5b 3a 2d 31 5d 0a 20 20 20 20 23 20 53 74 6f 72 65 20 74 68 65 20 64 | ed.=.char[:-1].....#.Store.the.d |
181e0 | 6f 74 2f 64 61 73 68 20 72 65 6c 61 74 69 6e 67 20 74 68 65 20 74 77 6f 20 6c 65 74 74 65 72 73 | ot/dash.relating.the.two.letters |
18200 | 20 61 73 20 61 6e 20 65 64 67 65 20 61 74 74 72 69 62 75 74 65 20 22 63 68 61 72 22 0a 20 20 20 | .as.an.edge.attribute."char".... |
18220 | 20 47 2e 61 64 64 5f 65 64 67 65 28 72 65 76 65 72 73 65 5f 6d 61 70 70 69 6e 67 5b 70 72 65 64 | .G.add_edge(reverse_mapping[pred |
18240 | 5d 2c 20 6e 6f 64 65 2c 20 63 68 61 72 3d 63 68 61 72 5b 2d 31 5d 29 0a 0a 23 20 46 6f 72 20 76 | ],.node,.char=char[-1])..#.For.v |
18260 | 69 73 75 61 6c 69 7a 61 74 69 6f 6e 20 70 75 72 70 6f 73 65 73 2c 20 6c 61 79 6f 75 74 20 74 68 | isualization.purposes,.layout.th |
18280 | 65 20 6e 6f 64 65 73 20 69 6e 20 74 6f 70 6f 6c 6f 67 69 63 61 6c 20 6f 72 64 65 72 0a 66 6f 72 | e.nodes.in.topological.order.for |
182a0 | 20 69 2c 20 6c 61 79 65 72 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 6e 78 2e 74 6f 70 6f 6c 6f | .i,.layer.in.enumerate(nx.topolo |
182c0 | 67 69 63 61 6c 5f 67 65 6e 65 72 61 74 69 6f 6e 73 28 47 29 29 3a 0a 20 20 20 20 66 6f 72 20 6e | gical_generations(G)):.....for.n |
182e0 | 20 69 6e 20 6c 61 79 65 72 3a 0a 20 20 20 20 20 20 20 20 47 2e 6e 6f 64 65 73 5b 6e 5d 5b 22 6c | .in.layer:.........G.nodes[n]["l |
18300 | 61 79 65 72 22 5d 20 3d 20 69 0a 70 6f 73 20 3d 20 6e 78 2e 6d 75 6c 74 69 70 61 72 74 69 74 65 | ayer"].=.i.pos.=.nx.multipartite |
18320 | 5f 6c 61 79 6f 75 74 28 47 2c 20 73 75 62 73 65 74 5f 6b 65 79 3d 22 6c 61 79 65 72 22 2c 20 61 | _layout(G,.subset_key="layer",.a |
18340 | 6c 69 67 6e 3d 22 68 6f 72 69 7a 6f 6e 74 61 6c 22 29 0a 23 20 46 6c 69 70 20 74 68 65 20 6c 61 | lign="horizontal").#.Flip.the.la |
18360 | 79 6f 75 74 20 73 6f 20 74 68 65 20 72 6f 6f 74 20 6e 6f 64 65 20 69 73 20 6f 6e 20 74 6f 70 0a | yout.so.the.root.node.is.on.top. |
18380 | 66 6f 72 20 6b 20 69 6e 20 70 6f 73 3a 0a 20 20 20 20 70 6f 73 5b 6b 5d 5b 2d 31 5d 20 2a 3d 20 | for.k.in.pos:.....pos[k][-1].*=. |
183a0 | 2d 31 0a 0a 23 20 56 69 73 75 61 6c 69 7a 65 20 74 68 65 20 74 72 69 65 0a 6e 78 2e 64 72 61 77 | -1..#.Visualize.the.trie.nx.draw |
183c0 | 28 47 2c 20 70 6f 73 3d 70 6f 73 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 54 72 75 65 29 0a 65 | (G,.pos=pos,.with_labels=True).e |
183e0 | 6c 61 62 65 6c 73 20 3d 20 7b 28 75 2c 20 76 29 3a 20 6c 20 66 6f 72 20 75 2c 20 76 2c 20 6c 20 | labels.=.{(u,.v):.l.for.u,.v,.l. |
18400 | 69 6e 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 22 63 68 61 72 22 29 7d 0a 6e 78 2e 64 72 61 77 | in.G.edges(data="char")}.nx.draw |
18420 | 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 5f 6c 61 62 65 6c 73 28 47 2c 20 70 6f 73 2c 20 65 64 | _networkx_edge_labels(G,.pos,.ed |
18440 | 67 65 5f 6c 61 62 65 6c 73 3d 65 6c 61 62 65 6c 73 29 0a 0a 0a 23 20 41 20 6c 65 74 74 65 72 20 | ge_labels=elabels)...#.A.letter. |
18460 | 63 61 6e 20 62 65 20 65 6e 63 6f 64 65 64 20 62 79 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 | can.be.encoded.by.following.the. |
18480 | 70 61 74 68 20 66 72 6f 6d 20 74 68 65 20 67 69 76 65 6e 20 6c 65 74 74 65 72 20 28 6e 6f 64 65 | path.from.the.given.letter.(node |
184a0 | 29 20 74 6f 0a 23 20 74 68 65 20 72 6f 6f 74 20 6e 6f 64 65 0a 64 65 66 20 6d 6f 72 73 65 5f 65 | ).to.#.the.root.node.def.morse_e |
184c0 | 6e 63 6f 64 65 28 6c 65 74 74 65 72 29 3a 0a 20 20 20 20 70 72 65 64 20 3d 20 6e 65 78 74 28 47 | ncode(letter):.....pred.=.next(G |
184e0 | 2e 70 72 65 64 65 63 65 73 73 6f 72 73 28 6c 65 74 74 65 72 29 29 20 20 23 20 45 61 63 68 20 6c | .predecessors(letter))..#.Each.l |
18500 | 65 74 74 65 72 20 68 61 73 20 6f 6e 6c 79 20 31 20 70 72 65 64 65 63 65 73 73 6f 72 0a 20 20 20 | etter.has.only.1.predecessor.... |
18520 | 20 73 79 6d 62 6f 6c 20 3d 20 47 5b 70 72 65 64 5d 5b 6c 65 74 74 65 72 5d 5b 22 63 68 61 72 22 | .symbol.=.G[pred][letter]["char" |
18540 | 5d 0a 20 20 20 20 69 66 20 70 72 65 64 20 21 3d 20 22 22 3a 0a 20 20 20 20 20 20 20 20 72 65 74 | ].....if.pred.!=."":.........ret |
18560 | 75 72 6e 20 6d 6f 72 73 65 5f 65 6e 63 6f 64 65 28 70 72 65 64 29 20 2b 20 73 79 6d 62 6f 6c 20 | urn.morse_encode(pred).+.symbol. |
18580 | 20 23 20 54 72 61 76 65 72 73 69 6e 67 20 74 68 65 20 74 72 69 65 20 69 6e 20 72 65 76 65 72 73 | .#.Traversing.the.trie.in.revers |
185a0 | 65 0a 20 20 20 20 72 65 74 75 72 6e 20 73 79 6d 62 6f 6c 0a 0a 0a 23 20 56 65 72 69 66 79 20 74 | e.....return.symbol...#.Verify.t |
185c0 | 68 61 74 20 74 68 65 20 74 72 69 65 20 65 6e 63 6f 64 69 6e 67 20 69 73 20 63 6f 72 72 65 63 74 | hat.the.trie.encoding.is.correct |
185e0 | 0a 69 6d 70 6f 72 74 20 73 74 72 69 6e 67 0a 0a 66 6f 72 20 6c 65 74 74 65 72 20 69 6e 20 73 74 | .import.string..for.letter.in.st |
18600 | 72 69 6e 67 2e 61 73 63 69 69 5f 6c 6f 77 65 72 63 61 73 65 3a 0a 20 20 20 20 61 73 73 65 72 74 | ring.ascii_lowercase:.....assert |
18620 | 20 6d 6f 72 73 65 5f 65 6e 63 6f 64 65 28 6c 65 74 74 65 72 29 20 3d 3d 20 6d 6f 72 73 65 5f 64 | .morse_encode(letter).==.morse_d |
18640 | 69 72 65 63 74 5f 6d 61 70 70 69 6e 67 5b 6c 65 74 74 65 72 5d 0a 0a 70 72 69 6e 74 28 22 20 22 | irect_mapping[letter]..print("." |
18660 | 2e 6a 6f 69 6e 28 5b 6d 6f 72 73 65 5f 65 6e 63 6f 64 65 28 6c 74 72 29 20 66 6f 72 20 6c 74 72 | .join([morse_encode(ltr).for.ltr |
18680 | 20 69 6e 20 22 69 6c 6f 76 65 6e 65 74 77 6f 72 6b 78 22 5d 29 29 0a 50 4b 03 04 14 00 00 00 00 | .in."ilovenetworkx"])).PK....... |
186a0 | 00 07 7b 57 56 ba ce f4 d5 f3 03 00 00 f3 03 00 00 18 00 00 00 67 72 61 70 68 2f 70 6c 6f 74 5f | ..{WV................graph/plot_ |
186c0 | 64 61 67 5f 6c 61 79 6f 75 74 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | dag_layout.py""".=============== |
186e0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 44 41 47 20 2d 20 54 6f 70 6f 6c 6f 67 69 63 61 6c 20 4c 61 79 6f | =========.DAG.-.Topological.Layo |
18700 | 75 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 | ut.========================..Thi |
18720 | 73 20 65 78 61 6d 70 6c 65 20 63 6f 6d 62 69 6e 65 73 20 74 68 65 20 60 74 6f 70 6f 6c 6f 67 69 | s.example.combines.the.`topologi |
18740 | 63 61 6c 5f 67 65 6e 65 72 61 74 69 6f 6e 73 60 20 67 65 6e 65 72 61 74 6f 72 20 77 69 74 68 0a | cal_generations`.generator.with. |
18760 | 60 6d 75 6c 74 69 70 61 72 74 69 74 65 5f 6c 61 79 6f 75 74 60 20 74 6f 20 73 68 6f 77 20 68 6f | `multipartite_layout`.to.show.ho |
18780 | 77 20 74 6f 20 76 69 73 75 61 6c 69 7a 65 20 61 20 44 41 47 20 69 6e 20 74 6f 70 6f 6c 6f 67 69 | w.to.visualize.a.DAG.in.topologi |
187a0 | 63 61 6c 6c 79 2d 73 6f 72 74 65 64 0a 6f 72 64 65 72 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 | cally-sorted.order.."""..import. |
187c0 | 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 | networkx.as.nx.import.matplotlib |
187e0 | 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 0a 0a 47 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 | .pyplot.as.plt...G.=.nx.DiGraph( |
18800 | 0a 20 20 20 20 5b 0a 20 20 20 20 20 20 20 20 28 22 66 22 2c 20 22 61 22 29 2c 0a 20 20 20 20 20 | .....[.........("f",."a"),...... |
18820 | 20 20 20 28 22 61 22 2c 20 22 62 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 61 22 2c 20 22 65 22 | ...("a",."b"),.........("a",."e" |
18840 | 29 2c 0a 20 20 20 20 20 20 20 20 28 22 62 22 2c 20 22 63 22 29 2c 0a 20 20 20 20 20 20 20 20 28 | ),.........("b",."c"),.........( |
18860 | 22 62 22 2c 20 22 64 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 64 22 2c 20 22 65 22 29 2c 0a 20 | "b",."d"),.........("d",."e"),.. |
18880 | 20 20 20 20 20 20 20 28 22 66 22 2c 20 22 63 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 66 22 2c | .......("f",."c"),.........("f", |
188a0 | 20 22 67 22 29 2c 0a 20 20 20 20 20 20 20 20 28 22 68 22 2c 20 22 66 22 29 2c 0a 20 20 20 20 5d | ."g"),.........("h",."f"),.....] |
188c0 | 0a 29 0a 0a 66 6f 72 20 6c 61 79 65 72 2c 20 6e 6f 64 65 73 20 69 6e 20 65 6e 75 6d 65 72 61 74 | .)..for.layer,.nodes.in.enumerat |
188e0 | 65 28 6e 78 2e 74 6f 70 6f 6c 6f 67 69 63 61 6c 5f 67 65 6e 65 72 61 74 69 6f 6e 73 28 47 29 29 | e(nx.topological_generations(G)) |
18900 | 3a 0a 20 20 20 20 23 20 60 6d 75 6c 74 69 70 61 72 74 69 74 65 5f 6c 61 79 6f 75 74 60 20 65 78 | :.....#.`multipartite_layout`.ex |
18920 | 70 65 63 74 73 20 74 68 65 20 6c 61 79 65 72 20 61 73 20 61 20 6e 6f 64 65 20 61 74 74 72 69 62 | pects.the.layer.as.a.node.attrib |
18940 | 75 74 65 2c 20 73 6f 20 61 64 64 20 74 68 65 0a 20 20 20 20 23 20 6e 75 6d 65 72 69 63 20 6c 61 | ute,.so.add.the.....#.numeric.la |
18960 | 79 65 72 20 76 61 6c 75 65 20 61 73 20 61 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 0a 20 20 | yer.value.as.a.node.attribute... |
18980 | 20 20 66 6f 72 20 6e 6f 64 65 20 69 6e 20 6e 6f 64 65 73 3a 0a 20 20 20 20 20 20 20 20 47 2e 6e | ..for.node.in.nodes:.........G.n |
189a0 | 6f 64 65 73 5b 6e 6f 64 65 5d 5b 22 6c 61 79 65 72 22 5d 20 3d 20 6c 61 79 65 72 0a 0a 23 20 43 | odes[node]["layer"].=.layer..#.C |
189c0 | 6f 6d 70 75 74 65 20 74 68 65 20 6d 75 6c 74 69 70 61 72 74 69 74 65 5f 6c 61 79 6f 75 74 20 75 | ompute.the.multipartite_layout.u |
189e0 | 73 69 6e 67 20 74 68 65 20 22 6c 61 79 65 72 22 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 0a | sing.the."layer".node.attribute. |
18a00 | 70 6f 73 20 3d 20 6e 78 2e 6d 75 6c 74 69 70 61 72 74 69 74 65 5f 6c 61 79 6f 75 74 28 47 2c 20 | pos.=.nx.multipartite_layout(G,. |
18a20 | 73 75 62 73 65 74 5f 6b 65 79 3d 22 6c 61 79 65 72 22 29 0a 0a 66 69 67 2c 20 61 78 20 3d 20 70 | subset_key="layer")..fig,.ax.=.p |
18a40 | 6c 74 2e 73 75 62 70 6c 6f 74 73 28 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 28 47 | lt.subplots().nx.draw_networkx(G |
18a60 | 2c 20 70 6f 73 3d 70 6f 73 2c 20 61 78 3d 61 78 29 0a 61 78 2e 73 65 74 5f 74 69 74 6c 65 28 22 | ,.pos=pos,.ax=ax).ax.set_title(" |
18a80 | 44 41 47 20 6c 61 79 6f 75 74 20 69 6e 20 74 6f 70 6f 6c 6f 67 69 63 61 6c 20 6f 72 64 65 72 22 | DAG.layout.in.topological.order" |
18aa0 | 29 0a 66 69 67 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a | ).fig.tight_layout().plt.show(). |
18ac0 | 50 4b 03 04 14 00 00 00 00 00 07 7b 57 56 e2 92 f1 e1 26 03 00 00 26 03 00 00 1d 00 00 00 67 72 | PK.........{WV....&...&.......gr |
18ae0 | 61 70 68 2f 70 6c 6f 74 5f 64 65 67 72 65 65 5f 73 65 71 75 65 6e 63 65 2e 70 79 22 22 22 0a 3d | aph/plot_degree_sequence.py""".= |
18b00 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 44 65 67 72 65 65 20 53 65 71 75 65 6e 63 65 0a 3d | ==============.Degree.Sequence.= |
18b20 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 52 61 6e 64 6f 6d 20 67 72 61 70 68 20 66 72 6f | ==============..Random.graph.fro |
18b40 | 6d 20 67 69 76 65 6e 20 64 65 67 72 65 65 20 73 65 71 75 65 6e 63 65 2e 0a 22 22 22 0a 69 6d 70 | m.given.degree.sequence..""".imp |
18b60 | 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 | ort.matplotlib.pyplot.as.plt.imp |
18b80 | 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 23 20 53 70 65 63 69 66 79 20 73 65 | ort.networkx.as.nx..#.Specify.se |
18ba0 | 65 64 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 79 0a 73 65 65 64 20 3d 20 36 36 | ed.for.reproducibility.seed.=.66 |
18bc0 | 38 32 37 33 0a 0a 7a 20 3d 20 5b 35 2c 20 33 2c 20 33 2c 20 33 2c 20 33 2c 20 32 2c 20 32 2c 20 | 8273..z.=.[5,.3,.3,.3,.3,.2,.2,. |
18be0 | 32 2c 20 31 2c 20 31 2c 20 31 5d 0a 70 72 69 6e 74 28 6e 78 2e 69 73 5f 67 72 61 70 68 69 63 61 | 2,.1,.1,.1].print(nx.is_graphica |
18c00 | 6c 28 7a 29 29 0a 0a 70 72 69 6e 74 28 22 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6d 6f 64 65 | l(z))..print("Configuration.mode |
18c20 | 6c 22 29 0a 47 20 3d 20 6e 78 2e 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5f 6d 6f 64 65 6c 28 0a | l").G.=.nx.configuration_model(. |
18c40 | 20 20 20 20 7a 2c 20 73 65 65 64 3d 73 65 65 64 0a 29 20 20 23 20 63 6f 6e 66 69 67 75 72 61 74 | ....z,.seed=seed.)..#.configurat |
18c60 | 69 6f 6e 20 6d 6f 64 65 6c 2c 20 73 65 65 64 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c | ion.model,.seed.for.reproducibil |
18c80 | 69 74 79 0a 64 65 67 72 65 65 5f 73 65 71 75 65 6e 63 65 20 3d 20 5b 64 20 66 6f 72 20 6e 2c 20 | ity.degree_sequence.=.[d.for.n,. |
18ca0 | 64 20 69 6e 20 47 2e 64 65 67 72 65 65 28 29 5d 20 20 23 20 64 65 67 72 65 65 20 73 65 71 75 65 | d.in.G.degree()]..#.degree.seque |
18cc0 | 6e 63 65 0a 70 72 69 6e 74 28 66 22 44 65 67 72 65 65 20 73 65 71 75 65 6e 63 65 20 7b 64 65 67 | nce.print(f"Degree.sequence.{deg |
18ce0 | 72 65 65 5f 73 65 71 75 65 6e 63 65 7d 22 29 0a 70 72 69 6e 74 28 22 44 65 67 72 65 65 20 68 69 | ree_sequence}").print("Degree.hi |
18d00 | 73 74 6f 67 72 61 6d 22 29 0a 68 69 73 74 20 3d 20 7b 7d 0a 66 6f 72 20 64 20 69 6e 20 64 65 67 | stogram").hist.=.{}.for.d.in.deg |
18d20 | 72 65 65 5f 73 65 71 75 65 6e 63 65 3a 0a 20 20 20 20 69 66 20 64 20 69 6e 20 68 69 73 74 3a 0a | ree_sequence:.....if.d.in.hist:. |
18d40 | 20 20 20 20 20 20 20 20 68 69 73 74 5b 64 5d 20 2b 3d 20 31 0a 20 20 20 20 65 6c 73 65 3a 0a 20 | ........hist[d].+=.1.....else:.. |
18d60 | 20 20 20 20 20 20 20 68 69 73 74 5b 64 5d 20 3d 20 31 0a 70 72 69 6e 74 28 22 64 65 67 72 65 65 | .......hist[d].=.1.print("degree |
18d80 | 20 23 6e 6f 64 65 73 22 29 0a 66 6f 72 20 64 20 69 6e 20 68 69 73 74 3a 0a 20 20 20 20 70 72 69 | .#nodes").for.d.in.hist:.....pri |
18da0 | 6e 74 28 66 22 7b 64 3a 34 7d 20 7b 68 69 73 74 5b 64 5d 3a 36 7d 22 29 0a 0a 70 6f 73 20 3d 20 | nt(f"{d:4}.{hist[d]:6}")..pos.=. |
18dc0 | 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 3d 73 65 65 64 29 20 20 | nx.spring_layout(G,.seed=seed).. |
18de0 | 23 20 53 65 65 64 20 6c 61 79 6f 75 74 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 69 6c 69 74 | #.Seed.layout.for.reproducibilit |
18e00 | 79 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 3d 70 6f 73 29 0a 70 6c 74 2e 73 68 6f 77 28 29 | y.nx.draw(G,.pos=pos).plt.show() |
18e20 | 0a 50 4b 03 04 14 00 00 00 00 00 07 7b 57 56 60 b2 58 c9 93 04 00 00 93 04 00 00 16 00 00 00 67 | .PK.........{WV`.X.............g |
18e40 | 72 61 70 68 2f 70 6c 6f 74 5f 66 6f 6f 74 62 61 6c 6c 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d | raph/plot_football.py""".======= |
18e60 | 3d 0a 46 6f 6f 74 62 61 6c 6c 0a 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 4c 6f 61 64 20 66 6f 6f 74 62 61 | =.Football.========..Load.footba |
18e80 | 6c 6c 20 6e 65 74 77 6f 72 6b 20 69 6e 20 47 4d 4c 20 66 6f 72 6d 61 74 20 61 6e 64 20 63 6f 6d | ll.network.in.GML.format.and.com |
18ea0 | 70 75 74 65 20 73 6f 6d 65 20 6e 65 74 77 6f 72 6b 20 73 74 61 74 69 73 74 63 73 2e 0a 0a 53 68 | pute.some.network.statistcs...Sh |
18ec0 | 6f 77 73 20 68 6f 77 20 74 6f 20 64 6f 77 6e 6c 6f 61 64 20 47 4d 4c 20 67 72 61 70 68 20 69 6e | ows.how.to.download.GML.graph.in |
18ee0 | 20 61 20 7a 69 70 70 65 64 20 66 69 6c 65 2c 20 75 6e 70 61 63 6b 20 69 74 2c 20 61 6e 64 20 6c | .a.zipped.file,.unpack.it,.and.l |
18f00 | 6f 61 64 0a 69 6e 74 6f 20 61 20 4e 65 74 77 6f 72 6b 58 20 67 72 61 70 68 2e 0a 0a 52 65 71 75 | oad.into.a.NetworkX.graph...Requ |
18f20 | 69 72 65 73 20 49 6e 74 65 72 6e 65 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 64 6f 77 6e | ires.Internet.connection.to.down |
18f40 | 6c 6f 61 64 20 74 68 65 20 55 52 4c 0a 68 74 74 70 3a 2f 2f 77 77 77 2d 70 65 72 73 6f 6e 61 6c | load.the.URL.http://www-personal |
18f60 | 2e 75 6d 69 63 68 2e 65 64 75 2f 7e 6d 65 6a 6e 2f 6e 65 74 64 61 74 61 2f 66 6f 6f 74 62 61 6c | .umich.edu/~mejn/netdata/footbal |
18f80 | 6c 2e 7a 69 70 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 | l.zip."""..import.urllib.request |
18fa0 | 0a 69 6d 70 6f 72 74 20 69 6f 0a 69 6d 70 6f 72 74 20 7a 69 70 66 69 6c 65 0a 0a 69 6d 70 6f 72 | .import.io.import.zipfile..impor |
18fc0 | 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 | t.matplotlib.pyplot.as.plt.impor |
18fe0 | 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 75 72 6c 20 3d 20 22 68 74 74 70 3a 2f 2f | t.networkx.as.nx..url.=."http:// |
19000 | 77 77 77 2d 70 65 72 73 6f 6e 61 6c 2e 75 6d 69 63 68 2e 65 64 75 2f 7e 6d 65 6a 6e 2f 6e 65 74 | www-personal.umich.edu/~mejn/net |
19020 | 64 61 74 61 2f 66 6f 6f 74 62 61 6c 6c 2e 7a 69 70 22 0a 0a 73 6f 63 6b 20 3d 20 75 72 6c 6c 69 | data/football.zip"..sock.=.urlli |
19040 | 62 2e 72 65 71 75 65 73 74 2e 75 72 6c 6f 70 65 6e 28 75 72 6c 29 20 20 23 20 6f 70 65 6e 20 55 | b.request.urlopen(url)..#.open.U |
19060 | 52 4c 0a 73 20 3d 20 69 6f 2e 42 79 74 65 73 49 4f 28 73 6f 63 6b 2e 72 65 61 64 28 29 29 20 20 | RL.s.=.io.BytesIO(sock.read()).. |
19080 | 23 20 72 65 61 64 20 69 6e 74 6f 20 42 79 74 65 73 49 4f 20 22 66 69 6c 65 22 0a 73 6f 63 6b 2e | #.read.into.BytesIO."file".sock. |
190a0 | 63 6c 6f 73 65 28 29 0a 0a 7a 66 20 3d 20 7a 69 70 66 69 6c 65 2e 5a 69 70 46 69 6c 65 28 73 29 | close()..zf.=.zipfile.ZipFile(s) |
190c0 | 20 20 23 20 7a 69 70 66 69 6c 65 20 6f 62 6a 65 63 74 0a 74 78 74 20 3d 20 7a 66 2e 72 65 61 64 | ..#.zipfile.object.txt.=.zf.read |
190e0 | 28 22 66 6f 6f 74 62 61 6c 6c 2e 74 78 74 22 29 2e 64 65 63 6f 64 65 28 29 20 20 23 20 72 65 61 | ("football.txt").decode()..#.rea |
19100 | 64 20 69 6e 66 6f 20 66 69 6c 65 0a 67 6d 6c 20 3d 20 7a 66 2e 72 65 61 64 28 22 66 6f 6f 74 62 | d.info.file.gml.=.zf.read("footb |
19120 | 61 6c 6c 2e 67 6d 6c 22 29 2e 64 65 63 6f 64 65 28 29 20 20 23 20 72 65 61 64 20 67 6d 6c 20 64 | all.gml").decode()..#.read.gml.d |
19140 | 61 74 61 0a 23 20 74 68 72 6f 77 20 61 77 61 79 20 62 6f 67 75 73 20 66 69 72 73 74 20 6c 69 6e | ata.#.throw.away.bogus.first.lin |
19160 | 65 20 77 69 74 68 20 23 20 66 72 6f 6d 20 6d 65 6a 6e 20 66 69 6c 65 73 0a 67 6d 6c 20 3d 20 67 | e.with.#.from.mejn.files.gml.=.g |
19180 | 6d 6c 2e 73 70 6c 69 74 28 22 5c 6e 22 29 5b 31 3a 5d 0a 47 20 3d 20 6e 78 2e 70 61 72 73 65 5f | ml.split("\n")[1:].G.=.nx.parse_ |
191a0 | 67 6d 6c 28 67 6d 6c 29 20 20 23 20 70 61 72 73 65 20 67 6d 6c 20 64 61 74 61 0a 0a 70 72 69 6e | gml(gml)..#.parse.gml.data..prin |
191c0 | 74 28 74 78 74 29 0a 23 20 70 72 69 6e 74 20 64 65 67 72 65 65 20 66 6f 72 20 65 61 63 68 20 74 | t(txt).#.print.degree.for.each.t |
191e0 | 65 61 6d 20 2d 20 6e 75 6d 62 65 72 20 6f 66 20 67 61 6d 65 73 0a 66 6f 72 20 6e 2c 20 64 20 69 | eam.-.number.of.games.for.n,.d.i |
19200 | 6e 20 47 2e 64 65 67 72 65 65 28 29 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b 6e 3a 32 30 7d | n.G.degree():.....print(f"{n:20} |
19220 | 20 7b 64 3a 32 7d 22 29 0a 0a 6f 70 74 69 6f 6e 73 20 3d 20 7b 22 6e 6f 64 65 5f 63 6f 6c 6f 72 | .{d:2}")..options.=.{"node_color |
19240 | 22 3a 20 22 62 6c 61 63 6b 22 2c 20 22 6e 6f 64 65 5f 73 69 7a 65 22 3a 20 35 30 2c 20 22 6c 69 | ":."black",."node_size":.50,."li |
19260 | 6e 65 77 69 64 74 68 73 22 3a 20 30 2c 20 22 77 69 64 74 68 22 3a 20 30 2e 31 7d 0a 0a 70 6f 73 | newidths":.0,."width":.0.1}..pos |
19280 | 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 3d 31 39 36 39 | .=.nx.spring_layout(G,.seed=1969 |
192a0 | 29 20 20 23 20 53 65 65 64 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 6c 65 20 6c 61 79 6f 75 | )..#.Seed.for.reproducible.layou |
192c0 | 74 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 70 6c 74 | t.nx.draw(G,.pos,.**options).plt |
192e0 | 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 08 7b 57 56 be b3 44 81 a0 07 00 00 a0 07 | .show().PK.........{WV..D....... |
19300 | 00 00 19 00 00 00 67 72 61 70 68 2f 70 6c 6f 74 5f 74 72 69 61 64 5f 74 79 70 65 73 2e 70 79 22 | ......graph/plot_triad_types.py" |
19320 | 22 22 0a 3d 3d 3d 3d 3d 3d 0a 54 72 69 61 64 73 0a 3d 3d 3d 3d 3d 3d 0a 41 63 63 6f 72 64 69 6e | "".======.Triads.======.Accordin |
19340 | 67 20 74 6f 20 74 68 65 20 70 61 70 65 72 20 62 79 20 53 6e 69 6a 64 65 72 73 2c 20 54 2e 20 28 | g.to.the.paper.by.Snijders,.T..( |
19360 | 32 30 31 32 29 2e 20 e2 80 9c 54 72 61 6e 73 69 74 69 76 69 74 79 20 61 6e 64 20 74 72 69 61 64 | 2012).....Transitivity.and.triad |
19380 | 73 2e e2 80 9d 0a 55 6e 69 76 65 72 73 69 74 79 20 6f 66 20 4f 78 66 6f 72 64 2c 20 74 68 65 72 | s.....University.of.Oxford,.ther |
193a0 | 65 20 61 72 65 20 31 36 20 54 72 69 61 64 20 54 79 70 65 73 20 70 6f 73 73 69 62 6c 65 2e 20 54 | e.are.16.Triad.Types.possible..T |
193c0 | 68 69 73 20 70 6c 6f 74 20 73 68 6f 77 73 0a 74 68 65 20 31 36 20 54 72 69 61 64 20 54 79 70 65 | his.plot.shows.the.16.Triad.Type |
193e0 | 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65 64 20 77 69 74 68 69 6e 20 | s.that.can.be.identified.within. |
19400 | 64 69 72 65 63 74 65 64 20 6e 65 74 77 6f 72 6b 73 2e 0a 54 72 69 61 64 69 63 20 72 65 6c 61 74 | directed.networks..Triadic.relat |
19420 | 69 6f 6e 73 68 69 70 73 20 61 72 65 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65 66 75 6c 20 77 | ionships.are.especially.useful.w |
19440 | 68 65 6e 20 61 6e 61 6c 79 73 69 6e 67 20 53 6f 63 69 61 6c 20 4e 65 74 77 6f 72 6b 73 2e 0a 54 | hen.analysing.Social.Networks..T |
19460 | 68 65 20 66 69 72 73 74 20 74 68 72 65 65 20 64 69 67 69 74 73 20 72 65 66 65 72 20 74 6f 20 74 | he.first.three.digits.refer.to.t |
19480 | 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 75 74 75 61 6c 2c 20 61 73 79 6d 6d 65 74 72 69 63 20 | he.number.of.mutual,.asymmetric. |
194a0 | 61 6e 64 20 6e 75 6c 6c 0a 64 79 61 64 73 20 28 62 69 64 69 72 65 63 74 69 6f 6e 61 6c 2c 20 75 | and.null.dyads.(bidirectional,.u |
194c0 | 6e 69 64 69 72 65 63 74 69 6f 6e 20 61 6e 64 20 6e 6f 6e 65 64 67 65 73 29 20 61 6e 64 20 74 68 | nidirection.and.nonedges).and.th |
194e0 | 65 20 6c 65 74 74 65 72 20 67 69 76 65 73 0a 74 68 65 20 4f 72 69 65 6e 74 61 74 69 6f 6e 20 61 | e.letter.gives.the.Orientation.a |
19500 | 73 20 55 70 20 28 55 29 2c 20 44 6f 77 6e 20 28 44 29 20 2c 20 43 79 63 6c 69 63 61 6c 20 28 43 | s.Up.(U),.Down.(D).,.Cyclical.(C |
19520 | 29 20 6f 72 20 54 72 61 6e 73 69 74 69 76 65 20 28 54 29 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 | ).or.Transitive.(T).."""..import |
19540 | 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 | .networkx.as.nx.import.matplotli |
19560 | 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 0a 66 69 67 2c 20 61 78 65 73 20 3d 20 70 6c 74 | b.pyplot.as.plt..fig,.axes.=.plt |
19580 | 2e 73 75 62 70 6c 6f 74 73 28 34 2c 20 34 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 31 30 29 | .subplots(4,.4,.figsize=(10,.10) |
195a0 | 29 0a 74 72 69 61 64 73 20 3d 20 7b 0a 20 20 20 20 22 30 30 33 22 3a 20 5b 5d 2c 0a 20 20 20 20 | ).triads.=.{....."003":.[],..... |
195c0 | 22 30 31 32 22 3a 20 5b 28 31 2c 20 32 29 5d 2c 0a 20 20 20 20 22 31 30 32 22 3a 20 5b 28 31 2c | "012":.[(1,.2)],....."102":.[(1, |
195e0 | 20 32 29 2c 20 28 32 2c 20 31 29 5d 2c 0a 20 20 20 20 22 30 32 31 44 22 3a 20 5b 28 33 2c 20 31 | .2),.(2,.1)],....."021D":.[(3,.1 |
19600 | 29 2c 20 28 33 2c 20 32 29 5d 2c 0a 20 20 20 20 22 30 32 31 55 22 3a 20 5b 28 31 2c 20 33 29 2c | ),.(3,.2)],....."021U":.[(1,.3), |
19620 | 20 28 32 2c 20 33 29 5d 2c 0a 20 20 20 20 22 30 32 31 43 22 3a 20 5b 28 31 2c 20 33 29 2c 20 28 | .(2,.3)],....."021C":.[(1,.3),.( |
19640 | 33 2c 20 32 29 5d 2c 0a 20 20 20 20 22 31 31 31 44 22 3a 20 5b 28 31 2c 20 32 29 2c 20 28 32 2c | 3,.2)],....."111D":.[(1,.2),.(2, |
19660 | 20 31 29 2c 20 28 33 2c 20 31 29 5d 2c 0a 20 20 20 20 22 31 31 31 55 22 3a 20 5b 28 31 2c 20 32 | .1),.(3,.1)],....."111U":.[(1,.2 |
19680 | 29 2c 20 28 32 2c 20 31 29 2c 20 28 31 2c 20 33 29 5d 2c 0a 20 20 20 20 22 30 33 30 54 22 3a 20 | ),.(2,.1),.(1,.3)],....."030T":. |
196a0 | 5b 28 31 2c 20 32 29 2c 20 28 33 2c 20 32 29 2c 20 28 31 2c 20 33 29 5d 2c 0a 20 20 20 20 22 30 | [(1,.2),.(3,.2),.(1,.3)],....."0 |
196c0 | 33 30 43 22 3a 20 5b 28 31 2c 20 33 29 2c 20 28 33 2c 20 32 29 2c 20 28 32 2c 20 31 29 5d 2c 0a | 30C":.[(1,.3),.(3,.2),.(2,.1)],. |
196e0 | 20 20 20 20 22 32 30 31 22 3a 20 5b 28 31 2c 20 32 29 2c 20 28 32 2c 20 31 29 2c 20 28 33 2c 20 | ...."201":.[(1,.2),.(2,.1),.(3,. |
19700 | 31 29 2c 20 28 31 2c 20 33 29 5d 2c 0a 20 20 20 20 22 31 32 30 44 22 3a 20 5b 28 31 2c 20 32 29 | 1),.(1,.3)],....."120D":.[(1,.2) |
19720 | 2c 20 28 32 2c 20 31 29 2c 20 28 33 2c 20 31 29 2c 20 28 33 2c 20 32 29 5d 2c 0a 20 20 20 20 22 | ,.(2,.1),.(3,.1),.(3,.2)],....." |
19740 | 31 32 30 55 22 3a 20 5b 28 31 2c 20 32 29 2c 20 28 32 2c 20 31 29 2c 20 28 31 2c 20 33 29 2c 20 | 120U":.[(1,.2),.(2,.1),.(1,.3),. |
19760 | 28 32 2c 20 33 29 5d 2c 0a 20 20 20 20 22 31 32 30 43 22 3a 20 5b 28 31 2c 20 32 29 2c 20 28 32 | (2,.3)],....."120C":.[(1,.2),.(2 |
19780 | 2c 20 31 29 2c 20 28 31 2c 20 33 29 2c 20 28 33 2c 20 32 29 5d 2c 0a 20 20 20 20 22 32 31 30 22 | ,.1),.(1,.3),.(3,.2)],....."210" |
197a0 | 3a 20 5b 28 31 2c 20 32 29 2c 20 28 32 2c 20 31 29 2c 20 28 31 2c 20 33 29 2c 20 28 33 2c 20 32 | :.[(1,.2),.(2,.1),.(1,.3),.(3,.2 |
197c0 | 29 2c 20 28 32 2c 20 33 29 5d 2c 0a 20 20 20 20 22 33 30 30 22 3a 20 5b 28 31 2c 20 32 29 2c 20 | ),.(2,.3)],....."300":.[(1,.2),. |
197e0 | 28 32 2c 20 31 29 2c 20 28 32 2c 20 33 29 2c 20 28 33 2c 20 32 29 2c 20 28 31 2c 20 33 29 2c 20 | (2,.1),.(2,.3),.(3,.2),.(1,.3),. |
19800 | 28 33 2c 20 31 29 5d 2c 0a 7d 0a 0a 66 6f 72 20 28 74 69 74 6c 65 2c 20 74 72 69 61 64 29 2c 20 | (3,.1)],.}..for.(title,.triad),. |
19820 | 61 78 20 69 6e 20 7a 69 70 28 74 72 69 61 64 73 2e 69 74 65 6d 73 28 29 2c 20 61 78 65 73 2e 66 | ax.in.zip(triads.items(),.axes.f |
19840 | 6c 61 74 74 65 6e 28 29 29 3a 0a 20 20 20 20 47 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 29 0a | latten()):.....G.=.nx.DiGraph(). |
19860 | 20 20 20 20 47 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 5b 31 2c 20 32 2c 20 33 5d 29 0a | ....G.add_nodes_from([1,.2,.3]). |
19880 | 20 20 20 20 47 2e 61 64 64 5f 65 64 67 65 73 5f 66 72 6f 6d 28 74 72 69 61 64 29 0a 20 20 20 20 | ....G.add_edges_from(triad)..... |
198a0 | 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 28 0a 20 20 20 20 20 20 20 20 47 2c 0a 20 20 20 | nx.draw_networkx(.........G,.... |
198c0 | 20 20 20 20 20 61 78 3d 61 78 2c 0a 20 20 20 20 20 20 20 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d | .....ax=ax,.........with_labels= |
198e0 | 46 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 5b 22 67 72 65 65 | False,.........node_color=["gree |
19900 | 6e 22 5d 2c 0a 20 20 20 20 20 20 20 20 6e 6f 64 65 5f 73 69 7a 65 3d 32 30 30 2c 0a 20 20 20 20 | n"],.........node_size=200,..... |
19920 | 20 20 20 20 61 72 72 6f 77 73 69 7a 65 3d 32 30 2c 0a 20 20 20 20 20 20 20 20 77 69 64 74 68 3d | ....arrowsize=20,.........width= |
19940 | 32 2c 0a 20 20 20 20 20 20 20 20 70 6f 73 3d 6e 78 2e 70 6c 61 6e 61 72 5f 6c 61 79 6f 75 74 28 | 2,.........pos=nx.planar_layout( |
19960 | 47 29 2c 0a 20 20 20 20 29 0a 20 20 20 20 61 78 2e 73 65 74 5f 78 6c 69 6d 28 76 61 6c 20 2a 20 | G),.....).....ax.set_xlim(val.*. |
19980 | 31 2e 32 20 66 6f 72 20 76 61 6c 20 69 6e 20 61 78 2e 67 65 74 5f 78 6c 69 6d 28 29 29 0a 20 20 | 1.2.for.val.in.ax.get_xlim())... |
199a0 | 20 20 61 78 2e 73 65 74 5f 79 6c 69 6d 28 76 61 6c 20 2a 20 31 2e 32 20 66 6f 72 20 76 61 6c 20 | ..ax.set_ylim(val.*.1.2.for.val. |
199c0 | 69 6e 20 61 78 2e 67 65 74 5f 79 6c 69 6d 28 29 29 0a 20 20 20 20 61 78 2e 74 65 78 74 28 0a 20 | in.ax.get_ylim()).....ax.text(.. |
199e0 | 20 20 20 20 20 20 20 30 2c 0a 20 20 20 20 20 20 20 20 30 2c 0a 20 20 20 20 20 20 20 20 74 69 74 | .......0,.........0,.........tit |
19a00 | 6c 65 2c 0a 20 20 20 20 20 20 20 20 66 6f 6e 74 73 69 7a 65 3d 31 35 2c 0a 20 20 20 20 20 20 20 | le,.........fontsize=15,........ |
19a20 | 20 66 6f 6e 74 77 65 69 67 68 74 3d 22 65 78 74 72 61 20 62 6f 6c 64 22 2c 0a 20 20 20 20 20 20 | .fontweight="extra.bold",....... |
19a40 | 20 20 68 6f 72 69 7a 6f 6e 74 61 6c 61 6c 69 67 6e 6d 65 6e 74 3d 22 63 65 6e 74 65 72 22 2c 0a | ..horizontalalignment="center",. |
19a60 | 20 20 20 20 20 20 20 20 62 62 6f 78 3d 7b 22 62 6f 78 73 74 79 6c 65 22 3a 20 22 73 71 75 61 72 | ........bbox={"boxstyle":."squar |
19a80 | 65 2c 70 61 64 3d 30 2e 33 22 2c 20 22 66 63 22 3a 20 22 6e 6f 6e 65 22 7d 2c 0a 20 20 20 20 29 | e,pad=0.3",."fc":."none"},.....) |
19aa0 | 0a 66 69 67 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 | .fig.tight_layout().plt.show().P |
19ac0 | 4b 03 04 14 00 00 00 00 00 07 7b 57 56 ab 06 65 1a f0 01 00 00 f0 01 00 00 26 00 00 00 67 72 61 | K.........{WV..e.........&...gra |
19ae0 | 70 68 2f 70 6c 6f 74 5f 65 78 70 65 63 74 65 64 5f 64 65 67 72 65 65 5f 73 65 71 75 65 6e 63 65 | ph/plot_expected_degree_sequence |
19b00 | 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a | .py""".========================. |
19b20 | 45 78 70 65 63 74 65 64 20 44 65 67 72 65 65 20 53 65 71 75 65 6e 63 65 0a 3d 3d 3d 3d 3d 3d 3d | Expected.Degree.Sequence.======= |
19b40 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 52 61 6e 64 6f 6d 20 67 72 61 70 68 20 | =================..Random.graph. |
19b60 | 66 72 6f 6d 20 67 69 76 65 6e 20 64 65 67 72 65 65 20 73 65 71 75 65 6e 63 65 2e 0a 22 22 22 0a | from.given.degree.sequence..""". |
19b80 | 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 23 20 6d 61 6b 65 20 61 | .import.networkx.as.nx..#.make.a |
19ba0 | 20 72 61 6e 64 6f 6d 20 67 72 61 70 68 20 6f 66 20 35 30 30 20 6e 6f 64 65 73 20 77 69 74 68 20 | .random.graph.of.500.nodes.with. |
19bc0 | 65 78 70 65 63 74 65 64 20 64 65 67 72 65 65 73 20 6f 66 20 35 30 0a 6e 20 3d 20 35 30 30 20 20 | expected.degrees.of.50.n.=.500.. |
19be0 | 23 20 6e 20 6e 6f 64 65 73 0a 70 20 3d 20 30 2e 31 0a 77 20 3d 20 5b 70 20 2a 20 6e 20 66 6f 72 | #.n.nodes.p.=.0.1.w.=.[p.*.n.for |
19c00 | 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 29 5d 20 20 23 20 77 20 3d 20 70 2a 6e 20 66 6f 72 20 61 | .i.in.range(n)]..#.w.=.p*n.for.a |
19c20 | 6c 6c 20 6e 6f 64 65 73 0a 47 20 3d 20 6e 78 2e 65 78 70 65 63 74 65 64 5f 64 65 67 72 65 65 5f | ll.nodes.G.=.nx.expected_degree_ |
19c40 | 67 72 61 70 68 28 77 29 20 20 23 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6d 6f 64 65 6c 0a | graph(w)..#.configuration.model. |
19c60 | 70 72 69 6e 74 28 22 44 65 67 72 65 65 20 68 69 73 74 6f 67 72 61 6d 22 29 0a 70 72 69 6e 74 28 | print("Degree.histogram").print( |
19c80 | 22 64 65 67 72 65 65 20 28 23 6e 6f 64 65 73 29 20 2a 2a 2a 2a 22 29 0a 64 68 20 3d 20 6e 78 2e | "degree.(#nodes).****").dh.=.nx. |
19ca0 | 64 65 67 72 65 65 5f 68 69 73 74 6f 67 72 61 6d 28 47 29 0a 66 6f 72 20 69 2c 20 64 20 69 6e 20 | degree_histogram(G).for.i,.d.in. |
19cc0 | 65 6e 75 6d 65 72 61 74 65 28 64 68 29 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b 69 3a 32 7d | enumerate(dh):.....print(f"{i:2} |
19ce0 | 20 28 7b 64 3a 32 7d 29 20 7b 27 2a 27 2a 64 7d 22 29 0a 50 4b 03 04 14 00 00 00 00 00 08 7b 57 | .({d:2}).{'*'*d}").PK.........{W |
19d00 | 56 33 1a c8 eb ee 01 00 00 ee 01 00 00 19 00 00 00 67 72 61 70 68 2f 70 6c 6f 74 5f 6b 61 72 61 | V3...............graph/plot_kara |
19d20 | 74 65 5f 63 6c 75 62 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4b 61 72 61 74 65 | te_club.py""".===========.Karate |
19d40 | 20 43 6c 75 62 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 5a 61 63 68 61 72 79 27 73 20 4b 61 72 | .Club.===========..Zachary's.Kar |
19d60 | 61 74 65 20 43 6c 75 62 20 67 72 61 70 68 0a 0a 44 61 74 61 20 66 69 6c 65 20 66 72 6f 6d 3a 0a | ate.Club.graph..Data.file.from:. |
19d80 | 68 74 74 70 3a 2f 2f 76 6c 61 64 6f 2e 66 6d 66 2e 75 6e 69 2d 6c 6a 2e 73 69 2f 70 75 62 2f 6e | http://vlado.fmf.uni-lj.si/pub/n |
19da0 | 65 74 77 6f 72 6b 73 2f 64 61 74 61 2f 55 63 69 6e 65 74 2f 55 63 69 44 61 74 61 2e 68 74 6d 0a | etworks/data/Ucinet/UciData.htm. |
19dc0 | 0a 5a 61 63 68 61 72 79 20 57 2e 20 28 31 39 37 37 29 2e 0a 41 6e 20 69 6e 66 6f 72 6d 61 74 69 | .Zachary.W..(1977)..An.informati |
19de0 | 6f 6e 20 66 6c 6f 77 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6e 66 6c 69 63 74 20 61 6e 64 20 66 | on.flow.model.for.conflict.and.f |
19e00 | 69 73 73 69 6f 6e 20 69 6e 20 73 6d 61 6c 6c 20 67 72 6f 75 70 73 2e 0a 4a 6f 75 72 6e 61 6c 20 | ission.in.small.groups..Journal. |
19e20 | 6f 66 20 41 6e 74 68 72 6f 70 6f 6c 6f 67 69 63 61 6c 20 52 65 73 65 61 72 63 68 2c 20 33 33 2c | of.Anthropological.Research,.33, |
19e40 | 20 34 35 32 2d 34 37 33 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 | .452-473.."""..import.matplotlib |
19e60 | 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 | .pyplot.as.plt.import.networkx.a |
19e80 | 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 6b 61 72 61 74 65 5f 63 6c 75 62 5f 67 72 61 70 68 28 29 | s.nx..G.=.nx.karate_club_graph() |
19ea0 | 0a 70 72 69 6e 74 28 22 4e 6f 64 65 20 44 65 67 72 65 65 22 29 0a 66 6f 72 20 76 20 69 6e 20 47 | .print("Node.Degree").for.v.in.G |
19ec0 | 3a 0a 20 20 20 20 70 72 69 6e 74 28 66 22 7b 76 3a 34 7d 20 7b 47 2e 64 65 67 72 65 65 28 76 29 | :.....print(f"{v:4}.{G.degree(v) |
19ee0 | 3a 36 7d 22 29 0a 0a 6e 78 2e 64 72 61 77 5f 63 69 72 63 75 6c 61 72 28 47 2c 20 77 69 74 68 5f | :6}")..nx.draw_circular(G,.with_ |
19f00 | 6c 61 62 65 6c 73 3d 54 72 75 65 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 | labels=True).plt.show().PK...... |
19f20 | 00 00 08 7b 57 56 85 75 5f 5c 55 0b 00 00 55 0b 00 00 27 00 00 00 67 72 61 70 68 2f 70 6c 6f 74 | ...{WV.u_\U...U...'...graph/plot |
19f40 | 5f 6e 61 70 6f 6c 65 6f 6e 5f 72 75 73 73 69 61 6e 5f 63 61 6d 70 61 69 67 6e 2e 70 79 22 22 22 | _napoleon_russian_campaign.py""" |
19f60 | 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4e 61 70 6f 6c | .=========================.Napol |
19f80 | 65 6f 6e 20 52 75 73 73 69 61 6e 20 43 61 6d 70 61 69 67 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | eon.Russian.Campaign.=========== |
19fa0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 4d 69 6e 61 72 64 27 73 20 64 61 74 61 20 66 72 | ==============..Minard's.data.fr |
19fc0 | 6f 6d 20 4e 61 70 6f 6c 65 6f 6e 27 73 20 31 38 31 32 2d 31 38 31 33 20 20 52 75 73 73 69 61 6e | om.Napoleon's.1812-1813..Russian |
19fe0 | 20 43 61 6d 70 61 69 67 6e 2e 0a 68 74 74 70 73 3a 2f 2f 77 65 62 2e 61 72 63 68 69 76 65 2e 6f | .Campaign..https://web.archive.o |
1a000 | 72 67 2f 77 65 62 2f 32 30 30 38 30 31 31 32 30 34 32 36 35 36 2f 68 74 74 70 3a 2f 2f 77 77 77 | rg/web/20080112042656/http://www |
1a020 | 2e 6d 61 74 68 2e 79 6f 72 6b 75 2e 63 61 2f 53 43 53 2f 47 61 6c 6c 65 72 79 2f 6d 69 6e 61 72 | .math.yorku.ca/SCS/Gallery/minar |
1a040 | 64 2f 6d 69 6e 61 72 64 2e 74 78 74 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 | d/minard.txt."""..import.matplot |
1a060 | 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b | lib.pyplot.as.plt.import.network |
1a080 | 78 20 61 73 20 6e 78 0a 0a 0a 64 65 66 20 6d 69 6e 61 72 64 5f 67 72 61 70 68 28 29 3a 0a 20 20 | x.as.nx...def.minard_graph():... |
1a0a0 | 20 20 64 61 74 61 31 20 3d 20 22 22 22 5c 0a 32 34 2e 30 2c 35 34 2e 39 2c 33 34 30 30 30 30 2c | ..data1.=."""\.24.0,54.9,340000, |
1a0c0 | 41 2c 31 0a 32 34 2e 35 2c 35 35 2e 30 2c 33 34 30 30 30 30 2c 41 2c 31 0a 32 35 2e 35 2c 35 34 | A,1.24.5,55.0,340000,A,1.25.5,54 |
1a0e0 | 2e 35 2c 33 34 30 30 30 30 2c 41 2c 31 0a 32 36 2e 30 2c 35 34 2e 37 2c 33 32 30 30 30 30 2c 41 | .5,340000,A,1.26.0,54.7,320000,A |
1a100 | 2c 31 0a 32 37 2e 30 2c 35 34 2e 38 2c 33 30 30 30 30 30 2c 41 2c 31 0a 32 38 2e 30 2c 35 34 2e | ,1.27.0,54.8,300000,A,1.28.0,54. |
1a120 | 39 2c 32 38 30 30 30 30 2c 41 2c 31 0a 32 38 2e 35 2c 35 35 2e 30 2c 32 34 30 30 30 30 2c 41 2c | 9,280000,A,1.28.5,55.0,240000,A, |
1a140 | 31 0a 32 39 2e 30 2c 35 35 2e 31 2c 32 31 30 30 30 30 2c 41 2c 31 0a 33 30 2e 30 2c 35 35 2e 32 | 1.29.0,55.1,210000,A,1.30.0,55.2 |
1a160 | 2c 31 38 30 30 30 30 2c 41 2c 31 0a 33 30 2e 33 2c 35 35 2e 33 2c 31 37 35 30 30 30 2c 41 2c 31 | ,180000,A,1.30.3,55.3,175000,A,1 |
1a180 | 0a 33 32 2e 30 2c 35 34 2e 38 2c 31 34 35 30 30 30 2c 41 2c 31 0a 33 33 2e 32 2c 35 34 2e 39 2c | .32.0,54.8,145000,A,1.33.2,54.9, |
1a1a0 | 31 34 30 30 30 30 2c 41 2c 31 0a 33 34 2e 34 2c 35 35 2e 35 2c 31 32 37 31 30 30 2c 41 2c 31 0a | 140000,A,1.34.4,55.5,127100,A,1. |
1a1c0 | 33 35 2e 35 2c 35 35 2e 34 2c 31 30 30 30 30 30 2c 41 2c 31 0a 33 36 2e 30 2c 35 35 2e 35 2c 31 | 35.5,55.4,100000,A,1.36.0,55.5,1 |
1a1e0 | 30 30 30 30 30 2c 41 2c 31 0a 33 37 2e 36 2c 35 35 2e 38 2c 31 30 30 30 30 30 2c 41 2c 31 0a 33 | 00000,A,1.37.6,55.8,100000,A,1.3 |
1a200 | 37 2e 37 2c 35 35 2e 37 2c 31 30 30 30 30 30 2c 52 2c 31 0a 33 37 2e 35 2c 35 35 2e 37 2c 39 38 | 7.7,55.7,100000,R,1.37.5,55.7,98 |
1a220 | 30 30 30 2c 52 2c 31 0a 33 37 2e 30 2c 35 35 2e 30 2c 39 37 30 30 30 2c 52 2c 31 0a 33 36 2e 38 | 000,R,1.37.0,55.0,97000,R,1.36.8 |
1a240 | 2c 35 35 2e 30 2c 39 36 30 30 30 2c 52 2c 31 0a 33 35 2e 34 2c 35 35 2e 33 2c 38 37 30 30 30 2c | ,55.0,96000,R,1.35.4,55.3,87000, |
1a260 | 52 2c 31 0a 33 34 2e 33 2c 35 35 2e 32 2c 35 35 30 30 30 2c 52 2c 31 0a 33 33 2e 33 2c 35 34 2e | R,1.34.3,55.2,55000,R,1.33.3,54. |
1a280 | 38 2c 33 37 30 30 30 2c 52 2c 31 0a 33 32 2e 30 2c 35 34 2e 36 2c 32 34 30 30 30 2c 52 2c 31 0a | 8,37000,R,1.32.0,54.6,24000,R,1. |
1a2a0 | 33 30 2e 34 2c 35 34 2e 34 2c 32 30 30 30 30 2c 52 2c 31 0a 32 39 2e 32 2c 35 34 2e 33 2c 32 30 | 30.4,54.4,20000,R,1.29.2,54.3,20 |
1a2c0 | 30 30 30 2c 52 2c 31 0a 32 38 2e 35 2c 35 34 2e 32 2c 32 30 30 30 30 2c 52 2c 31 0a 32 38 2e 33 | 000,R,1.28.5,54.2,20000,R,1.28.3 |
1a2e0 | 2c 35 34 2e 33 2c 32 30 30 30 30 2c 52 2c 31 0a 32 37 2e 35 2c 35 34 2e 35 2c 32 30 30 30 30 2c | ,54.3,20000,R,1.27.5,54.5,20000, |
1a300 | 52 2c 31 0a 32 36 2e 38 2c 35 34 2e 33 2c 31 32 30 30 30 2c 52 2c 31 0a 32 36 2e 34 2c 35 34 2e | R,1.26.8,54.3,12000,R,1.26.4,54. |
1a320 | 34 2c 31 34 30 30 30 2c 52 2c 31 0a 32 35 2e 30 2c 35 34 2e 34 2c 38 30 30 30 2c 52 2c 31 0a 32 | 4,14000,R,1.25.0,54.4,8000,R,1.2 |
1a340 | 34 2e 34 2c 35 34 2e 34 2c 34 30 30 30 2c 52 2c 31 0a 32 34 2e 32 2c 35 34 2e 34 2c 34 30 30 30 | 4.4,54.4,4000,R,1.24.2,54.4,4000 |
1a360 | 2c 52 2c 31 0a 32 34 2e 31 2c 35 34 2e 34 2c 34 30 30 30 2c 52 2c 31 22 22 22 0a 20 20 20 20 64 | ,R,1.24.1,54.4,4000,R,1""".....d |
1a380 | 61 74 61 32 20 3d 20 22 22 22 5c 0a 32 34 2e 30 2c 35 35 2e 31 2c 36 30 30 30 30 2c 41 2c 32 0a | ata2.=."""\.24.0,55.1,60000,A,2. |
1a3a0 | 32 34 2e 35 2c 35 35 2e 32 2c 36 30 30 30 30 2c 41 2c 32 0a 32 35 2e 35 2c 35 34 2e 37 2c 36 30 | 24.5,55.2,60000,A,2.25.5,54.7,60 |
1a3c0 | 30 30 30 2c 41 2c 32 0a 32 36 2e 36 2c 35 35 2e 37 2c 34 30 30 30 30 2c 41 2c 32 0a 32 37 2e 34 | 000,A,2.26.6,55.7,40000,A,2.27.4 |
1a3e0 | 2c 35 35 2e 36 2c 33 33 30 30 30 2c 41 2c 32 0a 32 38 2e 37 2c 35 35 2e 35 2c 33 33 30 30 30 2c | ,55.6,33000,A,2.28.7,55.5,33000, |
1a400 | 52 2c 32 0a 32 39 2e 32 2c 35 34 2e 32 2c 33 30 30 30 30 2c 52 2c 32 0a 32 38 2e 35 2c 35 34 2e | R,2.29.2,54.2,30000,R,2.28.5,54. |
1a420 | 31 2c 33 30 30 30 30 2c 52 2c 32 0a 32 38 2e 33 2c 35 34 2e 32 2c 32 38 30 30 30 2c 52 2c 32 22 | 1,30000,R,2.28.3,54.2,28000,R,2" |
1a440 | 22 22 0a 20 20 20 20 64 61 74 61 33 20 3d 20 22 22 22 5c 0a 32 34 2e 30 2c 35 35 2e 32 2c 32 32 | "".....data3.=."""\.24.0,55.2,22 |
1a460 | 30 30 30 2c 41 2c 33 0a 32 34 2e 35 2c 35 35 2e 33 2c 32 32 30 30 30 2c 41 2c 33 0a 32 34 2e 36 | 000,A,3.24.5,55.3,22000,A,3.24.6 |
1a480 | 2c 35 35 2e 38 2c 36 30 30 30 2c 41 2c 33 0a 32 34 2e 36 2c 35 35 2e 38 2c 36 30 30 30 2c 52 2c | ,55.8,6000,A,3.24.6,55.8,6000,R, |
1a4a0 | 33 0a 32 34 2e 32 2c 35 34 2e 34 2c 36 30 30 30 2c 52 2c 33 0a 32 34 2e 31 2c 35 34 2e 34 2c 36 | 3.24.2,54.4,6000,R,3.24.1,54.4,6 |
1a4c0 | 30 30 30 2c 52 2c 33 22 22 22 0a 20 20 20 20 63 69 74 69 65 73 20 3d 20 22 22 22 5c 0a 32 34 2e | 000,R,3""".....cities.=."""\.24. |
1a4e0 | 30 2c 35 35 2e 30 2c 4b 6f 77 6e 6f 0a 32 35 2e 33 2c 35 34 2e 37 2c 57 69 6c 6e 61 0a 32 36 2e | 0,55.0,Kowno.25.3,54.7,Wilna.26. |
1a500 | 34 2c 35 34 2e 34 2c 53 6d 6f 72 67 6f 6e 69 0a 32 36 2e 38 2c 35 34 2e 33 2c 4d 6f 69 6f 64 65 | 4,54.4,Smorgoni.26.8,54.3,Moiode |
1a520 | 78 6e 6f 0a 32 37 2e 37 2c 35 35 2e 32 2c 47 6c 6f 75 62 6f 6b 6f 65 0a 32 37 2e 36 2c 35 33 2e | xno.27.7,55.2,Gloubokoe.27.6,53. |
1a540 | 39 2c 4d 69 6e 73 6b 0a 32 38 2e 35 2c 35 34 2e 33 2c 53 74 75 64 69 65 6e 73 6b 61 0a 32 38 2e | 9,Minsk.28.5,54.3,Studienska.28. |
1a560 | 37 2c 35 35 2e 35 2c 50 6f 6c 6f 74 7a 6b 0a 32 39 2e 32 2c 35 34 2e 34 2c 42 6f 62 72 0a 33 30 | 7,55.5,Polotzk.29.2,54.4,Bobr.30 |
1a580 | 2e 32 2c 35 35 2e 33 2c 57 69 74 65 62 73 6b 0a 33 30 2e 34 2c 35 34 2e 35 2c 4f 72 73 63 68 61 | .2,55.3,Witebsk.30.4,54.5,Orscha |
1a5a0 | 0a 33 30 2e 34 2c 35 33 2e 39 2c 4d 6f 68 69 6c 6f 77 0a 33 32 2e 30 2c 35 34 2e 38 2c 53 6d 6f | .30.4,53.9,Mohilow.32.0,54.8,Smo |
1a5c0 | 6c 65 6e 73 6b 0a 33 33 2e 32 2c 35 34 2e 39 2c 44 6f 72 6f 67 6f 62 6f 75 67 65 0a 33 34 2e 33 | lensk.33.2,54.9,Dorogobouge.34.3 |
1a5e0 | 2c 35 35 2e 32 2c 57 69 78 6d 61 0a 33 34 2e 34 2c 35 35 2e 35 2c 43 68 6a 61 74 0a 33 36 2e 30 | ,55.2,Wixma.34.4,55.5,Chjat.36.0 |
1a600 | 2c 35 35 2e 35 2c 4d 6f 6a 61 69 73 6b 0a 33 37 2e 36 2c 35 35 2e 38 2c 4d 6f 73 63 6f 75 0a 33 | ,55.5,Mojaisk.37.6,55.8,Moscou.3 |
1a620 | 36 2e 36 2c 35 35 2e 33 2c 54 61 72 61 6e 74 69 6e 6f 0a 33 36 2e 35 2c 35 35 2e 30 2c 4d 61 6c | 6.6,55.3,Tarantino.36.5,55.0,Mal |
1a640 | 6f 2d 4a 61 72 6f 73 65 77 69 69 22 22 22 0a 0a 20 20 20 20 63 20 3d 20 7b 7d 0a 20 20 20 20 66 | o-Jarosewii"""......c.=.{}.....f |
1a660 | 6f 72 20 6c 69 6e 65 20 69 6e 20 63 69 74 69 65 73 2e 73 70 6c 69 74 28 22 5c 6e 22 29 3a 0a 20 | or.line.in.cities.split("\n"):.. |
1a680 | 20 20 20 20 20 20 20 78 2c 20 79 2c 20 6e 61 6d 65 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 | .......x,.y,.name.=.line.split(" |
1a6a0 | 2c 22 29 0a 20 20 20 20 20 20 20 20 63 5b 6e 61 6d 65 5d 20 3d 20 28 66 6c 6f 61 74 28 78 29 2c | ,").........c[name].=.(float(x), |
1a6c0 | 20 66 6c 6f 61 74 28 79 29 29 0a 0a 20 20 20 20 67 20 3d 20 5b 5d 0a 0a 20 20 20 20 66 6f 72 20 | .float(y))......g.=.[]......for. |
1a6e0 | 64 61 74 61 20 69 6e 20 5b 64 61 74 61 31 2c 20 64 61 74 61 32 2c 20 64 61 74 61 33 5d 3a 0a 20 | data.in.[data1,.data2,.data3]:.. |
1a700 | 20 20 20 20 20 20 20 47 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 0a 20 20 20 20 20 20 20 20 69 20 | .......G.=.nx.Graph().........i. |
1a720 | 3d 20 30 0a 20 20 20 20 20 20 20 20 47 2e 70 6f 73 20 3d 20 7b 7d 20 20 23 20 6c 6f 63 61 74 69 | =.0.........G.pos.=.{}..#.locati |
1a740 | 6f 6e 0a 20 20 20 20 20 20 20 20 47 2e 70 6f 70 20 3d 20 7b 7d 20 20 23 20 73 69 7a 65 0a 20 20 | on.........G.pop.=.{}..#.size... |
1a760 | 20 20 20 20 20 20 6c 61 73 74 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6c 69 | ......last.=.None.........for.li |
1a780 | 6e 65 20 69 6e 20 64 61 74 61 2e 73 70 6c 69 74 28 22 5c 6e 22 29 3a 0a 20 20 20 20 20 20 20 20 | ne.in.data.split("\n"):......... |
1a7a0 | 20 20 20 20 78 2c 20 79 2c 20 70 2c 20 72 2c 20 6e 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 | ....x,.y,.p,.r,.n.=.line.split(" |
1a7c0 | 2c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 2e 70 6f 73 5b 69 5d 20 3d 20 28 66 6c 6f 61 | ,").............G.pos[i].=.(floa |
1a7e0 | 74 28 78 29 2c 20 66 6c 6f 61 74 28 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 2e 70 6f | t(x),.float(y)).............G.po |
1a800 | 70 5b 69 5d 20 3d 20 69 6e 74 28 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 61 73 | p[i].=.int(p).............if.las |
1a820 | 74 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 20 | t.is.None:.................last. |
1a840 | 3d 20 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 | =.i.............else:........... |
1a860 | 20 20 20 20 20 20 47 2e 61 64 64 5f 65 64 67 65 28 69 2c 20 6c 61 73 74 2c 20 2a 2a 7b 72 3a 20 | ......G.add_edge(i,.last,.**{r:. |
1a880 | 69 6e 74 28 6e 29 7d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 20 3d 20 | int(n)}).................last.=. |
1a8a0 | 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 20 3d 20 69 20 2b 20 31 0a 20 20 20 20 20 20 20 20 | i.............i.=.i.+.1......... |
1a8c0 | 67 2e 61 70 70 65 6e 64 28 47 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 67 2c 20 63 0a 0a 0a 28 | g.append(G)......return.g,.c...( |
1a8e0 | 67 2c 20 63 69 74 79 29 20 3d 20 6d 69 6e 61 72 64 5f 67 72 61 70 68 28 29 0a 0a 70 6c 74 2e 66 | g,.city).=.minard_graph()..plt.f |
1a900 | 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 31 31 2c 20 35 29 29 0a 70 6c 74 2e 63 6c | igure(1,.figsize=(11,.5)).plt.cl |
1a920 | 66 28 29 0a 63 6f 6c 6f 72 73 20 3d 20 5b 22 62 22 2c 20 22 67 22 2c 20 22 72 22 5d 0a 66 6f 72 | f().colors.=.["b",."g",."r"].for |
1a940 | 20 47 20 69 6e 20 67 3a 0a 20 20 20 20 63 20 3d 20 63 6f 6c 6f 72 73 2e 70 6f 70 28 30 29 0a 20 | .G.in.g:.....c.=.colors.pop(0).. |
1a960 | 20 20 20 6e 6f 64 65 5f 73 69 7a 65 20 3d 20 5b 47 2e 70 6f 70 5b 6e 5d 20 2f 2f 20 33 30 30 20 | ...node_size.=.[G.pop[n].//.300. |
1a980 | 66 6f 72 20 6e 20 69 6e 20 47 5d 0a 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 | for.n.in.G].....nx.draw_networkx |
1a9a0 | 5f 65 64 67 65 73 28 47 2c 20 47 2e 70 6f 73 2c 20 65 64 67 65 5f 63 6f 6c 6f 72 3d 63 2c 20 77 | _edges(G,.G.pos,.edge_color=c,.w |
1a9c0 | 69 64 74 68 3d 34 2c 20 61 6c 70 68 61 3d 30 2e 35 29 0a 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e | idth=4,.alpha=0.5).....nx.draw_n |
1a9e0 | 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 28 47 2c 20 47 2e 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 7a | etworkx_nodes(G,.G.pos,.node_siz |
1aa00 | 65 3d 6e 6f 64 65 5f 73 69 7a 65 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 63 2c 20 61 6c 70 68 61 | e=node_size,.node_color=c,.alpha |
1aa20 | 3d 30 2e 35 29 0a 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 6e 6f 64 65 73 | =0.5).....nx.draw_networkx_nodes |
1aa40 | 28 47 2c 20 47 2e 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 35 2c 20 6e 6f 64 65 5f 63 6f 6c | (G,.G.pos,.node_size=5,.node_col |
1aa60 | 6f 72 3d 22 6b 22 29 0a 0a 66 6f 72 20 63 20 69 6e 20 63 69 74 79 3a 0a 20 20 20 20 78 2c 20 79 | or="k")..for.c.in.city:.....x,.y |
1aa80 | 20 3d 20 63 69 74 79 5b 63 5d 0a 20 20 20 20 70 6c 74 2e 74 65 78 74 28 78 2c 20 79 20 2b 20 30 | .=.city[c].....plt.text(x,.y.+.0 |
1aaa0 | 2e 31 2c 20 63 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 07 7b 57 56 | .1,.c).plt.show().PK.........{WV |
1aac0 | 0c 6c bc 07 cb 02 00 00 cb 02 00 00 1d 00 00 00 67 72 61 70 68 76 69 7a 5f 64 72 61 77 69 6e 67 | .l..............graphviz_drawing |
1aae0 | 2f 70 6c 6f 74 5f 67 72 69 64 2e 70 79 22 22 22 0a 32 44 20 47 72 69 64 0a 3d 3d 3d 3d 3d 3d 3d | /plot_grid.py""".2D.Grid.======= |
1ab00 | 0a 0a 49 6c 6c 75 73 74 72 61 74 65 20 60 7e 6e 65 74 77 6f 72 6b 78 2e 64 72 61 77 69 6e 67 2e | ..Illustrate.`~networkx.drawing. |
1ab20 | 6e 78 5f 61 67 72 61 70 68 2e 77 72 69 74 65 5f 64 6f 74 60 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 | nx_agraph.write_dot`.in.conjunct |
1ab40 | 69 6f 6e 20 77 69 74 68 20 74 68 65 0a 47 72 61 70 68 76 69 7a 20 63 6f 6d 6d 61 6e 64 20 6c 69 | ion.with.the.Graphviz.command.li |
1ab60 | 6e 65 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 63 72 65 61 74 65 20 76 69 73 75 61 6c 69 7a 61 | ne.interface.to.create.visualiza |
1ab80 | 74 69 6f 6e 73 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 | tions.."""..import.matplotlib.py |
1aba0 | 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e | plot.as.plt.import.networkx.as.n |
1abc0 | 78 0a 0a 23 20 25 25 0a 23 20 57 72 69 74 65 20 61 20 64 6f 74 20 66 69 6c 65 20 66 72 6f 6d 20 | x..#.%%.#.Write.a.dot.file.from. |
1abe0 | 61 20 6e 65 74 77 6f 72 6b 78 20 67 72 61 70 68 20 66 6f 72 20 66 75 72 74 68 65 72 20 70 72 6f | a.networkx.graph.for.further.pro |
1ac00 | 63 65 73 73 69 6e 67 20 77 69 74 68 20 67 72 61 70 68 76 69 7a 2e 0a 0a 47 20 3d 20 6e 78 2e 67 | cessing.with.graphviz...G.=.nx.g |
1ac20 | 72 69 64 5f 32 64 5f 67 72 61 70 68 28 35 2c 20 35 29 20 20 23 20 35 78 35 20 67 72 69 64 0a 23 | rid_2d_graph(5,.5)..#.5x5.grid.# |
1ac40 | 20 54 68 69 73 20 65 78 61 6d 70 6c 65 20 6e 65 65 64 73 20 47 72 61 70 68 76 69 7a 20 61 6e 64 | .This.example.needs.Graphviz.and |
1ac60 | 20 50 79 47 72 61 70 68 76 69 7a 0a 6e 78 2e 6e 78 5f 61 67 72 61 70 68 2e 77 72 69 74 65 5f 64 | .PyGraphviz.nx.nx_agraph.write_d |
1ac80 | 6f 74 28 47 2c 20 22 67 72 69 64 2e 64 6f 74 22 29 0a 23 20 48 61 76 69 6e 67 20 63 72 65 61 74 | ot(G,."grid.dot").#.Having.creat |
1aca0 | 65 64 20 74 68 65 20 64 6f 74 20 66 69 6c 65 2c 20 67 72 61 70 68 76 69 7a 20 63 61 6e 20 62 65 | ed.the.dot.file,.graphviz.can.be |
1acc0 | 20 69 6e 76 6f 6b 65 64 20 76 69 61 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0a 23 20 | .invoked.via.the.command.line.#. |
1ace0 | 74 6f 20 67 65 6e 65 72 61 74 65 20 61 6e 20 69 6d 61 67 65 20 6f 6e 20 64 69 73 6b 2c 20 65 2e | to.generate.an.image.on.disk,.e. |
1ad00 | 67 2e 0a 70 72 69 6e 74 28 22 4e 6f 77 20 72 75 6e 3a 20 6e 65 61 74 6f 20 2d 54 70 73 20 67 72 | g..print("Now.run:.neato.-Tps.gr |
1ad20 | 69 64 2e 64 6f 74 20 3e 67 72 69 64 2e 70 73 22 29 0a 0a 23 20 41 6c 74 65 72 6e 61 74 69 76 65 | id.dot.>grid.ps")..#.Alternative |
1ad40 | 6c 79 2c 20 74 68 65 20 61 6e 64 20 69 6d 61 67 65 20 63 61 6e 20 62 65 20 63 72 65 61 74 65 64 | ly,.the.and.image.can.be.created |
1ad60 | 20 64 69 72 65 63 74 6c 79 20 76 69 61 20 41 47 72 61 70 68 2e 64 72 61 77 0a 41 20 3d 20 6e 78 | .directly.via.AGraph.draw.A.=.nx |
1ad80 | 2e 6e 78 5f 61 67 72 61 70 68 2e 74 6f 5f 61 67 72 61 70 68 28 47 29 0a 41 2e 64 72 61 77 28 22 | .nx_agraph.to_agraph(G).A.draw(" |
1ada0 | 35 78 35 2e 70 6e 67 22 2c 20 70 72 6f 67 3d 22 6e 65 61 74 6f 22 29 0a 50 4b 03 04 14 00 00 00 | 5x5.png",.prog="neato").PK...... |
1adc0 | 00 00 06 7b 57 56 42 40 d4 07 62 02 00 00 62 02 00 00 23 00 00 00 67 72 61 70 68 76 69 7a 5f 64 | ...{WVB@..b...b...#...graphviz_d |
1ade0 | 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 63 6f 6e 76 65 72 73 69 6f 6e 2e 70 79 22 22 22 0a 43 6f 6e | rawing/plot_conversion.py""".Con |
1ae00 | 76 65 72 73 69 6f 6e 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 41 6e 20 65 78 61 6d 70 6c 65 20 73 | version.----------..An.example.s |
1ae20 | 68 6f 77 69 6e 67 20 68 6f 77 20 74 6f 20 75 73 65 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 | howing.how.to.use.the.interface. |
1ae40 | 74 6f 20 74 68 65 20 0a 60 70 79 67 72 61 70 68 76 69 7a 2e 41 47 72 61 70 68 60 20 63 6c 61 73 | to.the..`pygraphviz.AGraph`.clas |
1ae60 | 73 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 67 72 61 70 68 76 69 | s.to.convert.to.and.from.graphvi |
1ae80 | 7a 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 47 | z.."""..import.networkx.as.nx..G |
1aea0 | 20 3d 20 6e 78 2e 63 6f 6d 70 6c 65 74 65 5f 67 72 61 70 68 28 35 29 0a 41 20 3d 20 6e 78 2e 6e | .=.nx.complete_graph(5).A.=.nx.n |
1aec0 | 78 5f 61 67 72 61 70 68 2e 74 6f 5f 61 67 72 61 70 68 28 47 29 20 20 23 20 63 6f 6e 76 65 72 74 | x_agraph.to_agraph(G)..#.convert |
1aee0 | 20 74 6f 20 61 20 67 72 61 70 68 76 69 7a 20 67 72 61 70 68 0a 58 31 20 3d 20 6e 78 2e 6e 78 5f | .to.a.graphviz.graph.X1.=.nx.nx_ |
1af00 | 61 67 72 61 70 68 2e 66 72 6f 6d 5f 61 67 72 61 70 68 28 41 29 20 20 23 20 63 6f 6e 76 65 72 74 | agraph.from_agraph(A)..#.convert |
1af20 | 20 62 61 63 6b 20 74 6f 20 6e 65 74 77 6f 72 6b 78 20 28 62 75 74 20 61 73 20 47 72 61 70 68 29 | .back.to.networkx.(but.as.Graph) |
1af40 | 0a 58 32 20 3d 20 6e 78 2e 47 72 61 70 68 28 41 29 20 20 23 20 66 61 6e 63 79 20 77 61 79 20 74 | .X2.=.nx.Graph(A)..#.fancy.way.t |
1af60 | 6f 20 64 6f 20 63 6f 6e 76 65 72 73 69 6f 6e 0a 47 31 20 3d 20 6e 78 2e 47 72 61 70 68 28 58 31 | o.do.conversion.G1.=.nx.Graph(X1 |
1af80 | 29 20 20 23 20 6e 6f 77 20 6d 61 6b 65 20 69 74 20 61 20 47 72 61 70 68 0a 0a 41 2e 77 72 69 74 | )..#.now.make.it.a.Graph..A.writ |
1afa0 | 65 28 22 6b 35 2e 64 6f 74 22 29 20 20 23 20 77 72 69 74 65 20 74 6f 20 64 6f 74 20 66 69 6c 65 | e("k5.dot")..#.write.to.dot.file |
1afc0 | 0a 58 33 20 3d 20 6e 78 2e 6e 78 5f 61 67 72 61 70 68 2e 72 65 61 64 5f 64 6f 74 28 22 6b 35 2e | .X3.=.nx.nx_agraph.read_dot("k5. |
1afe0 | 64 6f 74 22 29 20 20 23 20 72 65 61 64 20 66 72 6f 6d 20 64 6f 74 66 69 6c 65 0a 0a 23 20 59 6f | dot")..#.read.from.dotfile..#.Yo |
1b000 | 75 20 63 61 6e 20 61 6c 73 6f 20 63 72 65 61 74 65 20 2e 70 6e 67 20 64 69 72 65 63 74 6c 79 20 | u.can.also.create..png.directly. |
1b020 | 77 69 74 68 20 74 68 65 20 41 47 72 61 70 68 2e 64 72 61 77 20 6d 65 74 68 6f 64 0a 41 2e 64 72 | with.the.AGraph.draw.method.A.dr |
1b040 | 61 77 28 22 6b 35 2e 70 6e 67 22 2c 20 70 72 6f 67 3d 22 6e 65 61 74 6f 22 29 0a 50 4b 03 04 14 | aw("k5.png",.prog="neato").PK... |
1b060 | 00 00 00 00 00 06 7b 57 56 bd 2c e8 df b6 02 00 00 b6 02 00 00 23 00 00 00 67 72 61 70 68 76 69 | ......{WV.,..........#...graphvi |
1b080 | 7a 5f 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 61 74 74 72 69 62 75 74 65 73 2e 70 79 22 22 22 0a | z_drawing/plot_attributes.py""". |
1b0a0 | 41 74 74 72 69 62 75 74 65 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 45 78 61 6d 70 6c 65 20 69 | Attributes.==========..Example.i |
1b0c0 | 6c 6c 75 73 74 72 61 74 69 6e 67 20 68 6f 77 20 61 74 74 72 69 62 75 74 65 73 20 6f 66 20 6e 6f | llustrating.how.attributes.of.no |
1b0e0 | 64 65 73 2c 20 65 64 67 65 73 2c 20 61 6e 64 20 67 72 61 70 68 73 20 61 72 65 20 68 61 6e 64 6c | des,.edges,.and.graphs.are.handl |
1b100 | 65 64 0a 64 75 72 69 6e 67 20 63 6f 6e 76 65 72 73 69 6f 6e 20 74 6f 2f 66 72 6f 6d 20 60 7e 70 | ed.during.conversion.to/from.`~p |
1b120 | 79 67 72 61 70 68 76 69 7a 2e 41 47 72 61 70 68 60 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e | ygraphviz.AGraph`.."""..import.n |
1b140 | 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 47 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 0a 47 2e | etworkx.as.nx..G.=.nx.Graph().G. |
1b160 | 61 64 64 5f 65 64 67 65 28 31 2c 20 32 2c 20 63 6f 6c 6f 72 3d 22 72 65 64 22 29 0a 47 2e 61 64 | add_edge(1,.2,.color="red").G.ad |
1b180 | 64 5f 65 64 67 65 28 32 2c 20 33 2c 20 63 6f 6c 6f 72 3d 22 72 65 64 22 29 0a 47 2e 61 64 64 5f | d_edge(2,.3,.color="red").G.add_ |
1b1a0 | 6e 6f 64 65 28 33 29 0a 47 2e 61 64 64 5f 6e 6f 64 65 28 34 29 0a 0a 41 20 3d 20 6e 78 2e 6e 78 | node(3).G.add_node(4)..A.=.nx.nx |
1b1c0 | 5f 61 67 72 61 70 68 2e 74 6f 5f 61 67 72 61 70 68 28 47 29 20 20 23 20 63 6f 6e 76 65 72 74 20 | _agraph.to_agraph(G)..#.convert. |
1b1e0 | 74 6f 20 61 20 67 72 61 70 68 76 69 7a 20 67 72 61 70 68 0a 41 2e 64 72 61 77 28 22 61 74 74 72 | to.a.graphviz.graph.A.draw("attr |
1b200 | 69 62 75 74 65 73 2e 70 6e 67 22 2c 20 70 72 6f 67 3d 22 6e 65 61 74 6f 22 29 20 20 23 20 44 72 | ibutes.png",.prog="neato")..#.Dr |
1b220 | 61 77 20 77 69 74 68 20 70 79 67 72 61 70 68 76 69 7a 0a 0a 23 20 63 6f 6e 76 65 72 74 20 62 61 | aw.with.pygraphviz..#.convert.ba |
1b240 | 63 6b 20 74 6f 20 6e 65 74 77 6f 72 6b 78 20 47 72 61 70 68 20 77 69 74 68 20 61 74 74 72 69 62 | ck.to.networkx.Graph.with.attrib |
1b260 | 75 74 65 73 20 6f 6e 20 65 64 67 65 73 20 61 6e 64 0a 23 20 64 65 66 61 75 6c 74 20 61 74 74 72 | utes.on.edges.and.#.default.attr |
1b280 | 69 62 75 74 65 73 20 61 73 20 64 69 63 74 69 6f 6e 61 72 79 20 64 61 74 61 0a 58 20 3d 20 6e 78 | ibutes.as.dictionary.data.X.=.nx |
1b2a0 | 2e 6e 78 5f 61 67 72 61 70 68 2e 66 72 6f 6d 5f 61 67 72 61 70 68 28 41 29 0a 70 72 69 6e 74 28 | .nx_agraph.from_agraph(A).print( |
1b2c0 | 22 65 64 67 65 73 22 29 0a 70 72 69 6e 74 28 6c 69 73 74 28 58 2e 65 64 67 65 73 28 64 61 74 61 | "edges").print(list(X.edges(data |
1b2e0 | 3d 54 72 75 65 29 29 29 0a 70 72 69 6e 74 28 22 64 65 66 61 75 6c 74 20 67 72 61 70 68 20 61 74 | =True))).print("default.graph.at |
1b300 | 74 72 69 62 75 74 65 73 22 29 0a 70 72 69 6e 74 28 58 2e 67 72 61 70 68 29 0a 70 72 69 6e 74 28 | tributes").print(X.graph).print( |
1b320 | 22 6e 6f 64 65 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 73 22 29 0a 70 72 69 6e 74 28 58 2e | "node.node.attributes").print(X. |
1b340 | 6e 6f 64 65 73 2e 64 61 74 61 28 54 72 75 65 29 29 0a 50 4b 03 04 14 00 00 00 00 00 07 7b 57 56 | nodes.data(True)).PK.........{WV |
1b360 | c4 86 33 36 55 02 00 00 55 02 00 00 23 00 00 00 67 72 61 70 68 76 69 7a 5f 64 72 61 77 69 6e 67 | ..36U...U...#...graphviz_drawing |
1b380 | 2f 70 6c 6f 74 5f 6d 69 6e 69 5f 61 74 6c 61 73 2e 70 79 22 22 22 0a 41 74 6c 61 73 0a 3d 3d 3d | /plot_mini_atlas.py""".Atlas.=== |
1b3a0 | 3d 3d 0a 0a 41 6e 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 69 6e 67 20 68 6f 77 20 74 6f 20 77 72 | ==..An.example.showing.how.to.wr |
1b3c0 | 69 74 65 20 66 69 72 73 74 20 32 30 20 67 72 61 70 68 73 20 66 72 6f 6d 20 74 68 65 20 67 72 61 | ite.first.20.graphs.from.the.gra |
1b3e0 | 70 68 20 61 74 6c 61 73 20 61 73 0a 67 72 61 70 68 76 69 7a 20 64 6f 74 20 66 69 6c 65 73 20 47 | ph.atlas.as.graphviz.dot.files.G |
1b400 | 6e 2e 64 6f 74 20 77 68 65 72 65 20 6e 3d 30 2c 31 39 2e 0a 0a 54 4f 44 4f 3a 20 64 6f 65 73 20 | n.dot.where.n=0,19...TODO:.does. |
1b420 | 6e 78 5f 61 67 72 61 70 68 2e 64 72 61 77 20 73 75 70 70 6f 72 74 20 6d 75 6c 74 69 70 6c 65 20 | nx_agraph.draw.support.multiple. |
1b440 | 67 72 61 70 68 73 20 69 6e 20 6f 6e 65 20 70 6e 67 3f 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e | graphs.in.one.png?."""..import.n |
1b460 | 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 61 74 6c 61 73 20 3d 20 6e 78 2e 67 72 61 70 68 5f | etworkx.as.nx..atlas.=.nx.graph_ |
1b480 | 61 74 6c 61 73 5f 67 28 29 5b 30 3a 32 30 5d 0a 0a 66 6f 72 20 47 20 69 6e 20 61 74 6c 61 73 3a | atlas_g()[0:20]..for.G.in.atlas: |
1b4a0 | 0a 20 20 20 20 70 72 69 6e 74 28 47 29 0a 20 20 20 20 41 20 3d 20 6e 78 2e 6e 78 5f 61 67 72 61 | .....print(G).....A.=.nx.nx_agra |
1b4c0 | 70 68 2e 74 6f 5f 61 67 72 61 70 68 28 47 29 0a 20 20 20 20 41 2e 67 72 61 70 68 5f 61 74 74 72 | ph.to_agraph(G).....A.graph_attr |
1b4e0 | 5b 22 6c 61 62 65 6c 22 5d 20 3d 20 47 2e 6e 61 6d 65 0a 20 20 20 20 23 20 73 65 74 20 64 65 66 | ["label"].=.G.name.....#.set.def |
1b500 | 61 75 6c 74 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 20 41 2e 6e 6f 64 65 5f | ault.node.attributes.....A.node_ |
1b520 | 61 74 74 72 5b 22 63 6f 6c 6f 72 22 5d 20 3d 20 22 72 65 64 22 0a 20 20 20 20 41 2e 6e 6f 64 65 | attr["color"].=."red".....A.node |
1b540 | 5f 61 74 74 72 5b 22 73 74 79 6c 65 22 5d 20 3d 20 22 66 69 6c 6c 65 64 22 0a 20 20 20 20 41 2e | _attr["style"].=."filled".....A. |
1b560 | 6e 6f 64 65 5f 61 74 74 72 5b 22 73 68 61 70 65 22 5d 20 3d 20 22 63 69 72 63 6c 65 22 0a 20 20 | node_attr["shape"].=."circle"... |
1b580 | 20 20 41 2e 77 72 69 74 65 28 47 2e 6e 61 6d 65 20 2b 20 22 2e 64 6f 74 22 29 0a 0a 23 20 44 72 | ..A.write(G.name.+.".dot")..#.Dr |
1b5a0 | 61 77 20 74 68 65 20 32 30 74 68 20 67 72 61 70 68 20 66 72 6f 6d 20 74 68 65 20 61 74 6c 61 73 | aw.the.20th.graph.from.the.atlas |
1b5c0 | 20 74 6f 20 70 6e 67 0a 41 2e 64 72 61 77 28 22 41 32 30 2e 70 6e 67 22 2c 20 70 72 6f 67 3d 22 | .to.png.A.draw("A20.png",.prog=" |
1b5e0 | 6e 65 61 74 6f 22 29 0a 50 4b 03 04 14 00 00 00 00 00 05 7b 57 56 ce 9e 05 c7 50 04 00 00 50 04 | neato").PK.........{WV....P...P. |
1b600 | 00 00 25 00 00 00 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 2f 70 6c 6f 74 5f 64 65 63 6f 6d | ..%...graphviz_layout/plot_decom |
1b620 | 70 6f 73 69 74 69 6f 6e 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 44 65 63 | position.py""".=============.Dec |
1b640 | 6f 6d 70 6f 73 69 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 45 78 61 6d 70 6c | omposition.=============..Exampl |
1b660 | 65 20 6f 66 20 63 72 65 61 74 69 6e 67 20 61 20 6a 75 6e 63 74 69 6f 6e 20 74 72 65 65 20 66 72 | e.of.creating.a.junction.tree.fr |
1b680 | 6f 6d 20 61 20 64 69 72 65 63 74 65 64 20 67 72 61 70 68 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 | om.a.directed.graph.."""..import |
1b6a0 | 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 | .matplotlib.pyplot.as.plt.import |
1b6c0 | 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 42 20 3d 20 6e 78 2e 44 69 47 72 61 70 68 28 | .networkx.as.nx..B.=.nx.DiGraph( |
1b6e0 | 29 0a 42 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 5b 22 41 22 2c 20 22 42 22 2c 20 22 43 | ).B.add_nodes_from(["A",."B",."C |
1b700 | 22 2c 20 22 44 22 2c 20 22 45 22 2c 20 22 46 22 5d 29 0a 42 2e 61 64 64 5f 65 64 67 65 73 5f 66 | ",."D",."E",."F"]).B.add_edges_f |
1b720 | 72 6f 6d 28 0a 20 20 20 20 5b 28 22 41 22 2c 20 22 42 22 29 2c 20 28 22 41 22 2c 20 22 43 22 29 | rom(.....[("A",."B"),.("A",."C") |
1b740 | 2c 20 28 22 42 22 2c 20 22 44 22 29 2c 20 28 22 42 22 2c 20 22 46 22 29 2c 20 28 22 43 22 2c 20 | ,.("B",."D"),.("B",."F"),.("C",. |
1b760 | 22 45 22 29 2c 20 28 22 45 22 2c 20 22 46 22 29 5d 0a 29 0a 0a 6f 70 74 69 6f 6e 73 20 3d 20 7b | "E"),.("E",."F")].)..options.=.{ |
1b780 | 22 77 69 74 68 5f 6c 61 62 65 6c 73 22 3a 20 54 72 75 65 2c 20 22 6e 6f 64 65 5f 63 6f 6c 6f 72 | "with_labels":.True,."node_color |
1b7a0 | 22 3a 20 22 77 68 69 74 65 22 2c 20 22 65 64 67 65 63 6f 6c 6f 72 73 22 3a 20 22 62 6c 75 65 22 | ":."white",."edgecolors":."blue" |
1b7c0 | 7d 0a 0a 66 69 67 20 3d 20 70 6c 74 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 36 2c 20 | }..fig.=.plt.figure(figsize=(6,. |
1b7e0 | 39 29 29 0a 61 78 67 72 69 64 20 3d 20 66 69 67 2e 61 64 64 5f 67 72 69 64 73 70 65 63 28 33 2c | 9)).axgrid.=.fig.add_gridspec(3, |
1b800 | 20 32 29 0a 0a 61 78 31 20 3d 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 61 78 67 72 69 | .2)..ax1.=.fig.add_subplot(axgri |
1b820 | 64 5b 30 2c 20 30 5d 29 0a 61 78 31 2e 73 65 74 5f 74 69 74 6c 65 28 22 42 61 79 65 73 69 61 6e | d[0,.0]).ax1.set_title("Bayesian |
1b840 | 20 4e 65 74 77 6f 72 6b 22 29 0a 70 6f 73 20 3d 20 6e 78 2e 6e 78 5f 61 67 72 61 70 68 2e 67 72 | .Network").pos.=.nx.nx_agraph.gr |
1b860 | 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 28 42 2c 20 70 72 6f 67 3d 22 6e 65 61 74 6f 22 29 0a 6e | aphviz_layout(B,.prog="neato").n |
1b880 | 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 28 42 2c 20 70 6f 73 3d 70 6f 73 2c 20 2a 2a 6f 70 | x.draw_networkx(B,.pos=pos,.**op |
1b8a0 | 74 69 6f 6e 73 29 0a 0a 6d 67 20 3d 20 6e 78 2e 6d 6f 72 61 6c 5f 67 72 61 70 68 28 42 29 0a 61 | tions)..mg.=.nx.moral_graph(B).a |
1b8c0 | 78 32 20 3d 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 61 78 67 72 69 64 5b 30 2c 20 31 | x2.=.fig.add_subplot(axgrid[0,.1 |
1b8e0 | 5d 2c 20 73 68 61 72 65 78 3d 61 78 31 2c 20 73 68 61 72 65 79 3d 61 78 31 29 0a 61 78 32 2e 73 | ],.sharex=ax1,.sharey=ax1).ax2.s |
1b900 | 65 74 5f 74 69 74 6c 65 28 22 4d 6f 72 61 6c 69 7a 65 64 20 47 72 61 70 68 22 29 0a 6e 78 2e 64 | et_title("Moralized.Graph").nx.d |
1b920 | 72 61 77 5f 6e 65 74 77 6f 72 6b 78 28 6d 67 2c 20 70 6f 73 3d 70 6f 73 2c 20 2a 2a 6f 70 74 69 | raw_networkx(mg,.pos=pos,.**opti |
1b940 | 6f 6e 73 29 0a 0a 6a 74 20 3d 20 6e 78 2e 6a 75 6e 63 74 69 6f 6e 5f 74 72 65 65 28 42 29 0a 61 | ons)..jt.=.nx.junction_tree(B).a |
1b960 | 78 33 20 3d 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 61 78 67 72 69 64 5b 31 3a 2c 20 | x3.=.fig.add_subplot(axgrid[1:,. |
1b980 | 3a 5d 29 0a 61 78 33 2e 73 65 74 5f 74 69 74 6c 65 28 22 4a 75 6e 63 74 69 6f 6e 20 54 72 65 65 | :]).ax3.set_title("Junction.Tree |
1b9a0 | 22 29 0a 61 78 33 2e 6d 61 72 67 69 6e 73 28 30 2e 31 35 2c 20 30 2e 32 35 29 0a 6e 73 69 7a 65 | ").ax3.margins(0.15,.0.25).nsize |
1b9c0 | 20 3d 20 5b 32 30 30 30 20 2a 20 6c 65 6e 28 6e 29 20 66 6f 72 20 6e 20 69 6e 20 6c 69 73 74 28 | .=.[2000.*.len(n).for.n.in.list( |
1b9e0 | 6a 74 2e 6e 6f 64 65 73 28 29 29 5d 0a 70 6f 73 20 3d 20 6e 78 2e 6e 78 5f 61 67 72 61 70 68 2e | jt.nodes())].pos.=.nx.nx_agraph. |
1ba00 | 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 28 6a 74 2c 20 70 72 6f 67 3d 22 6e 65 61 74 6f 22 | graphviz_layout(jt,.prog="neato" |
1ba20 | 29 0a 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 28 6a 74 2c 20 70 6f 73 3d 70 6f 73 2c 20 | ).nx.draw_networkx(jt,.pos=pos,. |
1ba40 | 6e 6f 64 65 5f 73 69 7a 65 3d 6e 73 69 7a 65 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 0a 70 6c 74 | node_size=nsize,.**options)..plt |
1ba60 | 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 | .tight_layout().plt.show().PK... |
1ba80 | 00 00 00 00 00 02 7b 57 56 3f 47 2f 07 94 05 00 00 94 05 00 00 1d 00 00 00 67 72 61 70 68 76 69 | ......{WV?G/.............graphvi |
1baa0 | 7a 5f 6c 61 79 6f 75 74 2f 70 6c 6f 74 5f 61 74 6c 61 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 0a | z_layout/plot_atlas.py""".=====. |
1bac0 | 41 74 6c 61 73 0a 3d 3d 3d 3d 3d 0a 0a 41 74 6c 61 73 20 6f 66 20 61 6c 6c 20 63 6f 6e 6e 65 63 | Atlas.=====..Atlas.of.all.connec |
1bae0 | 74 65 64 20 67 72 61 70 68 73 20 77 69 74 68 20 75 70 20 74 6f 20 36 20 6e 6f 64 65 73 2e 0a 0a | ted.graphs.with.up.to.6.nodes... |
1bb00 | 54 68 69 73 20 65 78 61 6d 70 6c 65 20 75 73 65 73 20 47 72 61 70 68 76 69 7a 20 76 69 61 20 50 | This.example.uses.Graphviz.via.P |
1bb20 | 79 47 72 61 70 68 76 69 7a 2e 0a 0a 54 68 65 20 69 6d 61 67 65 20 73 68 6f 75 6c 64 20 73 68 6f | yGraphviz...The.image.should.sho |
1bb40 | 77 20 31 34 32 20 67 72 61 70 68 73 2e 0a 57 65 20 64 6f 6e 27 74 20 70 6c 6f 74 20 74 68 65 20 | w.142.graphs..We.don't.plot.the. |
1bb60 | 65 6d 70 74 79 20 67 72 61 70 68 20 6e 6f 72 20 74 68 65 20 73 69 6e 67 6c 65 20 6e 6f 64 65 20 | empty.graph.nor.the.single.node. |
1bb80 | 67 72 61 70 68 2e 0a 28 31 34 32 20 69 73 20 74 68 65 20 73 75 6d 20 6f 66 20 76 61 6c 75 65 73 | graph..(142.is.the.sum.of.values |
1bba0 | 20 32 20 74 6f 20 6e 3d 36 20 69 6e 20 73 65 71 75 65 6e 63 65 20 6f 65 69 73 2e 6f 72 67 2f 41 | .2.to.n=6.in.sequence.oeis.org/A |
1bbc0 | 30 30 31 33 34 39 29 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 72 61 6e 64 6f 6d 0a 0a 69 6d 70 | 001349).."""..import.random..imp |
1bbe0 | 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 | ort.matplotlib.pyplot.as.plt.imp |
1bc00 | 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 0a 0a 47 72 61 70 68 4d 61 74 63 68 65 | ort.networkx.as.nx...GraphMatche |
1bc20 | 72 20 3d 20 6e 78 2e 69 73 6f 6d 6f 72 70 68 69 73 6d 2e 76 66 32 75 73 65 72 66 75 6e 63 2e 47 | r.=.nx.isomorphism.vf2userfunc.G |
1bc40 | 72 61 70 68 4d 61 74 63 68 65 72 0a 0a 0a 64 65 66 20 61 74 6c 61 73 36 28 29 3a 0a 20 20 20 20 | raphMatcher...def.atlas6():..... |
1bc60 | 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 61 74 6c 61 73 20 6f 66 20 61 6c 6c 20 63 6f 6e 6e 65 | """Return.the.atlas.of.all.conne |
1bc80 | 63 74 65 64 20 67 72 61 70 68 73 20 77 69 74 68 20 61 74 20 6d 6f 73 74 20 36 20 6e 6f 64 65 73 | cted.graphs.with.at.most.6.nodes |
1bca0 | 22 22 22 0a 0a 20 20 20 20 41 74 6c 61 73 20 3d 20 6e 78 2e 67 72 61 70 68 5f 61 74 6c 61 73 5f | """......Atlas.=.nx.graph_atlas_ |
1bcc0 | 67 28 29 5b 33 3a 32 30 39 5d 20 20 23 20 30 2c 20 31 2c 20 32 20 3d 3e 20 6e 6f 20 65 64 67 65 | g()[3:209]..#.0,.1,.2.=>.no.edge |
1bce0 | 73 2e 20 32 30 38 20 69 73 20 6c 61 73 74 20 36 20 6e 6f 64 65 20 67 72 61 70 68 0a 20 20 20 20 | s..208.is.last.6.node.graph..... |
1bd00 | 55 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 20 20 23 20 67 72 61 70 68 20 66 6f 72 20 75 6e 69 6f | U.=.nx.Graph()..#.graph.for.unio |
1bd20 | 6e 20 6f 66 20 61 6c 6c 20 67 72 61 70 68 73 20 69 6e 20 61 74 6c 61 73 0a 20 20 20 20 66 6f 72 | n.of.all.graphs.in.atlas.....for |
1bd40 | 20 47 20 69 6e 20 41 74 6c 61 73 3a 0a 20 20 20 20 20 20 20 20 23 20 63 68 65 63 6b 20 69 66 20 | .G.in.Atlas:.........#.check.if. |
1bd60 | 63 6f 6e 6e 65 63 74 65 64 0a 20 20 20 20 20 20 20 20 69 66 20 6e 78 2e 6e 75 6d 62 65 72 5f 63 | connected.........if.nx.number_c |
1bd80 | 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 20 3d 3d 20 31 3a 0a 20 20 20 | onnected_components(G).==.1:.... |
1bda0 | 20 20 20 20 20 20 20 20 20 23 20 63 68 65 63 6b 20 69 66 20 69 73 6f 6d 6f 72 70 68 69 63 20 74 | .........#.check.if.isomorphic.t |
1bdc0 | 6f 20 61 20 70 72 65 76 69 6f 75 73 20 67 72 61 70 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 | o.a.previous.graph.............i |
1bde0 | 66 20 6e 6f 74 20 47 72 61 70 68 4d 61 74 63 68 65 72 28 55 2c 20 47 29 2e 73 75 62 67 72 61 70 | f.not.GraphMatcher(U,.G).subgrap |
1be00 | 68 5f 69 73 5f 69 73 6f 6d 6f 72 70 68 69 63 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | h_is_isomorphic():.............. |
1be20 | 20 20 20 55 20 3d 20 6e 78 2e 64 69 73 6a 6f 69 6e 74 5f 75 6e 69 6f 6e 28 55 2c 20 47 29 0a 20 | ...U.=.nx.disjoint_union(U,.G).. |
1be40 | 20 20 20 72 65 74 75 72 6e 20 55 0a 0a 0a 47 20 3d 20 61 74 6c 61 73 36 28 29 0a 0a 70 72 69 6e | ...return.U...G.=.atlas6()..prin |
1be60 | 74 28 47 29 0a 70 72 69 6e 74 28 6e 78 2e 6e 75 6d 62 65 72 5f 63 6f 6e 6e 65 63 74 65 64 5f 63 | t(G).print(nx.number_connected_c |
1be80 | 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 2c 20 22 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f 6e 65 | omponents(G),."connected.compone |
1bea0 | 6e 74 73 22 29 0a 0a 70 6c 74 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 38 2c | nts")..plt.figure(1,.figsize=(8, |
1bec0 | 20 38 29 29 0a 23 20 6c 61 79 6f 75 74 20 67 72 61 70 68 73 20 77 69 74 68 20 70 6f 73 69 74 69 | .8)).#.layout.graphs.with.positi |
1bee0 | 6f 6e 73 20 75 73 69 6e 67 20 67 72 61 70 68 76 69 7a 20 6e 65 61 74 6f 0a 70 6f 73 20 3d 20 6e | ons.using.graphviz.neato.pos.=.n |
1bf00 | 78 2e 6e 78 5f 61 67 72 61 70 68 2e 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 28 47 2c 20 70 | x.nx_agraph.graphviz_layout(G,.p |
1bf20 | 72 6f 67 3d 22 6e 65 61 74 6f 22 29 0a 23 20 63 6f 6c 6f 72 20 6e 6f 64 65 73 20 74 68 65 20 73 | rog="neato").#.color.nodes.the.s |
1bf40 | 61 6d 65 20 69 6e 20 65 61 63 68 20 63 6f 6e 6e 65 63 74 65 64 20 73 75 62 67 72 61 70 68 0a 43 | ame.in.each.connected.subgraph.C |
1bf60 | 20 3d 20 28 47 2e 73 75 62 67 72 61 70 68 28 63 29 20 66 6f 72 20 63 20 69 6e 20 6e 78 2e 63 6f | .=.(G.subgraph(c).for.c.in.nx.co |
1bf80 | 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 29 0a 66 6f 72 20 67 20 69 6e 20 | nnected_components(G)).for.g.in. |
1bfa0 | 43 3a 0a 20 20 20 20 63 20 3d 20 5b 72 61 6e 64 6f 6d 2e 72 61 6e 64 6f 6d 28 29 5d 20 2a 20 6e | C:.....c.=.[random.random()].*.n |
1bfc0 | 78 2e 6e 75 6d 62 65 72 5f 6f 66 5f 6e 6f 64 65 73 28 67 29 20 20 23 20 72 61 6e 64 6f 6d 20 63 | x.number_of_nodes(g)..#.random.c |
1bfe0 | 6f 6c 6f 72 2e 2e 2e 0a 20 20 20 20 6e 78 2e 64 72 61 77 28 67 2c 20 70 6f 73 2c 20 6e 6f 64 65 | olor........nx.draw(g,.pos,.node |
1c000 | 5f 73 69 7a 65 3d 34 30 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 63 2c 20 76 6d 69 6e 3d 30 2e 30 | _size=40,.node_color=c,.vmin=0.0 |
1c020 | 2c 20 76 6d 61 78 3d 31 2e 30 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 29 0a 70 | ,.vmax=1.0,.with_labels=False).p |
1c040 | 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 05 7b 57 56 e6 71 7f ce bb 06 00 00 | lt.show().PK.........{WV.q...... |
1c060 | bb 06 00 00 27 00 00 00 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 2f 70 6c 6f 74 5f 67 69 61 | ....'...graphviz_layout/plot_gia |
1c080 | 6e 74 5f 63 6f 6d 70 6f 6e 65 6e 74 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | nt_component.py""".============= |
1c0a0 | 3d 3d 0a 47 69 61 6e 74 20 43 6f 6d 70 6f 6e 65 6e 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ==.Giant.Component.============= |
1c0c0 | 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 | ==..This.example.illustrates.the |
1c0e0 | 20 73 75 64 64 65 6e 20 61 70 70 65 61 72 61 6e 63 65 20 6f 66 20 61 0a 67 69 61 6e 74 20 63 6f | .sudden.appearance.of.a.giant.co |
1c100 | 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 6e 20 61 20 62 69 6e 6f 6d 69 61 6c 20 | nnected.component.in.a.binomial. |
1c120 | 72 61 6e 64 6f 6d 20 67 72 61 70 68 2e 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 6e 65 65 64 | random.graph...This.example.need |
1c140 | 73 20 47 72 61 70 68 76 69 7a 20 61 6e 64 20 50 79 47 72 61 70 68 76 69 7a 2e 0a 22 22 22 0a 0a | s.Graphviz.and.PyGraphviz..""".. |
1c160 | 69 6d 70 6f 72 74 20 6d 61 74 68 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 | import.math..import.matplotlib.p |
1c180 | 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 | yplot.as.plt.import.networkx.as. |
1c1a0 | 6e 78 0a 0a 6e 20 3d 20 31 35 30 20 20 23 20 31 35 30 20 6e 6f 64 65 73 0a 23 20 70 20 76 61 6c | nx..n.=.150..#.150.nodes.#.p.val |
1c1c0 | 75 65 20 61 74 20 77 68 69 63 68 20 67 69 61 6e 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 28 6f 66 20 | ue.at.which.giant.component.(of. |
1c1e0 | 73 69 7a 65 20 6c 6f 67 28 6e 29 20 6e 6f 64 65 73 29 20 69 73 20 65 78 70 65 63 74 65 64 0a 70 | size.log(n).nodes).is.expected.p |
1c200 | 5f 67 69 61 6e 74 20 3d 20 31 2e 30 20 2f 20 28 6e 20 2d 20 31 29 0a 23 20 70 20 76 61 6c 75 65 | _giant.=.1.0./.(n.-.1).#.p.value |
1c220 | 20 61 74 20 77 68 69 63 68 20 67 72 61 70 68 20 69 73 20 65 78 70 65 63 74 65 64 20 74 6f 20 62 | .at.which.graph.is.expected.to.b |
1c240 | 65 63 6f 6d 65 20 63 6f 6d 70 6c 65 74 65 6c 79 20 63 6f 6e 6e 65 63 74 65 64 0a 70 5f 63 6f 6e | ecome.completely.connected.p_con |
1c260 | 6e 20 3d 20 6d 61 74 68 2e 6c 6f 67 28 6e 29 20 2f 20 6e 0a 0a 23 20 74 68 65 20 66 6f 6c 6c 6f | n.=.math.log(n)./.n..#.the.follo |
1c280 | 77 69 6e 67 20 72 61 6e 67 65 20 6f 66 20 70 20 76 61 6c 75 65 73 20 73 68 6f 75 6c 64 20 62 65 | wing.range.of.p.values.should.be |
1c2a0 | 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 74 68 72 65 73 68 6f 6c 64 0a 70 76 61 6c 73 20 3d 20 | .close.to.the.threshold.pvals.=. |
1c2c0 | 5b 30 2e 30 30 33 2c 20 30 2e 30 30 36 2c 20 30 2e 30 30 38 2c 20 30 2e 30 31 35 5d 0a 0a 66 69 | [0.003,.0.006,.0.008,.0.015]..fi |
1c2e0 | 67 2c 20 61 78 65 73 20 3d 20 70 6c 74 2e 73 75 62 70 6c 6f 74 73 28 32 2c 20 32 29 0a 66 6f 72 | g,.axes.=.plt.subplots(2,.2).for |
1c300 | 20 70 2c 20 61 78 2c 20 73 65 65 64 20 69 6e 20 7a 69 70 28 70 76 61 6c 73 2c 20 61 78 65 73 2e | .p,.ax,.seed.in.zip(pvals,.axes. |
1c320 | 72 61 76 65 6c 28 29 2c 20 72 61 6e 67 65 28 6c 65 6e 28 70 76 61 6c 73 29 29 29 3a 0a 20 20 20 | ravel(),.range(len(pvals))):.... |
1c340 | 20 23 23 23 23 20 67 65 6e 65 72 61 74 65 20 67 72 61 70 68 20 23 23 23 23 0a 20 20 20 20 47 20 | .####.generate.graph.####.....G. |
1c360 | 3d 20 6e 78 2e 62 69 6e 6f 6d 69 61 6c 5f 67 72 61 70 68 28 6e 2c 20 70 2c 20 73 65 65 64 3d 73 | =.nx.binomial_graph(n,.p,.seed=s |
1c380 | 65 65 64 29 0a 20 20 20 20 23 20 69 64 65 6e 74 69 66 79 20 63 6f 6e 6e 65 63 74 65 64 2f 64 69 | eed).....#.identify.connected/di |
1c3a0 | 73 63 6f 6e 6e 65 63 74 65 64 20 6e 6f 64 65 73 0a 20 20 20 20 63 6f 6e 6e 65 63 74 65 64 20 3d | sconnected.nodes.....connected.= |
1c3c0 | 20 5b 6e 20 66 6f 72 20 6e 2c 20 64 20 69 6e 20 47 2e 64 65 67 72 65 65 28 29 20 69 66 20 64 20 | .[n.for.n,.d.in.G.degree().if.d. |
1c3e0 | 3e 20 30 5d 0a 20 20 20 20 64 69 73 63 6f 6e 6e 65 63 74 65 64 20 3d 20 6c 69 73 74 28 73 65 74 | >.0].....disconnected.=.list(set |
1c400 | 28 47 2e 6e 6f 64 65 73 28 29 29 20 2d 20 73 65 74 28 63 6f 6e 6e 65 63 74 65 64 29 29 0a 20 20 | (G.nodes()).-.set(connected))... |
1c420 | 20 20 23 20 69 64 65 6e 74 69 66 79 20 6c 61 72 67 65 73 74 20 63 6f 6e 6e 65 63 74 65 64 20 63 | ..#.identify.largest.connected.c |
1c440 | 6f 6d 70 6f 6e 65 6e 74 0a 20 20 20 20 47 63 63 20 3d 20 73 6f 72 74 65 64 28 6e 78 2e 63 6f 6e | omponent.....Gcc.=.sorted(nx.con |
1c460 | 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 2c 20 6b 65 79 3d 6c 65 6e 2c 20 72 | nected_components(G),.key=len,.r |
1c480 | 65 76 65 72 73 65 3d 54 72 75 65 29 0a 20 20 20 20 47 30 20 3d 20 47 2e 73 75 62 67 72 61 70 68 | everse=True).....G0.=.G.subgraph |
1c4a0 | 28 47 63 63 5b 30 5d 29 0a 20 20 20 20 23 23 23 23 20 64 72 61 77 20 67 72 61 70 68 20 23 23 23 | (Gcc[0]).....####.draw.graph.### |
1c4c0 | 23 0a 20 20 20 20 70 6f 73 20 3d 20 6e 78 2e 6e 78 5f 61 67 72 61 70 68 2e 67 72 61 70 68 76 69 | #.....pos.=.nx.nx_agraph.graphvi |
1c4e0 | 7a 5f 6c 61 79 6f 75 74 28 47 29 0a 20 20 20 20 61 78 2e 73 65 74 5f 74 69 74 6c 65 28 66 22 70 | z_layout(G).....ax.set_title(f"p |
1c500 | 20 3d 20 7b 70 3a 2e 33 66 7d 22 29 0a 20 20 20 20 23 20 64 72 61 77 20 6c 61 72 67 65 73 74 20 | .=.{p:.3f}").....#.draw.largest. |
1c520 | 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 0a 20 20 20 20 6f 70 74 69 6f 6e 73 20 | connected.component.....options. |
1c540 | 3d 20 7b 22 61 78 22 3a 20 61 78 2c 20 22 65 64 67 65 5f 63 6f 6c 6f 72 22 3a 20 22 74 61 62 3a | =.{"ax":.ax,."edge_color":."tab: |
1c560 | 72 65 64 22 7d 0a 20 20 20 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 | red"}.....nx.draw_networkx_edges |
1c580 | 28 47 30 2c 20 70 6f 73 2c 20 77 69 64 74 68 3d 36 2e 30 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a | (G0,.pos,.width=6.0,.**options). |
1c5a0 | 20 20 20 20 23 20 64 72 61 77 20 6f 74 68 65 72 20 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f | ....#.draw.other.connected.compo |
1c5c0 | 6e 65 6e 74 73 0a 20 20 20 20 66 6f 72 20 47 69 20 69 6e 20 47 63 63 5b 31 3a 5d 3a 0a 20 20 20 | nents.....for.Gi.in.Gcc[1:]:.... |
1c5e0 | 20 20 20 20 20 69 66 20 6c 65 6e 28 47 69 29 20 3e 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 | .....if.len(Gi).>.1:............ |
1c600 | 20 6e 78 2e 64 72 61 77 5f 6e 65 74 77 6f 72 6b 78 5f 65 64 67 65 73 28 47 2e 73 75 62 67 72 61 | .nx.draw_networkx_edges(G.subgra |
1c620 | 70 68 28 47 69 29 2c 20 70 6f 73 2c 20 61 6c 70 68 61 3d 30 2e 33 2c 20 77 69 64 74 68 3d 35 2e | ph(Gi),.pos,.alpha=0.3,.width=5. |
1c640 | 30 2c 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 20 20 20 20 23 20 64 72 61 77 20 63 6f 6e 6e 65 63 74 | 0,.**options).....#.draw.connect |
1c660 | 65 64 2f 64 69 73 63 6f 6e 6e 65 63 74 65 64 20 6e 6f 64 65 73 0a 20 20 20 20 6f 70 74 69 6f 6e | ed/disconnected.nodes.....option |
1c680 | 73 20 3d 20 7b 22 61 78 22 3a 20 61 78 2c 20 22 6e 6f 64 65 5f 73 69 7a 65 22 3a 20 33 30 2c 20 | s.=.{"ax":.ax,."node_size":.30,. |
1c6a0 | 22 65 64 67 65 63 6f 6c 6f 72 73 22 3a 20 22 77 68 69 74 65 22 7d 0a 20 20 20 20 6e 78 2e 64 72 | "edgecolors":."white"}.....nx.dr |
1c6c0 | 61 77 28 47 2c 20 70 6f 73 2c 20 6e 6f 64 65 6c 69 73 74 3d 63 6f 6e 6e 65 63 74 65 64 2c 20 2a | aw(G,.pos,.nodelist=connected,.* |
1c6e0 | 2a 6f 70 74 69 6f 6e 73 29 0a 20 20 20 20 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 2c 20 6e 6f | *options).....nx.draw(G,.pos,.no |
1c700 | 64 65 6c 69 73 74 3d 64 69 73 63 6f 6e 6e 65 63 74 65 64 2c 20 61 6c 70 68 61 3d 30 2e 32 35 2c | delist=disconnected,.alpha=0.25, |
1c720 | 20 2a 2a 6f 70 74 69 6f 6e 73 29 0a 66 69 67 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 | .**options).fig.tight_layout().p |
1c740 | 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 05 7b 57 56 7d af ce 32 76 01 00 00 | lt.show().PK.........{WV}..2v... |
1c760 | 76 01 00 00 25 00 00 00 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 2f 70 6c 6f 74 5f 63 69 72 | v...%...graphviz_layout/plot_cir |
1c780 | 63 75 6c 61 72 5f 74 72 65 65 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 43 | cular_tree.py""".=============.C |
1c7a0 | 69 72 63 75 6c 61 72 20 54 72 65 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 | ircular.Tree.=============..This |
1c7c0 | 20 65 78 61 6d 70 6c 65 20 6e 65 65 64 73 20 47 72 61 70 68 76 69 7a 20 61 6e 64 20 50 79 47 72 | .example.needs.Graphviz.and.PyGr |
1c7e0 | 61 70 68 76 69 7a 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 | aphviz.."""..import.matplotlib.p |
1c800 | 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 | yplot.as.plt.import.networkx.as. |
1c820 | 6e 78 0a 0a 47 20 3d 20 6e 78 2e 62 61 6c 61 6e 63 65 64 5f 74 72 65 65 28 33 2c 20 35 29 0a 70 | nx..G.=.nx.balanced_tree(3,.5).p |
1c840 | 6f 73 20 3d 20 6e 78 2e 6e 78 5f 61 67 72 61 70 68 2e 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 | os.=.nx.nx_agraph.graphviz_layou |
1c860 | 74 28 47 2c 20 70 72 6f 67 3d 22 74 77 6f 70 69 22 2c 20 61 72 67 73 3d 22 22 29 0a 70 6c 74 2e | t(G,.prog="twopi",.args="").plt. |
1c880 | 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 38 2c 20 38 29 29 0a 6e 78 2e 64 72 61 77 28 47 | figure(figsize=(8,.8)).nx.draw(G |
1c8a0 | 2c 20 70 6f 73 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 32 30 2c 20 61 6c 70 68 61 3d 30 2e 35 2c 20 | ,.pos,.node_size=20,.alpha=0.5,. |
1c8c0 | 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 22 62 6c 75 65 22 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 | node_color="blue",.with_labels=F |
1c8e0 | 61 6c 73 65 29 0a 70 6c 74 2e 61 78 69 73 28 22 65 71 75 61 6c 22 29 0a 70 6c 74 2e 73 68 6f 77 | alse).plt.axis("equal").plt.show |
1c900 | 28 29 0a 50 4b 03 04 14 00 00 00 00 00 06 7b 57 56 7f 36 18 54 10 06 00 00 10 06 00 00 23 00 00 | ().PK.........{WV.6.T........#.. |
1c920 | 00 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 2f 70 6c 6f 74 5f 6c 61 6e 6c 5f 72 6f 75 74 65 | .graphviz_layout/plot_lanl_route |
1c940 | 73 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4c 61 6e 6c 20 52 6f 75 74 65 73 0a | s.py""".===========.Lanl.Routes. |
1c960 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 52 6f 75 74 65 73 20 74 6f 20 4c 41 4e 4c 20 66 72 6f 6d | ===========..Routes.to.LANL.from |
1c980 | 20 31 38 36 20 73 69 74 65 73 20 6f 6e 20 74 68 65 20 49 6e 74 65 72 6e 65 74 2e 0a 0a 54 68 65 | .186.sites.on.the.Internet...The |
1c9a0 | 20 64 61 74 61 20 66 69 6c 65 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 61 74 3a 0a 0a 2d 20 68 | .data.file.can.be.found.at:..-.h |
1c9c0 | 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6e 65 74 77 6f 72 6b 78 2f 6e 65 74 77 6f | ttps://github.com/networkx/netwo |
1c9e0 | 72 6b 78 2f 62 6c 6f 62 2f 6d 61 69 6e 2f 65 78 61 6d 70 6c 65 73 2f 67 72 61 70 68 76 69 7a 5f | rkx/blob/main/examples/graphviz_ |
1ca00 | 6c 61 79 6f 75 74 2f 6c 61 6e 6c 5f 72 6f 75 74 65 73 2e 65 64 67 65 6c 69 73 74 0a 0a 54 68 69 | layout/lanl_routes.edgelist..Thi |
1ca20 | 73 20 65 78 61 6d 70 6c 65 20 6e 65 65 64 73 20 47 72 61 70 68 76 69 7a 20 61 6e 64 20 50 79 47 | s.example.needs.Graphviz.and.PyG |
1ca40 | 72 61 70 68 76 69 7a 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e | raphviz.."""..import.matplotlib. |
1ca60 | 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 | pyplot.as.plt.import.networkx.as |
1ca80 | 20 6e 78 0a 0a 0a 64 65 66 20 6c 61 6e 6c 5f 67 72 61 70 68 28 29 3a 0a 20 20 20 20 22 22 22 52 | .nx...def.lanl_graph():....."""R |
1caa0 | 65 74 75 72 6e 20 74 68 65 20 6c 61 6e 6c 20 69 6e 74 65 72 6e 65 74 20 76 69 65 77 20 67 72 61 | eturn.the.lanl.internet.view.gra |
1cac0 | 70 68 20 66 72 6f 6d 20 6c 61 6e 6c 2e 65 64 67 65 73 22 22 22 0a 20 20 20 20 74 72 79 3a 0a 20 | ph.from.lanl.edges""".....try:.. |
1cae0 | 20 20 20 20 20 20 20 66 68 20 3d 20 6f 70 65 6e 28 22 6c 61 6e 6c 5f 72 6f 75 74 65 73 2e 65 64 | .......fh.=.open("lanl_routes.ed |
1cb00 | 67 65 6c 69 73 74 22 29 0a 20 20 20 20 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 3a 0a 20 20 20 | gelist").....except.OSError:.... |
1cb20 | 20 20 20 20 20 70 72 69 6e 74 28 22 6c 61 6e 6c 2e 65 64 67 65 73 20 6e 6f 74 20 66 6f 75 6e 64 | .....print("lanl.edges.not.found |
1cb40 | 22 29 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 0a 0a 20 20 20 20 47 20 3d 20 6e 78 2e 47 72 61 | ").........raise......G.=.nx.Gra |
1cb60 | 70 68 28 29 0a 0a 20 20 20 20 74 69 6d 65 20 3d 20 7b 7d 0a 20 20 20 20 74 69 6d 65 5b 30 5d 20 | ph()......time.=.{}.....time[0]. |
1cb80 | 3d 20 30 20 20 23 20 61 73 73 69 67 6e 20 30 20 74 6f 20 63 65 6e 74 65 72 20 6e 6f 64 65 0a 20 | =.0..#.assign.0.to.center.node.. |
1cba0 | 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 66 68 2e 72 65 61 64 6c 69 6e 65 73 28 29 3a 0a 20 | ...for.line.in.fh.readlines():.. |
1cbc0 | 20 20 20 20 20 20 20 28 68 65 61 64 2c 20 74 61 69 6c 2c 20 72 74 74 29 20 3d 20 6c 69 6e 65 2e | .......(head,.tail,.rtt).=.line. |
1cbe0 | 73 70 6c 69 74 28 29 0a 20 20 20 20 20 20 20 20 47 2e 61 64 64 5f 65 64 67 65 28 69 6e 74 28 68 | split().........G.add_edge(int(h |
1cc00 | 65 61 64 29 2c 20 69 6e 74 28 74 61 69 6c 29 29 0a 20 20 20 20 20 20 20 20 74 69 6d 65 5b 69 6e | ead),.int(tail)).........time[in |
1cc20 | 74 28 68 65 61 64 29 5d 20 3d 20 66 6c 6f 61 74 28 72 74 74 29 0a 0a 20 20 20 20 23 20 67 65 74 | t(head)].=.float(rtt)......#.get |
1cc40 | 20 6c 61 72 67 65 73 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 61 6e 64 20 61 73 73 69 67 6e 20 70 69 | .largest.component.and.assign.pi |
1cc60 | 6e 67 20 74 69 6d 65 73 20 74 6f 20 47 30 74 69 6d 65 20 64 69 63 74 69 6f 6e 61 72 79 0a 20 20 | ng.times.to.G0time.dictionary... |
1cc80 | 20 20 47 63 63 20 3d 20 73 6f 72 74 65 64 28 6e 78 2e 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 | ..Gcc.=.sorted(nx.connected_comp |
1cca0 | 6f 6e 65 6e 74 73 28 47 29 2c 20 6b 65 79 3d 6c 65 6e 2c 20 72 65 76 65 72 73 65 3d 54 72 75 65 | onents(G),.key=len,.reverse=True |
1ccc0 | 29 5b 30 5d 0a 20 20 20 20 47 30 20 3d 20 47 2e 73 75 62 67 72 61 70 68 28 47 63 63 29 0a 20 20 | )[0].....G0.=.G.subgraph(Gcc)... |
1cce0 | 20 20 47 30 2e 72 74 74 20 3d 20 7b 7d 0a 20 20 20 20 66 6f 72 20 6e 20 69 6e 20 47 30 3a 0a 20 | ..G0.rtt.=.{}.....for.n.in.G0:.. |
1cd00 | 20 20 20 20 20 20 20 47 30 2e 72 74 74 5b 6e 5d 20 3d 20 74 69 6d 65 5b 6e 5d 0a 0a 20 20 20 20 | .......G0.rtt[n].=.time[n]...... |
1cd20 | 72 65 74 75 72 6e 20 47 30 0a 0a 0a 47 20 3d 20 6c 61 6e 6c 5f 67 72 61 70 68 28 29 0a 0a 70 72 | return.G0...G.=.lanl_graph()..pr |
1cd40 | 69 6e 74 28 47 29 0a 70 72 69 6e 74 28 6e 78 2e 6e 75 6d 62 65 72 5f 63 6f 6e 6e 65 63 74 65 64 | int(G).print(nx.number_connected |
1cd60 | 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 2c 20 22 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f | _components(G),."connected.compo |
1cd80 | 6e 65 6e 74 73 22 29 0a 0a 70 6c 74 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 38 2c 20 | nents")..plt.figure(figsize=(8,. |
1cda0 | 38 29 29 0a 23 20 75 73 65 20 67 72 61 70 68 76 69 7a 20 74 6f 20 66 69 6e 64 20 72 61 64 69 61 | 8)).#.use.graphviz.to.find.radia |
1cdc0 | 6c 20 6c 61 79 6f 75 74 0a 70 6f 73 20 3d 20 6e 78 2e 6e 78 5f 61 67 72 61 70 68 2e 67 72 61 70 | l.layout.pos.=.nx.nx_agraph.grap |
1cde0 | 68 76 69 7a 5f 6c 61 79 6f 75 74 28 47 2c 20 70 72 6f 67 3d 22 74 77 6f 70 69 22 2c 20 72 6f 6f | hviz_layout(G,.prog="twopi",.roo |
1ce00 | 74 3d 30 29 0a 23 20 64 72 61 77 20 6e 6f 64 65 73 2c 20 63 6f 6c 6f 72 69 6e 67 20 62 79 20 72 | t=0).#.draw.nodes,.coloring.by.r |
1ce20 | 74 74 20 70 69 6e 67 20 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 3d 20 7b 22 77 69 74 68 5f 6c 61 | tt.ping.time.options.=.{"with_la |
1ce40 | 62 65 6c 73 22 3a 20 46 61 6c 73 65 2c 20 22 61 6c 70 68 61 22 3a 20 30 2e 35 2c 20 22 6e 6f 64 | bels":.False,."alpha":.0.5,."nod |
1ce60 | 65 5f 73 69 7a 65 22 3a 20 31 35 7d 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 2c 20 6e 6f 64 | e_size":.15}.nx.draw(G,.pos,.nod |
1ce80 | 65 5f 63 6f 6c 6f 72 3d 5b 47 2e 72 74 74 5b 76 5d 20 66 6f 72 20 76 20 69 6e 20 47 5d 2c 20 2a | e_color=[G.rtt[v].for.v.in.G],.* |
1cea0 | 2a 6f 70 74 69 6f 6e 73 29 0a 23 20 61 64 6a 75 73 74 20 74 68 65 20 70 6c 6f 74 20 6c 69 6d 69 | *options).#.adjust.the.plot.limi |
1cec0 | 74 73 0a 78 6d 61 78 20 3d 20 31 2e 30 32 20 2a 20 6d 61 78 28 78 78 20 66 6f 72 20 78 78 2c 20 | ts.xmax.=.1.02.*.max(xx.for.xx,. |
1cee0 | 79 79 20 69 6e 20 70 6f 73 2e 76 61 6c 75 65 73 28 29 29 0a 79 6d 61 78 20 3d 20 31 2e 30 32 20 | yy.in.pos.values()).ymax.=.1.02. |
1cf00 | 2a 20 6d 61 78 28 79 79 20 66 6f 72 20 78 78 2c 20 79 79 20 69 6e 20 70 6f 73 2e 76 61 6c 75 65 | *.max(yy.for.xx,.yy.in.pos.value |
1cf20 | 73 28 29 29 0a 70 6c 74 2e 78 6c 69 6d 28 30 2c 20 78 6d 61 78 29 0a 70 6c 74 2e 79 6c 69 6d 28 | s()).plt.xlim(0,.xmax).plt.ylim( |
1cf40 | 30 2c 20 79 6d 61 78 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 2c 7b | 0,.ymax).plt.show().PK........,{ |
1cf60 | 57 56 4a 68 e8 5f 87 17 00 00 87 17 00 00 1a 00 00 00 73 75 62 63 6c 61 73 73 2f 70 6c 6f 74 5f | WVJh._............subclass/plot_ |
1cf80 | 61 6e 74 69 67 72 61 70 68 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 41 6e 74 69 67 72 | antigraph.py""".=========.Antigr |
1cfa0 | 61 70 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 43 6f 6d 70 6c 65 6d 65 6e 74 20 67 72 61 70 68 20 | aph.=========..Complement.graph. |
1cfc0 | 63 6c 61 73 73 20 66 6f 72 20 73 6d 61 6c 6c 20 66 6f 6f 74 70 72 69 6e 74 20 77 68 65 6e 20 77 | class.for.small.footprint.when.w |
1cfe0 | 6f 72 6b 69 6e 67 20 6f 6e 20 64 65 6e 73 65 20 67 72 61 70 68 73 2e 0a 0a 54 68 69 73 20 63 6c | orking.on.dense.graphs...This.cl |
1d000 | 61 73 73 20 61 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 61 64 64 20 74 68 65 20 65 64 67 65 73 20 | ass.allows.you.to.add.the.edges. |
1d020 | 74 68 61 74 20 2a 64 6f 20 6e 6f 74 20 65 78 69 73 74 2a 20 69 6e 20 74 68 65 20 64 65 6e 73 65 | that.*do.not.exist*.in.the.dense |
1d040 | 0a 67 72 61 70 68 2e 20 48 6f 77 65 76 65 72 2c 20 77 68 65 6e 20 61 70 70 6c 79 69 6e 67 20 61 | .graph..However,.when.applying.a |
1d060 | 6c 67 6f 72 69 74 68 6d 73 20 74 6f 20 74 68 69 73 20 63 6f 6d 70 6c 65 6d 65 6e 74 20 67 72 61 | lgorithms.to.this.complement.gra |
1d080 | 70 68 20 64 61 74 61 0a 73 74 72 75 63 74 75 72 65 2c 20 69 74 20 62 65 68 61 76 65 73 20 61 73 | ph.data.structure,.it.behaves.as |
1d0a0 | 20 69 66 20 69 74 20 77 65 72 65 20 74 68 65 20 64 65 6e 73 65 20 76 65 72 73 69 6f 6e 2e 20 53 | .if.it.were.the.dense.version..S |
1d0c0 | 6f 20 69 74 20 63 61 6e 20 62 65 20 75 73 65 64 0a 64 69 72 65 63 74 6c 79 20 69 6e 20 73 65 76 | o.it.can.be.used.directly.in.sev |
1d0e0 | 65 72 61 6c 20 4e 65 74 77 6f 72 6b 58 20 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 0a 54 68 69 73 20 | eral.NetworkX.algorithms...This. |
1d100 | 73 75 62 63 6c 61 73 73 20 68 61 73 20 6f 6e 6c 79 20 62 65 65 6e 20 74 65 73 74 65 64 20 66 6f | subclass.has.only.been.tested.fo |
1d120 | 72 20 6b 2d 63 6f 72 65 2c 20 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 2c 0a | r.k-core,.connected_components,. |
1d140 | 61 6e 64 20 62 69 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 20 61 6c 67 6f 72 | and.biconnected_components.algor |
1d160 | 69 74 68 6d 73 20 62 75 74 20 6d 69 67 68 74 20 61 6c 73 6f 20 77 6f 72 6b 20 66 6f 72 20 6f 74 | ithms.but.might.also.work.for.ot |
1d180 | 68 65 72 0a 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 0a 22 22 22 0a 69 6d 70 6f 72 74 20 6d 61 74 70 | her.algorithms...""".import.matp |
1d1a0 | 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 6d 70 6f 72 74 20 6e 65 74 77 | lotlib.pyplot.as.plt.import.netw |
1d1c0 | 6f 72 6b 78 20 61 73 20 6e 78 0a 66 72 6f 6d 20 6e 65 74 77 6f 72 6b 78 20 69 6d 70 6f 72 74 20 | orkx.as.nx.from.networkx.import. |
1d1e0 | 47 72 61 70 68 0a 0a 0a 63 6c 61 73 73 20 41 6e 74 69 47 72 61 70 68 28 47 72 61 70 68 29 3a 0a | Graph...class.AntiGraph(Graph):. |
1d200 | 20 20 20 20 22 22 22 0a 20 20 20 20 43 6c 61 73 73 20 66 6f 72 20 63 6f 6d 70 6c 65 6d 65 6e 74 | ....""".....Class.for.complement |
1d220 | 20 67 72 61 70 68 73 2e 0a 0a 20 20 20 20 54 68 65 20 6d 61 69 6e 20 67 6f 61 6c 20 69 73 20 74 | .graphs.......The.main.goal.is.t |
1d240 | 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 77 6f 72 6b 20 77 69 74 68 20 62 69 67 20 61 6e 64 20 64 | o.be.able.to.work.with.big.and.d |
1d260 | 65 6e 73 65 20 67 72 61 70 68 73 20 77 69 74 68 0a 20 20 20 20 61 20 6c 6f 77 20 6d 65 6d 6f 72 | ense.graphs.with.....a.low.memor |
1d280 | 79 20 66 6f 6f 74 70 72 69 6e 74 2e 0a 0a 20 20 20 20 49 6e 20 74 68 69 73 20 63 6c 61 73 73 20 | y.footprint.......In.this.class. |
1d2a0 | 79 6f 75 20 61 64 64 20 74 68 65 20 65 64 67 65 73 20 74 68 61 74 20 2a 64 6f 20 6e 6f 74 20 65 | you.add.the.edges.that.*do.not.e |
1d2c0 | 78 69 73 74 2a 20 69 6e 20 74 68 65 20 64 65 6e 73 65 20 67 72 61 70 68 2c 0a 20 20 20 20 74 68 | xist*.in.the.dense.graph,.....th |
1d2e0 | 65 20 72 65 70 6f 72 74 20 6d 65 74 68 6f 64 73 20 6f 66 20 74 68 65 20 63 6c 61 73 73 20 72 65 | e.report.methods.of.the.class.re |
1d300 | 74 75 72 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 72 73 2c 20 74 68 65 20 65 64 67 65 73 20 61 6e | turn.the.neighbors,.the.edges.an |
1d320 | 64 0a 20 20 20 20 74 68 65 20 64 65 67 72 65 65 20 61 73 20 69 66 20 69 74 20 77 61 73 20 74 68 | d.....the.degree.as.if.it.was.th |
1d340 | 65 20 64 65 6e 73 65 20 67 72 61 70 68 2e 20 54 68 75 73 20 69 74 27 73 20 70 6f 73 73 69 62 6c | e.dense.graph..Thus.it's.possibl |
1d360 | 65 20 74 6f 20 75 73 65 0a 20 20 20 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 | e.to.use.....an.instance.of.this |
1d380 | 20 63 6c 61 73 73 20 77 69 74 68 20 73 6f 6d 65 20 6f 66 20 4e 65 74 77 6f 72 6b 58 20 66 75 6e | .class.with.some.of.NetworkX.fun |
1d3a0 | 63 74 69 6f 6e 73 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 61 6c 6c 5f 65 64 67 65 5f 64 69 | ctions......"""......all_edge_di |
1d3c0 | 63 74 20 3d 20 7b 22 77 65 69 67 68 74 22 3a 20 31 7d 0a 0a 20 20 20 20 64 65 66 20 73 69 6e 67 | ct.=.{"weight":.1}......def.sing |
1d3e0 | 6c 65 5f 65 64 67 65 5f 64 69 63 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 | le_edge_dict(self):.........retu |
1d400 | 72 6e 20 73 65 6c 66 2e 61 6c 6c 5f 65 64 67 65 5f 64 69 63 74 0a 0a 20 20 20 20 65 64 67 65 5f | rn.self.all_edge_dict......edge_ |
1d420 | 61 74 74 72 5f 64 69 63 74 5f 66 61 63 74 6f 72 79 20 3d 20 73 69 6e 67 6c 65 5f 65 64 67 65 5f | attr_dict_factory.=.single_edge_ |
1d440 | 64 69 63 74 0a 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 | dict......def.__getitem__(self,. |
1d460 | 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 20 64 69 63 74 20 6f 66 20 | n):........."""Return.a.dict.of. |
1d480 | 6e 65 69 67 68 62 6f 72 73 20 6f 66 20 6e 6f 64 65 20 6e 20 69 6e 20 74 68 65 20 64 65 6e 73 65 | neighbors.of.node.n.in.the.dense |
1d4a0 | 20 67 72 61 70 68 2e 0a 0a 20 20 20 20 20 20 20 20 50 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 | .graph...........Parameters..... |
1d4c0 | 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 6e 20 3a 20 6e 6f 64 65 0a | ....----------.........n.:.node. |
1d4e0 | 20 20 20 20 20 20 20 20 20 20 20 41 20 6e 6f 64 65 20 69 6e 20 74 68 65 20 67 72 61 70 68 2e 0a | ...........A.node.in.the.graph.. |
1d500 | 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 0a 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d | .........Returns.........------- |
1d520 | 0a 20 20 20 20 20 20 20 20 61 64 6a 5f 64 69 63 74 20 3a 20 64 69 63 74 69 6f 6e 61 72 79 0a 20 | .........adj_dict.:.dictionary.. |
1d540 | 20 20 20 20 20 20 20 20 20 20 54 68 65 20 61 64 6a 61 63 65 6e 63 79 20 64 69 63 74 69 6f 6e 61 | ..........The.adjacency.dictiona |
1d560 | 72 79 20 66 6f 72 20 6e 6f 64 65 73 20 63 6f 6e 6e 65 63 74 65 64 20 74 6f 20 6e 2e 0a 0a 20 20 | ry.for.nodes.connected.to.n..... |
1d580 | 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 20 20 20 | ......""".........return.{...... |
1d5a0 | 20 20 20 20 20 20 20 6e 6f 64 65 3a 20 73 65 6c 66 2e 61 6c 6c 5f 65 64 67 65 5f 64 69 63 74 20 | .......node:.self.all_edge_dict. |
1d5c0 | 66 6f 72 20 6e 6f 64 65 20 69 6e 20 73 65 74 28 73 65 6c 66 2e 61 64 6a 29 20 2d 20 73 65 74 28 | for.node.in.set(self.adj).-.set( |
1d5e0 | 73 65 6c 66 2e 61 64 6a 5b 6e 5d 29 20 2d 20 7b 6e 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 | self.adj[n]).-.{n}.........}.... |
1d600 | 20 20 64 65 66 20 6e 65 69 67 68 62 6f 72 73 28 73 65 6c 66 2c 20 6e 29 3a 0a 20 20 20 20 20 20 | ..def.neighbors(self,.n):....... |
1d620 | 20 20 22 22 22 52 65 74 75 72 6e 20 61 6e 20 69 74 65 72 61 74 6f 72 20 6f 76 65 72 20 61 6c 6c | .."""Return.an.iterator.over.all |
1d640 | 20 6e 65 69 67 68 62 6f 72 73 20 6f 66 20 6e 6f 64 65 20 6e 20 69 6e 20 74 68 65 0a 20 20 20 20 | .neighbors.of.node.n.in.the..... |
1d660 | 20 20 20 20 64 65 6e 73 65 20 67 72 61 70 68 2e 0a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 | ....dense.graph..........."""... |
1d680 | 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 | ......try:.............return.it |
1d6a0 | 65 72 28 73 65 74 28 73 65 6c 66 2e 61 64 6a 29 20 2d 20 73 65 74 28 73 65 6c 66 2e 61 64 6a 5b | er(set(self.adj).-.set(self.adj[ |
1d6c0 | 6e 5d 29 20 2d 20 7b 6e 7d 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 45 72 72 | n]).-.{n}).........except.KeyErr |
1d6e0 | 6f 72 20 61 73 20 65 72 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 6e 78 2e | or.as.err:.............raise.nx. |
1d700 | 4e 65 74 77 6f 72 6b 58 45 72 72 6f 72 28 66 22 54 68 65 20 6e 6f 64 65 20 7b 6e 7d 20 69 73 20 | NetworkXError(f"The.node.{n}.is. |
1d720 | 6e 6f 74 20 69 6e 20 74 68 65 20 67 72 61 70 68 2e 22 29 20 66 72 6f 6d 20 65 72 72 0a 0a 20 20 | not.in.the.graph.").from.err.... |
1d740 | 20 20 64 65 66 20 64 65 67 72 65 65 28 73 65 6c 66 2c 20 6e 62 75 6e 63 68 3d 4e 6f 6e 65 2c 20 | ..def.degree(self,.nbunch=None,. |
1d760 | 77 65 69 67 68 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 | weight=None):........."""Return. |
1d780 | 61 6e 20 69 74 65 72 61 74 6f 72 20 66 6f 72 20 28 6e 6f 64 65 2c 20 64 65 67 72 65 65 29 20 69 | an.iterator.for.(node,.degree).i |
1d7a0 | 6e 20 74 68 65 20 64 65 6e 73 65 20 67 72 61 70 68 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 | n.the.dense.graph...........The. |
1d7c0 | 6e 6f 64 65 20 64 65 67 72 65 65 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 64 67 | node.degree.is.the.number.of.edg |
1d7e0 | 65 73 20 61 64 6a 61 63 65 6e 74 20 74 6f 20 74 68 65 20 6e 6f 64 65 2e 0a 0a 20 20 20 20 20 20 | es.adjacent.to.the.node......... |
1d800 | 20 20 50 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a | ..Parameters.........----------. |
1d820 | 20 20 20 20 20 20 20 20 6e 62 75 6e 63 68 20 3a 20 69 74 65 72 61 62 6c 65 20 63 6f 6e 74 61 69 | ........nbunch.:.iterable.contai |
1d840 | 6e 65 72 2c 20 6f 70 74 69 6f 6e 61 6c 20 28 64 65 66 61 75 6c 74 3d 61 6c 6c 20 6e 6f 64 65 73 | ner,.optional.(default=all.nodes |
1d860 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 20 63 6f 6e 74 61 69 6e 65 72 20 6f 66 20 6e 6f 64 | ).............A.container.of.nod |
1d880 | 65 73 2e 20 20 54 68 65 20 63 6f 6e 74 61 69 6e 65 72 20 77 69 6c 6c 20 62 65 20 69 74 65 72 61 | es...The.container.will.be.itera |
1d8a0 | 74 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 75 67 68 20 6f 6e 63 65 2e 0a 0a 20 | ted.............through.once.... |
1d8c0 | 20 20 20 20 20 20 20 77 65 69 67 68 74 20 3a 20 73 74 72 69 6e 67 20 6f 72 20 4e 6f 6e 65 2c 20 | .......weight.:.string.or.None,. |
1d8e0 | 6f 70 74 69 6f 6e 61 6c 20 28 64 65 66 61 75 6c 74 3d 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 | optional.(default=None)......... |
1d900 | 20 20 20 54 68 65 20 65 64 67 65 20 61 74 74 72 69 62 75 74 65 20 74 68 61 74 20 68 6f 6c 64 73 | ...The.edge.attribute.that.holds |
1d920 | 20 74 68 65 20 6e 75 6d 65 72 69 63 61 6c 20 76 61 6c 75 65 20 75 73 65 64 0a 20 20 20 20 20 20 | .the.numerical.value.used....... |
1d940 | 20 20 20 20 20 61 73 20 61 20 77 65 69 67 68 74 2e 20 20 49 66 20 4e 6f 6e 65 2c 20 74 68 65 6e | .....as.a.weight...If.None,.then |
1d960 | 20 65 61 63 68 20 65 64 67 65 20 68 61 73 20 77 65 69 67 68 74 20 31 2e 0a 20 20 20 20 20 20 20 | .each.edge.has.weight.1......... |
1d980 | 20 20 20 20 54 68 65 20 64 65 67 72 65 65 20 69 73 20 74 68 65 20 73 75 6d 20 6f 66 20 74 68 65 | ....The.degree.is.the.sum.of.the |
1d9a0 | 20 65 64 67 65 20 77 65 69 67 68 74 73 20 61 64 6a 61 63 65 6e 74 20 74 6f 20 74 68 65 20 6e 6f | .edge.weights.adjacent.to.the.no |
1d9c0 | 64 65 2e 0a 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 0a 20 20 20 20 20 20 20 20 2d 2d 2d | de...........Returns.........--- |
1d9e0 | 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 6e 64 5f 69 74 65 72 20 3a 20 69 74 65 72 61 74 6f 72 0a | ----.........nd_iter.:.iterator. |
1da00 | 20 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 69 74 65 72 61 74 6f 72 20 72 65 74 75 72 6e 73 | ............The.iterator.returns |
1da20 | 20 74 77 6f 2d 74 75 70 6c 65 73 20 6f 66 20 28 6e 6f 64 65 2c 20 64 65 67 72 65 65 29 2e 0a 0a | .two-tuples.of.(node,.degree)... |
1da40 | 20 20 20 20 20 20 20 20 53 65 65 20 41 6c 73 6f 0a 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d | ........See.Also.........------- |
1da60 | 2d 0a 20 20 20 20 20 20 20 20 64 65 67 72 65 65 0a 0a 20 20 20 20 20 20 20 20 45 78 61 6d 70 6c | -.........degree..........Exampl |
1da80 | 65 73 0a 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 | es.........--------.........>>>. |
1daa0 | 47 20 3d 20 6e 78 2e 70 61 74 68 5f 67 72 61 70 68 28 34 29 20 20 23 20 6f 72 20 44 69 47 72 61 | G.=.nx.path_graph(4)..#.or.DiGra |
1dac0 | 70 68 2c 20 4d 75 6c 74 69 47 72 61 70 68 2c 20 4d 75 6c 74 69 44 69 47 72 61 70 68 2c 20 65 74 | ph,.MultiGraph,.MultiDiGraph,.et |
1dae0 | 63 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 47 2e 64 65 67 72 65 65 28 30 29 20 20 23 20 6e 6f 64 | c.........>>>.G.degree(0)..#.nod |
1db00 | 65 20 30 20 77 69 74 68 20 64 65 67 72 65 65 20 31 0a 20 20 20 20 20 20 20 20 31 0a 20 20 20 20 | e.0.with.degree.1.........1..... |
1db20 | 20 20 20 20 3e 3e 3e 20 6c 69 73 74 28 47 2e 64 65 67 72 65 65 28 5b 30 2c 20 31 5d 29 29 0a 20 | ....>>>.list(G.degree([0,.1])).. |
1db40 | 20 20 20 20 20 20 20 5b 28 30 2c 20 31 29 2c 20 28 31 2c 20 32 29 5d 0a 0a 20 20 20 20 20 20 20 | .......[(0,.1),.(1,.2)]......... |
1db60 | 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 6e 62 75 6e 63 68 20 69 73 20 4e 6f 6e 65 3a 0a | .""".........if.nbunch.is.None:. |
1db80 | 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 73 5f 6e 62 72 73 20 3d 20 28 0a 20 20 20 20 20 | ............nodes_nbrs.=.(...... |
1dba0 | 20 20 20 20 20 20 20 20 20 20 20 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........(.................... |
1dbc0 | 20 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 | .n,.....................{....... |
1dbe0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 3a 20 73 65 6c 66 2e 61 6c 6c 5f 65 64 | ..................v:.self.all_ed |
1dc00 | 67 65 5f 64 69 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ge_dict......................... |
1dc20 | 66 6f 72 20 76 20 69 6e 20 73 65 74 28 73 65 6c 66 2e 61 64 6a 29 20 2d 20 73 65 74 28 73 65 6c | for.v.in.set(self.adj).-.set(sel |
1dc40 | 66 2e 61 64 6a 5b 6e 5d 29 20 2d 20 7b 6e 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | f.adj[n]).-.{n}................. |
1dc60 | 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 | ....},.................)........ |
1dc80 | 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 20 69 6e 20 73 65 6c 66 2e 6e 6f 64 65 73 28 29 0a 20 | .........for.n.in.self.nodes().. |
1dca0 | 20 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 6e 62 75 6e 63 68 | ...........).........elif.nbunch |
1dcc0 | 20 69 6e 20 73 65 6c 66 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 62 72 73 20 3d 20 73 65 74 | .in.self:.............nbrs.=.set |
1dce0 | 28 73 65 6c 66 2e 6e 6f 64 65 73 28 29 29 20 2d 20 73 65 74 28 73 65 6c 66 2e 61 64 6a 5b 6e 62 | (self.nodes()).-.set(self.adj[nb |
1dd00 | 75 6e 63 68 5d 29 20 2d 20 7b 6e 62 75 6e 63 68 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 | unch]).-.{nbunch}.............re |
1dd20 | 74 75 72 6e 20 6c 65 6e 28 6e 62 72 73 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 | turn.len(nbrs).........else:.... |
1dd40 | 20 20 20 20 20 20 20 20 20 6e 6f 64 65 73 5f 6e 62 72 73 20 3d 20 28 0a 20 20 20 20 20 20 20 20 | .........nodes_nbrs.=.(......... |
1dd60 | 20 20 20 20 20 20 20 20 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 2c | ........(.....................n, |
1dd80 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20 | .....................{.......... |
1dda0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 3a 20 73 65 6c 66 2e 61 6c 6c 5f 65 64 67 65 5f | ...............v:.self.all_edge_ |
1ddc0 | 64 69 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 | dict.........................for |
1dde0 | 20 76 20 69 6e 20 73 65 74 28 73 65 6c 66 2e 6e 6f 64 65 73 28 29 29 20 2d 20 73 65 74 28 73 65 | .v.in.set(self.nodes()).-.set(se |
1de00 | 6c 66 2e 61 64 6a 5b 6e 5d 29 20 2d 20 7b 6e 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | lf.adj[n]).-.{n}................ |
1de20 | 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 | .....},.................)....... |
1de40 | 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 20 69 6e 20 73 65 6c 66 2e 6e 62 75 6e 63 68 5f 69 | ..........for.n.in.self.nbunch_i |
1de60 | 74 65 72 28 6e 62 75 6e 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 0a 20 20 20 20 20 | ter(nbunch).............)....... |
1de80 | 20 20 20 69 66 20 77 65 69 67 68 74 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 | ...if.weight.is.None:........... |
1dea0 | 20 20 72 65 74 75 72 6e 20 28 28 6e 2c 20 6c 65 6e 28 6e 62 72 73 29 29 20 66 6f 72 20 6e 2c 20 | ..return.((n,.len(nbrs)).for.n,. |
1dec0 | 6e 62 72 73 20 69 6e 20 6e 6f 64 65 73 5f 6e 62 72 73 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 | nbrs.in.nodes_nbrs).........else |
1dee0 | 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 41 6e 74 69 47 72 61 70 68 20 69 73 20 61 20 54 | :.............#.AntiGraph.is.a.T |
1df00 | 68 69 6e 47 72 61 70 68 20 73 6f 20 61 6c 6c 20 65 64 67 65 73 20 68 61 76 65 20 77 65 69 67 68 | hinGraph.so.all.edges.have.weigh |
1df20 | 74 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 0a 20 20 20 20 20 20 20 | t.1.............return.(........ |
1df40 | 20 20 20 20 20 20 20 20 20 28 6e 2c 20 73 75 6d 28 28 6e 62 72 73 5b 6e 62 72 5d 2e 67 65 74 28 | .........(n,.sum((nbrs[nbr].get( |
1df60 | 77 65 69 67 68 74 2c 20 31 29 29 20 66 6f 72 20 6e 62 72 20 69 6e 20 6e 62 72 73 29 29 0a 20 20 | weight,.1)).for.nbr.in.nbrs))... |
1df80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 2c 20 6e 62 72 73 20 69 6e 20 6e 6f 64 | ..............for.n,.nbrs.in.nod |
1dfa0 | 65 73 5f 6e 62 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 0a 20 20 20 20 64 65 66 20 61 | es_nbrs.............)......def.a |
1dfc0 | 64 6a 61 63 65 6e 63 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 | djacency(self):........."""Retur |
1dfe0 | 6e 20 61 6e 20 69 74 65 72 61 74 6f 72 20 6f 66 20 28 6e 6f 64 65 2c 20 61 64 6a 61 63 65 6e 63 | n.an.iterator.of.(node,.adjacenc |
1e000 | 79 20 73 65 74 29 20 74 75 70 6c 65 73 20 66 6f 72 20 61 6c 6c 20 6e 6f 64 65 73 0a 20 20 20 20 | y.set).tuples.for.all.nodes..... |
1e020 | 20 20 20 20 20 20 20 69 6e 20 74 68 65 20 64 65 6e 73 65 20 67 72 61 70 68 2e 0a 0a 20 20 20 20 | .......in.the.dense.graph....... |
1e040 | 20 20 20 20 54 68 69 73 20 69 73 20 74 68 65 20 66 61 73 74 65 73 74 20 77 61 79 20 74 6f 20 6c | ....This.is.the.fastest.way.to.l |
1e060 | 6f 6f 6b 20 61 74 20 65 76 65 72 79 20 65 64 67 65 2e 0a 20 20 20 20 20 20 20 20 46 6f 72 20 64 | ook.at.every.edge..........For.d |
1e080 | 69 72 65 63 74 65 64 20 67 72 61 70 68 73 2c 20 6f 6e 6c 79 20 6f 75 74 67 6f 69 6e 67 20 61 64 | irected.graphs,.only.outgoing.ad |
1e0a0 | 6a 61 63 65 6e 63 69 65 73 20 61 72 65 20 69 6e 63 6c 75 64 65 64 2e 0a 0a 20 20 20 20 20 20 20 | jacencies.are.included.......... |
1e0c0 | 20 52 65 74 75 72 6e 73 0a 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 | .Returns.........-------........ |
1e0e0 | 20 61 64 6a 5f 69 74 65 72 20 3a 20 69 74 65 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 | .adj_iter.:.iterator............ |
1e100 | 41 6e 20 69 74 65 72 61 74 6f 72 20 6f 66 20 28 6e 6f 64 65 2c 20 61 64 6a 61 63 65 6e 63 79 20 | An.iterator.of.(node,.adjacency. |
1e120 | 73 65 74 29 20 66 6f 72 20 61 6c 6c 20 6e 6f 64 65 73 20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 | set).for.all.nodes.in........... |
1e140 | 20 74 68 65 20 67 72 61 70 68 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 | .the.graph.........."""......... |
1e160 | 6e 6f 64 65 73 20 3d 20 73 65 74 28 73 65 6c 66 2e 61 64 6a 29 0a 20 20 20 20 20 20 20 20 66 6f | nodes.=.set(self.adj).........fo |
1e180 | 72 20 6e 2c 20 6e 62 72 73 20 69 6e 20 73 65 6c 66 2e 61 64 6a 2e 69 74 65 6d 73 28 29 3a 0a 20 | r.n,.nbrs.in.self.adj.items():.. |
1e1a0 | 20 20 20 20 20 20 20 20 20 20 20 79 69 65 6c 64 20 28 6e 2c 20 6e 6f 64 65 73 20 2d 20 73 65 74 | ...........yield.(n,.nodes.-.set |
1e1c0 | 28 6e 62 72 73 29 20 2d 20 7b 6e 7d 29 0a 0a 0a 23 20 42 75 69 6c 64 20 73 65 76 65 72 61 6c 20 | (nbrs).-.{n})...#.Build.several. |
1e1e0 | 70 61 69 72 73 20 6f 66 20 67 72 61 70 68 73 2c 20 61 20 72 65 67 75 6c 61 72 20 67 72 61 70 68 | pairs.of.graphs,.a.regular.graph |
1e200 | 0a 23 20 61 6e 64 20 74 68 65 20 41 6e 74 69 47 72 61 70 68 20 6f 66 20 69 74 27 73 20 63 6f 6d | .#.and.the.AntiGraph.of.it's.com |
1e220 | 70 6c 65 6d 65 6e 74 2c 20 77 68 69 63 68 20 62 65 68 61 76 65 73 0a 23 20 61 73 20 69 66 20 69 | plement,.which.behaves.#.as.if.i |
1e240 | 74 20 77 65 72 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 67 72 61 70 68 2e 0a 47 6e 70 20 3d | t.were.the.original.graph..Gnp.= |
1e260 | 20 6e 78 2e 67 6e 70 5f 72 61 6e 64 6f 6d 5f 67 72 61 70 68 28 32 30 2c 20 30 2e 38 2c 20 73 65 | .nx.gnp_random_graph(20,.0.8,.se |
1e280 | 65 64 3d 34 32 29 0a 41 6e 70 20 3d 20 41 6e 74 69 47 72 61 70 68 28 6e 78 2e 63 6f 6d 70 6c 65 | ed=42).Anp.=.AntiGraph(nx.comple |
1e2a0 | 6d 65 6e 74 28 47 6e 70 29 29 0a 47 64 20 3d 20 6e 78 2e 64 61 76 69 73 5f 73 6f 75 74 68 65 72 | ment(Gnp)).Gd.=.nx.davis_souther |
1e2c0 | 6e 5f 77 6f 6d 65 6e 5f 67 72 61 70 68 28 29 0a 41 64 20 3d 20 41 6e 74 69 47 72 61 70 68 28 6e | n_women_graph().Ad.=.AntiGraph(n |
1e2e0 | 78 2e 63 6f 6d 70 6c 65 6d 65 6e 74 28 47 64 29 29 0a 47 6b 20 3d 20 6e 78 2e 6b 61 72 61 74 65 | x.complement(Gd)).Gk.=.nx.karate |
1e300 | 5f 63 6c 75 62 5f 67 72 61 70 68 28 29 0a 41 6b 20 3d 20 41 6e 74 69 47 72 61 70 68 28 6e 78 2e | _club_graph().Ak.=.AntiGraph(nx. |
1e320 | 63 6f 6d 70 6c 65 6d 65 6e 74 28 47 6b 29 29 0a 70 61 69 72 73 20 3d 20 5b 28 47 6e 70 2c 20 41 | complement(Gk)).pairs.=.[(Gnp,.A |
1e340 | 6e 70 29 2c 20 28 47 64 2c 20 41 64 29 2c 20 28 47 6b 2c 20 41 6b 29 5d 0a 23 20 74 65 73 74 20 | np),.(Gd,.Ad),.(Gk,.Ak)].#.test. |
1e360 | 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 73 0a 66 6f 72 20 47 2c 20 41 20 69 6e | connected.components.for.G,.A.in |
1e380 | 20 70 61 69 72 73 3a 0a 20 20 20 20 67 63 20 3d 20 5b 73 65 74 28 63 29 20 66 6f 72 20 63 20 69 | .pairs:.....gc.=.[set(c).for.c.i |
1e3a0 | 6e 20 6e 78 2e 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 47 29 5d 0a 20 20 | n.nx.connected_components(G)]... |
1e3c0 | 20 20 61 63 20 3d 20 5b 73 65 74 28 63 29 20 66 6f 72 20 63 20 69 6e 20 6e 78 2e 63 6f 6e 6e 65 | ..ac.=.[set(c).for.c.in.nx.conne |
1e3e0 | 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 41 29 5d 0a 20 20 20 20 66 6f 72 20 63 6f 6d 70 | cted_components(A)].....for.comp |
1e400 | 20 69 6e 20 61 63 3a 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 63 6f 6d 70 20 69 6e 20 67 | .in.ac:.........assert.comp.in.g |
1e420 | 63 0a 23 20 74 65 73 74 20 62 69 63 6f 6e 6e 65 63 74 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 73 0a | c.#.test.biconnected.components. |
1e440 | 66 6f 72 20 47 2c 20 41 20 69 6e 20 70 61 69 72 73 3a 0a 20 20 20 20 67 63 20 3d 20 5b 73 65 74 | for.G,.A.in.pairs:.....gc.=.[set |
1e460 | 28 63 29 20 66 6f 72 20 63 20 69 6e 20 6e 78 2e 62 69 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 | (c).for.c.in.nx.biconnected_comp |
1e480 | 6f 6e 65 6e 74 73 28 47 29 5d 0a 20 20 20 20 61 63 20 3d 20 5b 73 65 74 28 63 29 20 66 6f 72 20 | onents(G)].....ac.=.[set(c).for. |
1e4a0 | 63 20 69 6e 20 6e 78 2e 62 69 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 73 28 41 | c.in.nx.biconnected_components(A |
1e4c0 | 29 5d 0a 20 20 20 20 66 6f 72 20 63 6f 6d 70 20 69 6e 20 61 63 3a 0a 20 20 20 20 20 20 20 20 61 | )].....for.comp.in.ac:.........a |
1e4e0 | 73 73 65 72 74 20 63 6f 6d 70 20 69 6e 20 67 63 0a 23 20 74 65 73 74 20 64 65 67 72 65 65 0a 66 | ssert.comp.in.gc.#.test.degree.f |
1e500 | 6f 72 20 47 2c 20 41 20 69 6e 20 70 61 69 72 73 3a 0a 20 20 20 20 6e 6f 64 65 20 3d 20 6c 69 73 | or.G,.A.in.pairs:.....node.=.lis |
1e520 | 74 28 47 2e 6e 6f 64 65 73 28 29 29 5b 30 5d 0a 20 20 20 20 6e 6f 64 65 73 20 3d 20 6c 69 73 74 | t(G.nodes())[0].....nodes.=.list |
1e540 | 28 47 2e 6e 6f 64 65 73 28 29 29 5b 31 3a 34 5d 0a 20 20 20 20 61 73 73 65 72 74 20 47 2e 64 65 | (G.nodes())[1:4].....assert.G.de |
1e560 | 67 72 65 65 28 6e 6f 64 65 29 20 3d 3d 20 41 2e 64 65 67 72 65 65 28 6e 6f 64 65 29 0a 20 20 20 | gree(node).==.A.degree(node).... |
1e580 | 20 61 73 73 65 72 74 20 73 75 6d 28 64 20 66 6f 72 20 6e 2c 20 64 20 69 6e 20 47 2e 64 65 67 72 | .assert.sum(d.for.n,.d.in.G.degr |
1e5a0 | 65 65 28 29 29 20 3d 3d 20 73 75 6d 28 64 20 66 6f 72 20 6e 2c 20 64 20 69 6e 20 41 2e 64 65 67 | ee()).==.sum(d.for.n,.d.in.A.deg |
1e5c0 | 72 65 65 28 29 29 0a 20 20 20 20 23 20 41 6e 74 69 47 72 61 70 68 20 69 73 20 61 20 54 68 69 6e | ree()).....#.AntiGraph.is.a.Thin |
1e5e0 | 47 72 61 70 68 2c 20 73 6f 20 61 6c 6c 20 74 68 65 20 77 65 69 67 68 74 73 20 61 72 65 20 31 0a | Graph,.so.all.the.weights.are.1. |
1e600 | 20 20 20 20 61 73 73 65 72 74 20 73 75 6d 28 64 20 66 6f 72 20 6e 2c 20 64 20 69 6e 20 41 2e 64 | ....assert.sum(d.for.n,.d.in.A.d |
1e620 | 65 67 72 65 65 28 29 29 20 3d 3d 20 73 75 6d 28 64 20 66 6f 72 20 6e 2c 20 64 20 69 6e 20 41 2e | egree()).==.sum(d.for.n,.d.in.A. |
1e640 | 64 65 67 72 65 65 28 77 65 69 67 68 74 3d 22 77 65 69 67 68 74 22 29 29 0a 20 20 20 20 61 73 73 | degree(weight="weight")).....ass |
1e660 | 65 72 74 20 73 75 6d 28 64 20 66 6f 72 20 6e 2c 20 64 20 69 6e 20 47 2e 64 65 67 72 65 65 28 6e | ert.sum(d.for.n,.d.in.G.degree(n |
1e680 | 6f 64 65 73 29 29 20 3d 3d 20 73 75 6d 28 64 20 66 6f 72 20 6e 2c 20 64 20 69 6e 20 41 2e 64 65 | odes)).==.sum(d.for.n,.d.in.A.de |
1e6a0 | 67 72 65 65 28 6e 6f 64 65 73 29 29 0a 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 | gree(nodes))..pos.=.nx.spring_la |
1e6c0 | 79 6f 75 74 28 47 2c 20 73 65 65 64 3d 32 36 38 29 20 20 23 20 53 65 65 64 20 66 6f 72 20 72 65 | yout(G,.seed=268)..#.Seed.for.re |
1e6e0 | 70 72 6f 64 75 63 69 62 6c 65 20 6c 61 79 6f 75 74 0a 6e 78 2e 64 72 61 77 28 47 6e 70 2c 20 70 | producible.layout.nx.draw(Gnp,.p |
1e700 | 6f 73 3d 70 6f 73 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 2c 7b 57 | os=pos).plt.show().PK........,{W |
1e720 | 56 b2 4b 1a 52 f4 08 00 00 f4 08 00 00 1b 00 00 00 73 75 62 63 6c 61 73 73 2f 70 6c 6f 74 5f 70 | V.K.R............subclass/plot_p |
1e740 | 72 69 6e 74 67 72 61 70 68 2e 70 79 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 50 72 69 6e | rintgraph.py""".===========.Prin |
1e760 | 74 20 47 72 61 70 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 45 78 61 6d 70 6c 65 20 73 75 62 | t.Graph.===========..Example.sub |
1e780 | 63 6c 61 73 73 20 6f 66 20 74 68 65 20 47 72 61 70 68 20 63 6c 61 73 73 2e 0a 22 22 22 0a 0a 69 | class.of.the.Graph.class.."""..i |
1e7a0 | 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 0a 69 | mport.matplotlib.pyplot.as.plt.i |
1e7c0 | 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 0a 66 72 6f 6d 20 6e 65 74 77 6f 72 | mport.networkx.as.nx.from.networ |
1e7e0 | 6b 78 20 69 6d 70 6f 72 74 20 47 72 61 70 68 0a 0a 0a 63 6c 61 73 73 20 50 72 69 6e 74 47 72 61 | kx.import.Graph...class.PrintGra |
1e800 | 70 68 28 47 72 61 70 68 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 45 78 61 6d 70 6c 65 20 73 | ph(Graph):.....""".....Example.s |
1e820 | 75 62 63 6c 61 73 73 20 6f 66 20 74 68 65 20 47 72 61 70 68 20 63 6c 61 73 73 2e 0a 0a 20 20 20 | ubclass.of.the.Graph.class...... |
1e840 | 20 50 72 69 6e 74 73 20 61 63 74 69 76 69 74 79 20 6c 6f 67 20 74 6f 20 66 69 6c 65 20 6f 72 20 | .Prints.activity.log.to.file.or. |
1e860 | 73 74 61 6e 64 61 72 64 20 6f 75 74 70 75 74 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 64 65 | standard.output......"""......de |
1e880 | 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 64 61 74 61 3d 4e 6f 6e 65 2c 20 6e 61 6d 65 | f.__init__(self,.data=None,.name |
1e8a0 | 3d 22 22 2c 20 66 69 6c 65 3d 4e 6f 6e 65 2c 20 2a 2a 61 74 74 72 29 3a 0a 20 20 20 20 20 20 20 | ="",.file=None,.**attr):........ |
1e8c0 | 20 73 75 70 65 72 28 29 2e 5f 5f 69 6e 69 74 5f 5f 28 64 61 74 61 3d 64 61 74 61 2c 20 6e 61 6d | .super().__init__(data=data,.nam |
1e8e0 | 65 3d 6e 61 6d 65 2c 20 2a 2a 61 74 74 72 29 0a 20 20 20 20 20 20 20 20 69 66 20 66 69 6c 65 20 | e=name,.**attr).........if.file. |
1e900 | 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 73 79 73 0a | is.None:.............import.sys. |
1e920 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 68 20 3d 20 73 79 73 2e 73 74 64 6f 75 | .............self.fh.=.sys.stdou |
1e940 | 74 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 | t.........else:.............self |
1e960 | 2e 66 68 20 3d 20 6f 70 65 6e 28 66 69 6c 65 2c 20 22 77 22 29 0a 0a 20 20 20 20 64 65 66 20 61 | .fh.=.open(file,."w")......def.a |
1e980 | 64 64 5f 6e 6f 64 65 28 73 65 6c 66 2c 20 6e 2c 20 61 74 74 72 5f 64 69 63 74 3d 4e 6f 6e 65 2c | dd_node(self,.n,.attr_dict=None, |
1e9a0 | 20 2a 2a 61 74 74 72 29 3a 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 29 2e 61 64 64 5f 6e 6f | .**attr):.........super().add_no |
1e9c0 | 64 65 28 6e 2c 20 61 74 74 72 5f 64 69 63 74 3d 61 74 74 72 5f 64 69 63 74 2c 20 2a 2a 61 74 74 | de(n,.attr_dict=attr_dict,.**att |
1e9e0 | 72 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 68 2e 77 72 69 74 65 28 66 22 41 64 64 20 6e | r).........self.fh.write(f"Add.n |
1ea00 | 6f 64 65 3a 20 7b 6e 7d 5c 6e 22 29 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 6e 6f 64 65 73 5f | ode:.{n}\n")......def.add_nodes_ |
1ea20 | 66 72 6f 6d 28 73 65 6c 66 2c 20 6e 6f 64 65 73 2c 20 2a 2a 61 74 74 72 29 3a 0a 20 20 20 20 20 | from(self,.nodes,.**attr):...... |
1ea40 | 20 20 20 66 6f 72 20 6e 20 69 6e 20 6e 6f 64 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 | ...for.n.in.nodes:.............s |
1ea60 | 65 6c 66 2e 61 64 64 5f 6e 6f 64 65 28 6e 2c 20 2a 2a 61 74 74 72 29 0a 0a 20 20 20 20 64 65 66 | elf.add_node(n,.**attr)......def |
1ea80 | 20 72 65 6d 6f 76 65 5f 6e 6f 64 65 28 73 65 6c 66 2c 20 6e 29 3a 0a 20 20 20 20 20 20 20 20 73 | .remove_node(self,.n):.........s |
1eaa0 | 75 70 65 72 28 29 2e 72 65 6d 6f 76 65 5f 6e 6f 64 65 28 6e 29 0a 20 20 20 20 20 20 20 20 73 65 | uper().remove_node(n).........se |
1eac0 | 6c 66 2e 66 68 2e 77 72 69 74 65 28 66 22 52 65 6d 6f 76 65 20 6e 6f 64 65 3a 20 7b 6e 7d 5c 6e | lf.fh.write(f"Remove.node:.{n}\n |
1eae0 | 22 29 0a 0a 20 20 20 20 64 65 66 20 72 65 6d 6f 76 65 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 73 65 | ")......def.remove_nodes_from(se |
1eb00 | 6c 66 2c 20 6e 6f 64 65 73 29 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6e 20 69 6e 20 6e 6f 64 | lf,.nodes):.........for.n.in.nod |
1eb20 | 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 6d 6f 76 65 5f 6e 6f 64 65 | es:.............self.remove_node |
1eb40 | 28 6e 29 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 65 64 67 65 28 73 65 6c 66 2c 20 75 2c 20 76 | (n)......def.add_edge(self,.u,.v |
1eb60 | 2c 20 61 74 74 72 5f 64 69 63 74 3d 4e 6f 6e 65 2c 20 2a 2a 61 74 74 72 29 3a 0a 20 20 20 20 20 | ,.attr_dict=None,.**attr):...... |
1eb80 | 20 20 20 73 75 70 65 72 28 29 2e 61 64 64 5f 65 64 67 65 28 75 2c 20 76 2c 20 61 74 74 72 5f 64 | ...super().add_edge(u,.v,.attr_d |
1eba0 | 69 63 74 3d 61 74 74 72 5f 64 69 63 74 2c 20 2a 2a 61 74 74 72 29 0a 20 20 20 20 20 20 20 20 73 | ict=attr_dict,.**attr).........s |
1ebc0 | 65 6c 66 2e 66 68 2e 77 72 69 74 65 28 66 22 41 64 64 20 65 64 67 65 3a 20 7b 75 7d 2d 7b 76 7d | elf.fh.write(f"Add.edge:.{u}-{v} |
1ebe0 | 5c 6e 22 29 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 65 64 67 65 73 5f 66 72 6f 6d 28 73 65 6c | \n")......def.add_edges_from(sel |
1ec00 | 66 2c 20 65 62 75 6e 63 68 2c 20 61 74 74 72 5f 64 69 63 74 3d 4e 6f 6e 65 2c 20 2a 2a 61 74 74 | f,.ebunch,.attr_dict=None,.**att |
1ec20 | 72 29 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 65 20 69 6e 20 65 62 75 6e 63 68 3a 0a 20 20 20 | r):.........for.e.in.ebunch:.... |
1ec40 | 20 20 20 20 20 20 20 20 20 75 2c 20 76 20 3d 20 65 5b 30 3a 32 5d 0a 20 20 20 20 20 20 20 20 20 | .........u,.v.=.e[0:2].......... |
1ec60 | 20 20 20 73 65 6c 66 2e 61 64 64 5f 65 64 67 65 28 75 2c 20 76 2c 20 61 74 74 72 5f 64 69 63 74 | ...self.add_edge(u,.v,.attr_dict |
1ec80 | 3d 61 74 74 72 5f 64 69 63 74 2c 20 2a 2a 61 74 74 72 29 0a 0a 20 20 20 20 64 65 66 20 72 65 6d | =attr_dict,.**attr)......def.rem |
1eca0 | 6f 76 65 5f 65 64 67 65 28 73 65 6c 66 2c 20 75 2c 20 76 29 3a 0a 20 20 20 20 20 20 20 20 73 75 | ove_edge(self,.u,.v):.........su |
1ecc0 | 70 65 72 28 29 2e 72 65 6d 6f 76 65 5f 65 64 67 65 28 75 2c 20 76 29 0a 20 20 20 20 20 20 20 20 | per().remove_edge(u,.v)......... |
1ece0 | 73 65 6c 66 2e 66 68 2e 77 72 69 74 65 28 66 22 52 65 6d 6f 76 65 20 65 64 67 65 3a 20 7b 75 7d | self.fh.write(f"Remove.edge:.{u} |
1ed00 | 2d 7b 76 7d 5c 6e 22 29 0a 0a 20 20 20 20 64 65 66 20 72 65 6d 6f 76 65 5f 65 64 67 65 73 5f 66 | -{v}\n")......def.remove_edges_f |
1ed20 | 72 6f 6d 28 73 65 6c 66 2c 20 65 62 75 6e 63 68 29 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 65 | rom(self,.ebunch):.........for.e |
1ed40 | 20 69 6e 20 65 62 75 6e 63 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 2c 20 76 20 3d 20 65 | .in.ebunch:.............u,.v.=.e |
1ed60 | 5b 30 3a 32 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 6d 6f 76 65 5f 65 64 | [0:2].............self.remove_ed |
1ed80 | 67 65 28 75 2c 20 76 29 0a 0a 20 20 20 20 64 65 66 20 63 6c 65 61 72 28 73 65 6c 66 29 3a 0a 20 | ge(u,.v)......def.clear(self):.. |
1eda0 | 20 20 20 20 20 20 20 73 75 70 65 72 28 29 2e 63 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 73 | .......super().clear().........s |
1edc0 | 65 6c 66 2e 66 68 2e 77 72 69 74 65 28 22 43 6c 65 61 72 20 67 72 61 70 68 5c 6e 22 29 0a 0a 0a | elf.fh.write("Clear.graph\n")... |
1ede0 | 47 20 3d 20 50 72 69 6e 74 47 72 61 70 68 28 29 0a 47 2e 61 64 64 5f 6e 6f 64 65 28 22 66 6f 6f | G.=.PrintGraph().G.add_node("foo |
1ee00 | 22 29 0a 47 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 22 62 61 72 22 2c 20 77 65 69 67 68 | ").G.add_nodes_from("bar",.weigh |
1ee20 | 74 3d 38 29 0a 47 2e 72 65 6d 6f 76 65 5f 6e 6f 64 65 28 22 62 22 29 0a 47 2e 72 65 6d 6f 76 65 | t=8).G.remove_node("b").G.remove |
1ee40 | 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 22 61 72 22 29 0a 70 72 69 6e 74 28 22 4e 6f 64 65 73 20 69 | _nodes_from("ar").print("Nodes.i |
1ee60 | 6e 20 47 3a 20 22 2c 20 47 2e 6e 6f 64 65 73 28 64 61 74 61 3d 54 72 75 65 29 29 0a 47 2e 61 64 | n.G:.",.G.nodes(data=True)).G.ad |
1ee80 | 64 5f 65 64 67 65 28 30 2c 20 31 2c 20 77 65 69 67 68 74 3d 31 30 29 0a 70 72 69 6e 74 28 22 45 | d_edge(0,.1,.weight=10).print("E |
1eea0 | 64 67 65 73 20 69 6e 20 47 3a 20 22 2c 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 54 72 75 65 29 | dges.in.G:.",.G.edges(data=True) |
1eec0 | 29 0a 47 2e 72 65 6d 6f 76 65 5f 65 64 67 65 28 30 2c 20 31 29 0a 47 2e 61 64 64 5f 65 64 67 65 | ).G.remove_edge(0,.1).G.add_edge |
1eee0 | 73 5f 66 72 6f 6d 28 7a 69 70 28 72 61 6e 67 65 28 30 2c 20 33 29 2c 20 72 61 6e 67 65 28 31 2c | s_from(zip(range(0,.3),.range(1, |
1ef00 | 20 34 29 29 2c 20 77 65 69 67 68 74 3d 31 30 29 0a 70 72 69 6e 74 28 22 45 64 67 65 73 20 69 6e | .4)),.weight=10).print("Edges.in |
1ef20 | 20 47 3a 20 22 2c 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 54 72 75 65 29 29 0a 47 2e 72 65 6d | .G:.",.G.edges(data=True)).G.rem |
1ef40 | 6f 76 65 5f 65 64 67 65 73 5f 66 72 6f 6d 28 7a 69 70 28 72 61 6e 67 65 28 30 2c 20 33 29 2c 20 | ove_edges_from(zip(range(0,.3),. |
1ef60 | 72 61 6e 67 65 28 31 2c 20 34 29 29 29 0a 70 72 69 6e 74 28 22 45 64 67 65 73 20 69 6e 20 47 3a | range(1,.4))).print("Edges.in.G: |
1ef80 | 20 22 2c 20 47 2e 65 64 67 65 73 28 64 61 74 61 3d 54 72 75 65 29 29 0a 0a 47 20 3d 20 50 72 69 | .",.G.edges(data=True))..G.=.Pri |
1efa0 | 6e 74 47 72 61 70 68 28 29 0a 6e 78 2e 61 64 64 5f 70 61 74 68 28 47 2c 20 72 61 6e 67 65 28 31 | ntGraph().nx.add_path(G,.range(1 |
1efc0 | 30 29 29 0a 6e 78 2e 61 64 64 5f 73 74 61 72 28 47 2c 20 72 61 6e 67 65 28 39 2c 20 31 33 29 29 | 0)).nx.add_star(G,.range(9,.13)) |
1efe0 | 0a 70 6f 73 20 3d 20 6e 78 2e 73 70 72 69 6e 67 5f 6c 61 79 6f 75 74 28 47 2c 20 73 65 65 64 3d | .pos.=.nx.spring_layout(G,.seed= |
1f000 | 32 32 35 29 20 20 23 20 53 65 65 64 20 66 6f 72 20 72 65 70 72 6f 64 75 63 69 62 6c 65 20 6c 61 | 225)..#.Seed.for.reproducible.la |
1f020 | 79 6f 75 74 0a 6e 78 2e 64 72 61 77 28 47 2c 20 70 6f 73 29 0a 70 6c 74 2e 73 68 6f 77 28 29 0a | yout.nx.draw(G,.pos).plt.show(). |
1f040 | 50 4b 01 02 14 03 14 00 00 00 00 00 02 7b 57 56 40 87 eb 83 a6 03 00 00 a6 03 00 00 1c 00 00 00 | PK...........{WV@............... |
1f060 | 00 00 00 00 00 00 00 00 a4 81 00 00 00 00 33 64 5f 64 72 61 77 69 6e 67 2f 6d 61 79 61 76 69 32 | ..............3d_drawing/mayavi2 |
1f080 | 5f 73 70 72 69 6e 67 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 02 7b 57 56 c4 33 ea 37 7d 04 | _spring.pyPK...........{WV.3.7}. |
1f0a0 | 00 00 7d 04 00 00 18 00 00 00 00 00 00 00 00 00 00 00 a4 81 e0 03 00 00 33 64 5f 64 72 61 77 69 | ..}.....................3d_drawi |
1f0c0 | 6e 67 2f 70 6c 6f 74 5f 62 61 73 69 63 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 20 7b 57 56 | ng/plot_basic.pyPK...........{WV |
1f0e0 | 58 f2 c2 60 09 0c 00 00 09 0c 00 00 17 00 00 00 00 00 00 00 00 00 00 00 a4 81 93 08 00 00 61 6c | X..`..........................al |
1f100 | 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 73 6e 61 70 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 | gorithms/plot_snap.pyPK......... |
1f120 | 00 0e 7b 57 56 7f c5 e1 aa 85 03 00 00 85 03 00 00 2a 00 00 00 00 00 00 00 00 00 00 00 a4 81 d1 | ..{WV............*.............. |
1f140 | 14 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 6d 61 78 69 6d 75 6d 5f 69 6e 64 65 70 | ...algorithms/plot_maximum_indep |
1f160 | 65 6e 64 65 6e 74 5f 73 65 74 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 0e 7b 57 56 7d 53 7b | endent_set.pyPK...........{WV}S{ |
1f180 | 3e cc 08 00 00 cc 08 00 00 22 00 00 00 00 00 00 00 00 00 00 00 a4 81 9e 18 00 00 61 6c 67 6f 72 | >........".................algor |
1f1a0 | 69 74 68 6d 73 2f 70 6c 6f 74 5f 64 65 64 65 6e 73 69 66 69 63 61 74 69 6f 6e 2e 70 79 50 4b 01 | ithms/plot_dedensification.pyPK. |
1f1c0 | 02 14 03 14 00 00 00 00 00 0e 7b 57 56 06 cf c1 cd 7d 02 00 00 7d 02 00 00 28 00 00 00 00 00 00 | ..........{WV....}...}...(...... |
1f1e0 | 00 00 00 00 00 a4 81 aa 21 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 6b 72 61 63 6b | ........!..algorithms/plot_krack |
1f200 | 68 61 72 64 74 5f 63 65 6e 74 72 61 6c 69 74 79 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 0e | hardt_centrality.pyPK........... |
1f220 | 7b 57 56 7b 7c 91 76 6c 17 00 00 6c 17 00 00 2d 00 00 00 00 00 00 00 00 00 00 00 a4 81 6d 24 00 | {WV{|.vl...l...-.............m$. |
1f240 | 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 69 74 65 72 61 74 65 64 5f 64 79 6e 61 6d 69 | .algorithms/plot_iterated_dynami |
1f260 | 63 61 6c 5f 73 79 73 74 65 6d 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 0e 7b 57 56 e2 9f | cal_systems.pyPK...........{WV.. |
1f280 | eb 7c 8c 09 00 00 8c 09 00 00 27 00 00 00 00 00 00 00 00 00 00 00 a4 81 24 3c 00 00 61 6c 67 6f | .|........'.............$<..algo |
1f2a0 | 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 70 61 72 61 6c 6c 65 6c 5f 62 65 74 77 65 65 6e 6e 65 73 73 | rithms/plot_parallel_betweenness |
1f2c0 | 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 0a 7b 57 56 28 8a 4a da 4e 08 00 00 4e 08 00 00 29 | .pyPK...........{WV(.J.N...N...) |
1f2e0 | 00 00 00 00 00 00 00 00 00 00 00 a4 81 f5 45 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 | ..............E..algorithms/plot |
1f300 | 5f 62 65 74 77 65 65 6e 6e 65 73 73 5f 63 65 6e 74 72 61 6c 69 74 79 2e 70 79 50 4b 01 02 14 03 | _betweenness_centrality.pyPK.... |
1f320 | 14 00 00 00 00 00 0e 7b 57 56 1c 5a 38 01 a9 04 00 00 a9 04 00 00 1d 00 00 00 00 00 00 00 00 00 | .......{WV.Z8................... |
1f340 | 00 00 a4 81 8a 4e 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 64 61 76 69 73 5f 63 6c | .....N..algorithms/plot_davis_cl |
1f360 | 75 62 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 0d 7b 57 56 39 4e 07 68 a8 0d 00 00 a8 0d 00 | ub.pyPK...........{WV9N.h....... |
1f380 | 00 1b 00 00 00 00 00 00 00 00 00 00 00 a4 81 6e 53 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c | ...............nS..algorithms/pl |
1f3a0 | 6f 74 5f 63 69 72 63 75 69 74 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 0d 7b 57 56 a4 7c | ot_circuits.pyPK...........{WV.| |
1f3c0 | 15 e2 76 0a 00 00 76 0a 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 a4 81 4f 61 00 00 61 6c 67 6f | ..v...v.................Oa..algo |
1f3e0 | 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 62 6c 6f 63 6b 6d 6f 64 65 6c 2e 70 79 50 4b 01 02 14 03 14 | rithms/plot_blockmodel.pyPK..... |
1f400 | 00 00 00 00 00 0a 7b 57 56 d2 bd 8b 1b 17 10 00 00 17 10 00 00 1e 00 00 00 00 00 00 00 00 00 00 | ......{WV....................... |
1f420 | 00 a4 81 00 6c 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 62 65 61 6d 5f 73 65 61 72 | ....l..algorithms/plot_beam_sear |
1f440 | 63 68 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 20 7b 57 56 40 59 d4 42 4a 19 00 00 4a 19 00 | ch.pyPK...........{WV@Y.BJ...J.. |
1f460 | 00 1c 00 00 00 00 00 00 00 00 00 00 00 a4 81 53 7c 00 00 61 6c 67 6f 72 69 74 68 6d 73 2f 70 6c | ...............S|..algorithms/pl |
1f480 | 6f 74 5f 73 75 62 67 72 61 70 68 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 1d 7b 57 56 bf | ot_subgraphs.pyPK...........{WV. |
1f4a0 | 97 02 92 0f 04 00 00 0f 04 00 00 16 00 00 00 00 00 00 00 00 00 00 00 a4 81 d7 95 00 00 61 6c 67 | .............................alg |
1f4c0 | 6f 72 69 74 68 6d 73 2f 70 6c 6f 74 5f 72 63 6d 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 fb | orithms/plot_rcm.pyPK........... |
1f4e0 | 7a 57 56 cd e1 fa d2 29 04 00 00 29 04 00 00 18 00 00 00 00 00 00 00 00 00 00 00 a4 81 1a 9a 00 | zWV....)...).................... |
1f500 | 00 62 61 73 69 63 2f 70 6c 6f 74 5f 70 72 6f 70 65 72 74 69 65 73 2e 70 79 50 4b 01 02 14 03 14 | .basic/plot_properties.pyPK..... |
1f520 | 00 00 00 00 00 fb 7a 57 56 e7 2e 09 89 0d 02 00 00 0d 02 00 00 18 00 00 00 00 00 00 00 00 00 00 | ......zWV....................... |
1f540 | 00 a4 81 79 9e 00 00 62 61 73 69 63 2f 70 6c 6f 74 5f 72 65 61 64 5f 77 72 69 74 65 2e 70 79 50 | ...y...basic/plot_read_write.pyP |
1f560 | 4b 01 02 14 03 14 00 00 00 00 00 fb 7a 57 56 46 e4 8f 07 d8 04 00 00 d8 04 00 00 1a 00 00 00 00 | K...........zWVF................ |
1f580 | 00 00 00 00 00 00 00 a4 81 bc a0 00 00 62 61 73 69 63 2f 70 6c 6f 74 5f 73 69 6d 70 6c 65 5f 67 | .............basic/plot_simple_g |
1f5a0 | 72 61 70 68 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 02 7b 57 56 97 66 db 6e 64 04 00 00 64 | raph.pyPK...........{WV.f.nd...d |
1f5c0 | 04 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 a4 81 cc a5 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f | .....................drawing/plo |
1f5e0 | 74 5f 77 65 69 67 68 74 65 64 5f 67 72 61 70 68 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 01 | t_weighted_graph.pyPK........... |
1f600 | 7b 57 56 2e 68 51 b1 fc 00 00 00 fc 00 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 a4 81 6c aa 00 | {WV.hQ.......................l.. |
1f620 | 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 73 69 6d 70 6c 65 5f 70 61 74 68 2e 70 79 50 4b 01 02 | .drawing/plot_simple_path.pyPK.. |
1f640 | 14 03 14 00 00 00 00 00 fc 7a 57 56 d2 66 e0 26 5b 08 00 00 5b 08 00 00 21 00 00 00 00 00 00 00 | .........zWV.f.&[...[...!....... |
1f660 | 00 00 00 00 a4 81 a1 ab 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 63 75 73 74 6f 6d 5f 6e 6f | ..........drawing/plot_custom_no |
1f680 | 64 65 5f 69 63 6f 6e 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 fc 7a 57 56 1f 79 51 49 5b | de_icons.pyPK...........zWV.yQI[ |
1f6a0 | 04 00 00 5b 04 00 00 18 00 00 00 00 00 00 00 00 00 00 00 a4 81 3b b4 00 00 64 72 61 77 69 6e 67 | ...[.................;...drawing |
1f6c0 | 2f 70 6c 6f 74 5f 64 69 72 65 63 74 65 64 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 02 7b 57 | /plot_directed.pyPK...........{W |
1f6e0 | 56 5d b9 c3 0e 15 05 00 00 15 05 00 00 13 00 00 00 00 00 00 00 00 00 00 00 a4 81 cc b8 00 00 64 | V].............................d |
1f700 | 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 74 73 70 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 00 7b | rawing/plot_tsp.pyPK...........{ |
1f720 | 57 56 d4 74 ef ce db 04 00 00 db 04 00 00 21 00 00 00 00 00 00 00 00 00 00 00 a4 81 12 be 00 00 | WV.t..........!................. |
1f740 | 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 6c 61 62 65 6c 73 5f 61 6e 64 5f 63 6f 6c 6f 72 73 2e 70 | drawing/plot_labels_and_colors.p |
1f760 | 79 50 4b 01 02 14 03 14 00 00 00 00 00 fd 7a 57 56 4e c6 76 b2 28 02 00 00 28 02 00 00 1b 00 00 | yPK...........zWVN.v.(...(...... |
1f780 | 00 00 00 00 00 00 00 00 00 a4 81 2c c3 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 65 69 67 65 | ...........,...drawing/plot_eige |
1f7a0 | 6e 76 61 6c 75 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 01 7b 57 56 b0 0b f0 aa 38 06 | nvalues.pyPK...........{WV....8. |
1f7c0 | 00 00 38 06 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 a4 81 8d c5 00 00 64 72 61 77 69 6e 67 2f | ..8.....................drawing/ |
1f7e0 | 70 6c 6f 74 5f 73 70 65 63 74 72 61 6c 5f 67 72 69 64 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 | plot_spectral_grid.pyPK......... |
1f800 | 00 00 7b 57 56 11 ef 87 aa 7c 08 00 00 7c 08 00 00 20 00 00 00 00 00 00 00 00 00 00 00 a4 81 00 | ..{WV....|...|.................. |
1f820 | cc 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 72 61 69 6e 62 6f 77 5f 63 6f 6c 6f 72 69 6e 67 | ...drawing/plot_rainbow_coloring |
1f840 | 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 fd 7a 57 56 bf 3e 32 8a 1e 04 00 00 1e 04 00 00 1a | .pyPK...........zWV.>2.......... |
1f860 | 00 00 00 00 00 00 00 00 00 00 00 a4 81 ba d4 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 66 6f | .................drawing/plot_fo |
1f880 | 75 72 5f 67 72 69 64 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 00 7b 57 56 85 72 37 d3 06 | ur_grids.pyPK...........{WV.r7.. |
1f8a0 | 10 00 00 06 10 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 a4 81 10 d9 00 00 64 72 61 77 69 6e 67 | .........................drawing |
1f8c0 | 2f 70 6c 6f 74 5f 6b 6e 75 74 68 5f 6d 69 6c 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 | /plot_knuth_miles.pyPK.......... |
1f8e0 | fb 7a 57 56 c9 61 01 95 e3 11 00 00 e3 11 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 a4 81 4f e9 | .zWV.a........................O. |
1f900 | 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 63 68 65 73 73 5f 6d 61 73 74 65 72 73 2e 70 79 50 | ..drawing/plot_chess_masters.pyP |
1f920 | 4b 01 02 14 03 14 00 00 00 00 00 00 7b 57 56 52 90 4b e1 20 01 00 00 20 01 00 00 1d 00 00 00 00 | K...........{WVR.K.............. |
1f940 | 00 00 00 00 00 00 00 a4 81 6d fb 00 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 6e 6f 64 65 5f 63 | .........m...drawing/plot_node_c |
1f960 | 6f 6c 6f 72 6d 61 70 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 fb 7a 57 56 2c 86 d6 29 6d 02 | olormap.pyPK...........zWV,..)m. |
1f980 | 00 00 6d 02 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 a4 81 c8 fc 00 00 64 72 61 77 69 6e 67 2f | ..m.....................drawing/ |
1f9a0 | 70 6c 6f 74 5f 63 65 6e 74 65 72 5f 6e 6f 64 65 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 01 | plot_center_node.pyPK........... |
1f9c0 | 7b 57 56 cb c7 a6 62 aa 03 00 00 aa 03 00 00 26 00 00 00 00 00 00 00 00 00 00 00 a4 81 6e ff 00 | {WV...b........&.............n.. |
1f9e0 | 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 72 61 6e 64 6f 6d 5f 67 65 6f 6d 65 74 72 69 63 5f 67 | .drawing/plot_random_geometric_g |
1fa00 | 72 61 70 68 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 02 7b 57 56 1a 64 80 3d ac 07 00 00 ac | raph.pyPK...........{WV.d.=..... |
1fa20 | 07 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 a4 81 5c 03 01 00 64 72 61 77 69 6e 67 2f 70 6c 6f | .................\...drawing/plo |
1fa40 | 74 5f 75 6e 69 78 5f 65 6d 61 69 6c 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 00 7b 57 56 df | t_unix_email.pyPK...........{WV. |
1fa60 | c6 01 9e 99 02 00 00 99 02 00 00 21 00 00 00 00 00 00 00 00 00 00 00 a4 81 40 0b 01 00 64 72 61 | ...........!.............@...dra |
1fa80 | 77 69 6e 67 2f 70 6c 6f 74 5f 68 6f 75 73 65 5f 77 69 74 68 5f 63 6f 6c 6f 72 73 2e 70 79 50 4b | wing/plot_house_with_colors.pyPK |
1faa0 | 01 02 14 03 14 00 00 00 00 00 fc 7a 57 56 99 7c b8 07 14 06 00 00 14 06 00 00 16 00 00 00 00 00 | ...........zWV.|................ |
1fac0 | 00 00 00 00 00 00 a4 81 18 0e 01 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 64 65 67 72 65 65 2e | ............drawing/plot_degree. |
1fae0 | 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 fc 7a 57 56 c2 48 7c 27 b9 01 00 00 b9 01 00 00 1d 00 | pyPK...........zWV.H|'.......... |
1fb00 | 00 00 00 00 00 00 00 00 00 00 a4 81 60 14 01 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 65 64 67 | ............`...drawing/plot_edg |
1fb20 | 65 5f 63 6f 6c 6f 72 6d 61 70 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 00 7b 57 56 b2 f9 30 | e_colormap.pyPK...........{WV..0 |
1fb40 | 8f e1 03 00 00 e1 03 00 00 22 00 00 00 00 00 00 00 00 00 00 00 a4 81 54 16 01 00 64 72 61 77 69 | .........".............T...drawi |
1fb60 | 6e 67 2f 70 6c 6f 74 5f 6d 75 6c 74 69 70 61 72 74 69 74 65 5f 67 72 61 70 68 2e 70 79 50 4b 01 | ng/plot_multipartite_graph.pyPK. |
1fb80 | 02 14 03 14 00 00 00 00 00 fd 7a 57 56 a5 8c 2c 3b 8e 03 00 00 8e 03 00 00 19 00 00 00 00 00 00 | ..........zWV..,;............... |
1fba0 | 00 00 00 00 00 a4 81 75 1a 01 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 65 67 6f 5f 67 72 61 70 | .......u...drawing/plot_ego_grap |
1fbc0 | 68 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 01 7b 57 56 c3 cc b5 fe f1 02 00 00 f1 02 00 00 | h.pyPK...........{WV............ |
1fbe0 | 19 00 00 00 00 00 00 00 00 00 00 00 a4 81 3a 1e 01 00 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 73 | ..............:...drawing/plot_s |
1fc00 | 65 6c 66 6c 6f 6f 70 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 01 7b 57 56 a6 98 11 54 cc | elfloops.pyPK...........{WV...T. |
1fc20 | 04 00 00 cc 04 00 00 17 00 00 00 00 00 00 00 00 00 00 00 a4 81 62 21 01 00 64 72 61 77 69 6e 67 | .....................b!..drawing |
1fc40 | 2f 70 6c 6f 74 5f 73 61 6d 70 73 6f 6e 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 21 7b 57 56 | /plot_sampson.pyPK..........!{WV |
1fc60 | 48 43 5f 48 da 03 00 00 da 03 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 a4 81 63 26 01 00 65 78 | HC_H......................c&..ex |
1fc80 | 74 65 72 6e 61 6c 2f 6a 61 76 61 73 63 72 69 70 74 5f 66 6f 72 63 65 2e 70 79 50 4b 01 02 14 03 | ternal/javascript_force.pyPK.... |
1fca0 | 14 00 00 00 00 00 21 7b 57 56 fb 9b b3 8f 1d 04 00 00 1d 04 00 00 17 00 00 00 00 00 00 00 00 00 | ......!{WV...................... |
1fcc0 | 00 00 a4 81 77 2a 01 00 65 78 74 65 72 6e 61 6c 2f 70 6c 6f 74 5f 69 67 72 61 70 68 2e 70 79 50 | ....w*..external/plot_igraph.pyP |
1fce0 | 4b 01 02 14 03 14 00 00 00 00 00 26 7b 57 56 1d 30 9c dd 80 07 00 00 80 07 00 00 18 00 00 00 00 | K..........&{WV.0............... |
1fd00 | 00 00 00 00 00 00 00 a4 81 c9 2e 01 00 67 65 6f 73 70 61 74 69 61 6c 2f 70 6c 6f 74 5f 6f 73 6d | .............geospatial/plot_osm |
1fd20 | 6e 78 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 24 7b 57 56 9f de 91 4c 38 0f 00 00 38 0f 00 | nx.pyPK..........${WV...L8...8.. |
1fd40 | 00 18 00 00 00 00 00 00 00 00 00 00 00 a4 81 7f 36 01 00 67 65 6f 73 70 61 74 69 61 6c 2f 70 6c | ................6..geospatial/pl |
1fd60 | 6f 74 5f 6c 69 6e 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 2c 7b 57 56 ae 9b 92 8f cc | ot_lines.pyPK..........,{WV..... |
1fd80 | 08 00 00 cc 08 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 a4 81 ed 45 01 00 67 65 6f 73 70 61 74 | ......................E..geospat |
1fda0 | 69 61 6c 2f 70 6c 6f 74 5f 70 6f 6c 79 67 6f 6e 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 | ial/plot_polygons.pyPK.......... |
1fdc0 | 21 7b 57 56 46 4d ec 62 07 0c 00 00 07 0c 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 a4 81 f2 4e | !{WVFM.b.......................N |
1fde0 | 01 00 67 65 6f 73 70 61 74 69 61 6c 2f 70 6c 6f 74 5f 64 65 6c 61 75 6e 61 79 2e 70 79 50 4b 01 | ..geospatial/plot_delaunay.pyPK. |
1fe00 | 02 14 03 14 00 00 00 00 00 29 7b 57 56 65 4d 6f 7e b9 08 00 00 b9 08 00 00 19 00 00 00 00 00 00 | .........){WVeMo~............... |
1fe20 | 00 00 00 00 00 a4 81 32 5b 01 00 67 65 6f 73 70 61 74 69 61 6c 2f 70 6c 6f 74 5f 70 6f 69 6e 74 | .......2[..geospatial/plot_point |
1fe40 | 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 08 7b 57 56 cf e3 c7 3b 4e 08 00 00 4e 08 00 00 | s.pyPK...........{WV...;N...N... |
1fe60 | 13 00 00 00 00 00 00 00 00 00 00 00 a4 81 22 64 01 00 67 72 61 70 68 2f 70 6c 6f 74 5f 72 6f 67 | .............."d..graph/plot_rog |
1fe80 | 65 74 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 09 7b 57 56 3c 44 85 f0 79 0a 00 00 79 0a 00 | et.pyPK...........{WV<D..y...y.. |
1fea0 | 00 13 00 00 00 00 00 00 00 00 00 00 00 a4 81 a1 6c 01 00 67 72 61 70 68 2f 70 6c 6f 74 5f 77 6f | ................l..graph/plot_wo |
1fec0 | 72 64 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 07 7b 57 56 0f 9f 6b e9 49 03 00 00 49 03 | rds.pyPK...........{WV..k.I...I. |
1fee0 | 00 00 19 00 00 00 00 00 00 00 00 00 00 00 a4 81 4b 77 01 00 67 72 61 70 68 2f 70 6c 6f 74 5f 65 | ................Kw..graph/plot_e |
1ff00 | 72 64 6f 73 5f 72 65 6e 79 69 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 08 7b 57 56 61 9a b2 | rdos_renyi.pyPK...........{WVa.. |
1ff20 | f5 96 0b 00 00 96 0b 00 00 18 00 00 00 00 00 00 00 00 00 00 00 a4 81 cb 7a 01 00 67 72 61 70 68 | ........................z..graph |
1ff40 | 2f 70 6c 6f 74 5f 6d 6f 72 73 65 5f 74 72 69 65 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 07 | /plot_morse_trie.pyPK........... |
1ff60 | 7b 57 56 ba ce f4 d5 f3 03 00 00 f3 03 00 00 18 00 00 00 00 00 00 00 00 00 00 00 a4 81 97 86 01 | {WV............................. |
1ff80 | 00 67 72 61 70 68 2f 70 6c 6f 74 5f 64 61 67 5f 6c 61 79 6f 75 74 2e 70 79 50 4b 01 02 14 03 14 | .graph/plot_dag_layout.pyPK..... |
1ffa0 | 00 00 00 00 00 07 7b 57 56 e2 92 f1 e1 26 03 00 00 26 03 00 00 1d 00 00 00 00 00 00 00 00 00 00 | ......{WV....&...&.............. |
1ffc0 | 00 a4 81 c0 8a 01 00 67 72 61 70 68 2f 70 6c 6f 74 5f 64 65 67 72 65 65 5f 73 65 71 75 65 6e 63 | .......graph/plot_degree_sequenc |
1ffe0 | 65 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 07 7b 57 56 60 b2 58 c9 93 04 00 00 93 04 00 00 | e.pyPK...........{WV`.X......... |
20000 | 16 00 00 00 00 00 00 00 00 00 00 00 a4 81 21 8e 01 00 67 72 61 70 68 2f 70 6c 6f 74 5f 66 6f 6f | ..............!...graph/plot_foo |
20020 | 74 62 61 6c 6c 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 08 7b 57 56 be b3 44 81 a0 07 00 00 | tball.pyPK...........{WV..D..... |
20040 | a0 07 00 00 19 00 00 00 00 00 00 00 00 00 00 00 a4 81 e8 92 01 00 67 72 61 70 68 2f 70 6c 6f 74 | ......................graph/plot |
20060 | 5f 74 72 69 61 64 5f 74 79 70 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 07 7b 57 56 ab | _triad_types.pyPK...........{WV. |
20080 | 06 65 1a f0 01 00 00 f0 01 00 00 26 00 00 00 00 00 00 00 00 00 00 00 a4 81 bf 9a 01 00 67 72 61 | .e.........&.................gra |
200a0 | 70 68 2f 70 6c 6f 74 5f 65 78 70 65 63 74 65 64 5f 64 65 67 72 65 65 5f 73 65 71 75 65 6e 63 65 | ph/plot_expected_degree_sequence |
200c0 | 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 08 7b 57 56 33 1a c8 eb ee 01 00 00 ee 01 00 00 19 | .pyPK...........{WV3............ |
200e0 | 00 00 00 00 00 00 00 00 00 00 00 a4 81 f3 9c 01 00 67 72 61 70 68 2f 70 6c 6f 74 5f 6b 61 72 61 | .................graph/plot_kara |
20100 | 74 65 5f 63 6c 75 62 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 08 7b 57 56 85 75 5f 5c 55 0b | te_club.pyPK...........{WV.u_\U. |
20120 | 00 00 55 0b 00 00 27 00 00 00 00 00 00 00 00 00 00 00 a4 81 18 9f 01 00 67 72 61 70 68 2f 70 6c | ..U...'.................graph/pl |
20140 | 6f 74 5f 6e 61 70 6f 6c 65 6f 6e 5f 72 75 73 73 69 61 6e 5f 63 61 6d 70 61 69 67 6e 2e 70 79 50 | ot_napoleon_russian_campaign.pyP |
20160 | 4b 01 02 14 03 14 00 00 00 00 00 07 7b 57 56 0c 6c bc 07 cb 02 00 00 cb 02 00 00 1d 00 00 00 00 | K...........{WV.l............... |
20180 | 00 00 00 00 00 00 00 a4 81 b2 aa 01 00 67 72 61 70 68 76 69 7a 5f 64 72 61 77 69 6e 67 2f 70 6c | .............graphviz_drawing/pl |
201a0 | 6f 74 5f 67 72 69 64 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 06 7b 57 56 42 40 d4 07 62 02 | ot_grid.pyPK...........{WVB@..b. |
201c0 | 00 00 62 02 00 00 23 00 00 00 00 00 00 00 00 00 00 00 a4 81 b8 ad 01 00 67 72 61 70 68 76 69 7a | ..b...#.................graphviz |
201e0 | 5f 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 63 6f 6e 76 65 72 73 69 6f 6e 2e 70 79 50 4b 01 02 14 | _drawing/plot_conversion.pyPK... |
20200 | 03 14 00 00 00 00 00 06 7b 57 56 bd 2c e8 df b6 02 00 00 b6 02 00 00 23 00 00 00 00 00 00 00 00 | ........{WV.,..........#........ |
20220 | 00 00 00 a4 81 5b b0 01 00 67 72 61 70 68 76 69 7a 5f 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 61 | .....[...graphviz_drawing/plot_a |
20240 | 74 74 72 69 62 75 74 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 07 7b 57 56 c4 86 33 36 | ttributes.pyPK...........{WV..36 |
20260 | 55 02 00 00 55 02 00 00 23 00 00 00 00 00 00 00 00 00 00 00 a4 81 52 b3 01 00 67 72 61 70 68 76 | U...U...#.............R...graphv |
20280 | 69 7a 5f 64 72 61 77 69 6e 67 2f 70 6c 6f 74 5f 6d 69 6e 69 5f 61 74 6c 61 73 2e 70 79 50 4b 01 | iz_drawing/plot_mini_atlas.pyPK. |
202a0 | 02 14 03 14 00 00 00 00 00 05 7b 57 56 ce 9e 05 c7 50 04 00 00 50 04 00 00 25 00 00 00 00 00 00 | ..........{WV....P...P...%...... |
202c0 | 00 00 00 00 00 a4 81 e8 b5 01 00 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 2f 70 6c 6f 74 5f | ...........graphviz_layout/plot_ |
202e0 | 64 65 63 6f 6d 70 6f 73 69 74 69 6f 6e 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 02 7b 57 56 | decomposition.pyPK...........{WV |
20300 | 3f 47 2f 07 94 05 00 00 94 05 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 a4 81 7b ba 01 00 67 72 | ?G/.......................{...gr |
20320 | 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 2f 70 6c 6f 74 5f 61 74 6c 61 73 2e 70 79 50 4b 01 02 14 | aphviz_layout/plot_atlas.pyPK... |
20340 | 03 14 00 00 00 00 00 05 7b 57 56 e6 71 7f ce bb 06 00 00 bb 06 00 00 27 00 00 00 00 00 00 00 00 | ........{WV.q..........'........ |
20360 | 00 00 00 a4 81 4a c0 01 00 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 2f 70 6c 6f 74 5f 67 69 | .....J...graphviz_layout/plot_gi |
20380 | 61 6e 74 5f 63 6f 6d 70 6f 6e 65 6e 74 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 05 7b 57 56 | ant_component.pyPK...........{WV |
203a0 | 7d af ce 32 76 01 00 00 76 01 00 00 25 00 00 00 00 00 00 00 00 00 00 00 a4 81 4a c7 01 00 67 72 | }..2v...v...%.............J...gr |
203c0 | 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 2f 70 6c 6f 74 5f 63 69 72 63 75 6c 61 72 5f 74 72 65 65 | aphviz_layout/plot_circular_tree |
203e0 | 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 06 7b 57 56 7f 36 18 54 10 06 00 00 10 06 00 00 23 | .pyPK...........{WV.6.T........# |
20400 | 00 00 00 00 00 00 00 00 00 00 00 a4 81 03 c9 01 00 67 72 61 70 68 76 69 7a 5f 6c 61 79 6f 75 74 | .................graphviz_layout |
20420 | 2f 70 6c 6f 74 5f 6c 61 6e 6c 5f 72 6f 75 74 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 | /plot_lanl_routes.pyPK.......... |
20440 | 2c 7b 57 56 4a 68 e8 5f 87 17 00 00 87 17 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 a4 81 54 cf | ,{WVJh._......................T. |
20460 | 01 00 73 75 62 63 6c 61 73 73 2f 70 6c 6f 74 5f 61 6e 74 69 67 72 61 70 68 2e 70 79 50 4b 01 02 | ..subclass/plot_antigraph.pyPK.. |
20480 | 14 03 14 00 00 00 00 00 2c 7b 57 56 b2 4b 1a 52 f4 08 00 00 f4 08 00 00 1b 00 00 00 00 00 00 00 | ........,{WV.K.R................ |
204a0 | 00 00 00 00 a4 81 13 e7 01 00 73 75 62 63 6c 61 73 73 2f 70 6c 6f 74 5f 70 72 69 6e 74 67 72 61 | ..........subclass/plot_printgra |
204c0 | 70 68 2e 70 79 50 4b 05 06 00 00 00 00 46 00 46 00 85 14 00 00 40 f0 01 00 00 00 | ph.pyPK......F.F.....@..... |