+ All Categories
Home > Technology > Graph-Tool in Practice

Graph-Tool in Practice

Date post: 17-Jun-2015
Category:
Upload: mosky-liu
View: 739 times
Download: 1 times
Share this document with a friend
Description:
It was the talk, titled "Graph-Tool: The Efficient Network Analyzing Tool for Python", at PyCon APAC 2014 [1] and PyCon SG 2014 [2]. It introduces you to Graph-Tool by mass code snippets. [1] https://tw.pycon.org/2014apac [2] https://pycon.sg/
Popular Tags:
102
Graph-Tool The Efficient Network Analyzing Tool for Python Mosky
Transcript
Page 1: Graph-Tool in Practice

Graph-ToolThe Efficient Network

Analyzing Tool for Python Mosky

Page 2: Graph-Tool in Practice

Graph-Toolin Practice

Mosky

Page 3: Graph-Tool in Practice

MOSKY

3

Page 4: Graph-Tool in Practice

MOSKY• Python Charmer at Pinkoi

3

Page 5: Graph-Tool in Practice

MOSKY• Python Charmer at Pinkoi

• An author of the Python packages:

• MoSQL, Clime, Uniout, ZIPCodeTW, …

3

Page 6: Graph-Tool in Practice

MOSKY• Python Charmer at Pinkoi

• An author of the Python packages:

• MoSQL, Clime, Uniout, ZIPCodeTW, …

• A speaker of the conferences

• 2014: PyCon APAC, OSDC; 2013: PyCon APAC, PyCon TW, COSCUP, …

3

Page 7: Graph-Tool in Practice

MOSKY• Python Charmer at Pinkoi

• An author of the Python packages:

• MoSQL, Clime, Uniout, ZIPCodeTW, …

• A speaker of the conferences

• 2014: PyCon APAC, OSDC; 2013: PyCon APAC, PyCon TW, COSCUP, …

• A Python instructor

3

Page 8: Graph-Tool in Practice

MOSKY• Python Charmer at Pinkoi

• An author of the Python packages:

• MoSQL, Clime, Uniout, ZIPCodeTW, …

• A speaker of the conferences

• 2014: PyCon APAC, OSDC; 2013: PyCon APAC, PyCon TW, COSCUP, …

• A Python instructor

• mosky.tw

3

Page 9: Graph-Tool in Practice

OUTLINE

4

Page 10: Graph-Tool in Practice

OUTLINE• Introduction

4

Page 11: Graph-Tool in Practice

OUTLINE• Introduction

• Create Graph

4

Page 12: Graph-Tool in Practice

OUTLINE• Introduction

• Create Graph

• Visualize Graph

4

Page 13: Graph-Tool in Practice

OUTLINE• Introduction

• Create Graph

• Visualize Graph

• Analyze Graph

4

Page 14: Graph-Tool in Practice

OUTLINE• Introduction

• Create Graph

• Visualize Graph

• Analyze Graph

• Conclusion

4

Page 15: Graph-Tool in Practice

INTRODUCTION

Page 16: Graph-Tool in Practice

GRAPH-TOOL

6

Page 17: Graph-Tool in Practice

GRAPH-TOOL

• It's for analyzing graph.

6

Page 18: Graph-Tool in Practice

GRAPH-TOOL

• It's for analyzing graph.

• Fast. It bases on Boost Graph in C++.

6

Page 19: Graph-Tool in Practice

GRAPH-TOOL

• It's for analyzing graph.

• Fast. It bases on Boost Graph in C++.

• Powerful visualization

6

Page 20: Graph-Tool in Practice

GRAPH-TOOL

• It's for analyzing graph.

• Fast. It bases on Boost Graph in C++.

• Powerful visualization

• Lot of useful algorithms

6

Page 21: Graph-Tool in Practice

GET GRAPH-TOOL

7

Page 22: Graph-Tool in Practice

GET GRAPH-TOOL• Super easy on Debian / Ubuntu

• http://graph-tool.skewed.de/download#debian

7

Page 23: Graph-Tool in Practice

GET GRAPH-TOOL• Super easy on Debian / Ubuntu

• http://graph-tool.skewed.de/download#debian

• Super hard on Mac

• http://graph-tool.skewed.de/download#macos

• Install the dependencies by homebrew and pip. Then compile it from source.

• Note it may take you 3~4 hours. I warned you!7

Page 24: Graph-Tool in Practice

CREATE GRAPH

Page 25: Graph-Tool in Practice

BEFORE STARTING

9

Page 26: Graph-Tool in Practice

BEFORE STARTING

• Define your problem.

9

Page 27: Graph-Tool in Practice

BEFORE STARTING

• Define your problem.

• Convert it into a graphic form.

9

Page 28: Graph-Tool in Practice

BEFORE STARTING

• Define your problem.

• Convert it into a graphic form.

• Parse raw data.

9

Page 29: Graph-Tool in Practice

MY PROBLEM

10

Page 30: Graph-Tool in Practice

MY PROBLEM

• To improve the duration of an online marketplace.

10

Page 31: Graph-Tool in Practice

MY PROBLEM

• To improve the duration of an online marketplace.

• What's product browsing flow that users prefer?

10

Page 32: Graph-Tool in Practice

IN GRAPHIC FORM

11

What Weight

Vertex Product Count

Edge Directed Browsing Count

Page 33: Graph-Tool in Practice

PARSING

12

Page 34: Graph-Tool in Practice

PARSING• Regular expression

• Filter garbages.

12

Page 35: Graph-Tool in Practice

PARSING• Regular expression

• Filter garbages.

• Sorting

12

Page 36: Graph-Tool in Practice

PARSING• Regular expression

• Filter garbages.

• Sorting

• Pickle

• HIGHEST_PROTOCOL

• Use tuple to save space/time.

• Save into serial files.

12

Page 37: Graph-Tool in Practice

VERTEX AND EDGE

import graph_tool.all as gt!

g = gt.Graph()v1 = g.add_vertex()v2 = g.add_vertex()e = g.add_edge(v1, v2)

13

Page 38: Graph-Tool in Practice

PROPERTY

v_count_p = g.new_vertex_property('int')!

# store it in our graph, optionallyg.vp['count'] = v_count_p

14

Page 39: Graph-Tool in Practice

FASTER IMPORT

from graph_tool import Graph

15

Page 40: Graph-Tool in Practice

COUNTING

name_v_map = {}for name in names: v = name_v_map.get(name) if v is None: v = g.add_vertex() v_count_p[v] = 0 name_v_map[name] = v v_count_p[v] += 1

16

Page 41: Graph-Tool in Practice

VISUALIZE GRAPH

Page 42: Graph-Tool in Practice

THE SIMPLEST

gt.graph_draw( g, output_path = 'output.pdf',)!

gt.graph_draw( g, output_path = 'output.png',)

18

Page 43: Graph-Tool in Practice

19

Page 44: Graph-Tool in Practice

USE CONSTANTS

SIZE = 400V_SIZE = SIZE / 20.E_PWIDTH = V_SIZE / 4.gt.graph_draw( … output_size = (SIZE, SIZE), vertex_size = V_SIZE, edge_pen_width = E_PWDITH,)

20

Page 45: Graph-Tool in Practice

21

Page 46: Graph-Tool in Practice

USE PROP_TO_SIZEv_size_p = gt.prop_to_size( v_count_p, MI_V_SIZE, MA_V_SIZE,)…gt.graph_draw( … vertex_size = v_size_p, edge_pen_width = e_pwidth_p,)

22

Page 47: Graph-Tool in Practice

23

Page 48: Graph-Tool in Practice

USE FILL_COLOR

gt.graph_draw( … vertex_fill_color = v_size_p,)

24

Page 49: Graph-Tool in Practice

25

Page 50: Graph-Tool in Practice

ANALYZE GRAPH

Page 51: Graph-Tool in Practice

CHOOSE AN ALGORITHM

27

Page 52: Graph-Tool in Practice

CHOOSE AN ALGORITHM • Search algorithms

• BFS search …

27

Page 53: Graph-Tool in Practice

CHOOSE AN ALGORITHM • Search algorithms

• BFS search …

• Assessing graph topology

• shortest path …

27

Page 54: Graph-Tool in Practice

CHOOSE AN ALGORITHM • Search algorithms

• BFS search …

• Assessing graph topology

• shortest path …

• Centrality measures

• pagerank, betweenness, closeness …27

Page 55: Graph-Tool in Practice

28

Page 56: Graph-Tool in Practice

• Maximum flow algorithms

28

Page 57: Graph-Tool in Practice

• Maximum flow algorithms

• Community structures

28

Page 58: Graph-Tool in Practice

• Maximum flow algorithms

• Community structures

• Clustering coefficients

28

Page 59: Graph-Tool in Practice

CENTRALITY MEASURES

29

Page 60: Graph-Tool in Practice

CENTRALITY MEASURES• Degree centrality

• the number of links incident upon a node

• the immediate risk of taking a node out

29

Page 61: Graph-Tool in Practice

CENTRALITY MEASURES• Degree centrality

• the number of links incident upon a node

• the immediate risk of taking a node out

• Closeness centrality

• sum of a node's distances to all other nodes

• the cost to spread information to all other nodes29

Page 62: Graph-Tool in Practice

30

Page 63: Graph-Tool in Practice

• Betweenness centrality

• the number of times a node acts as a bridge

• the control of a node on the communication between other nodes

30

Page 64: Graph-Tool in Practice

• Betweenness centrality

• the number of times a node acts as a bridge

• the control of a node on the communication between other nodes

• Eigenvector centrality

• the influence of a node in a network

• Google's PageRank is a variant of the Eigenvector centrality measure

30

Page 65: Graph-Tool in Practice

MY CHOICE

31

Page 66: Graph-Tool in Practice

MY CHOICE

• Centrality measures - Closeness centrality

31

Page 67: Graph-Tool in Practice

MY CHOICE

• Centrality measures - Closeness centrality

• Get the products are easier to all other products.

31

Page 68: Graph-Tool in Practice

CALCULATE CLOSENESS!

!

e_icount_p = g.new_edge_property('int')e_icount_p.a = e_count_p.a.max()-e_count_p.a!

v_cl_p = closeness(g, weight=e_icount_p)!

import numpy as npv_cl_p.a = np.nan_to_num(v_cl_p.a)

32

Page 69: Graph-Tool in Practice

DRAW CLOSENESSv_cl_size_p = gt.prop_to_size( v_cl_p, MI_V_SIZE, MA_V_SIZE,)…gt.graph_draw( … vertex_fill_color = v_cl_size_p,)

33

Page 70: Graph-Tool in Practice

34

Page 71: Graph-Tool in Practice

ON THE FLY FILTERING

!

v_pck_p = g.new_vertex_property('bool')v_pck_p.a = v_count_p.a > v_count_p.a.mean()!

g.set_vertex_filter(v_pck_p)# g.set_vertex_filter(None) # unset

35

Page 72: Graph-Tool in Practice

36

Page 73: Graph-Tool in Practice

TOP N

t10_idxs = v_count_p.a.argsort()[-10:][::-1]!

t1_idx = t10_idxs[0]t1_v = g.vertex(t1_idx)t1_name = v_name_p[t1_v]t1_count = v_count_p[t1_v]

37

Page 74: Graph-Tool in Practice

SFDF LAYOUT

gt.graph_draw( … pos = gt.sfdp_layout(g),)

38

Page 75: Graph-Tool in Practice

39

Page 76: Graph-Tool in Practice

gt.graph_draw( … pos = gt.sfdp_layout( g, eweight=e_count_p ),)!gt.graph_draw( … pos = gt.sfdp_layout( g, eweight=e_count_p, vweight=v_count_p ),)

40

Page 77: Graph-Tool in Practice

41

Page 78: Graph-Tool in Practice

42

Page 79: Graph-Tool in Practice

43

Page 80: Graph-Tool in Practice

FR LAYOUTgt.graph_draw( … pos = gt.fruchterman_reingold_layout(g),)!gt.graph_draw( … pos = gt.fruchterman_reingold_layout( g, weight=e_count_p ),)

44

Page 81: Graph-Tool in Practice

45

Page 82: Graph-Tool in Practice

46

Page 83: Graph-Tool in Practice

47

Page 84: Graph-Tool in Practice

ARF LAYOUTgt.graph_draw( … pos = gt.arf_layout(g),)!gt.graph_draw( … pos = gt.arf_layout( g, weight=e_count_p ),)

48

Page 85: Graph-Tool in Practice

49

Page 86: Graph-Tool in Practice

50

Page 87: Graph-Tool in Practice

51

Page 88: Graph-Tool in Practice

MY GRAPH

Page 89: Graph-Tool in Practice

53

Page 90: Graph-Tool in Practice

CONCLUSION

Page 91: Graph-Tool in Practice

55

CONCLUSION

Page 92: Graph-Tool in Practice

• Define problem in graphic form.

55

CONCLUSION

Page 93: Graph-Tool in Practice

• Define problem in graphic form.

• Parse raw data.

• Watch out! Your data will bite you. →

55

CONCLUSION

Page 94: Graph-Tool in Practice

• Define problem in graphic form.

• Parse raw data.

• Watch out! Your data will bite you. →

• Visualize to understand.

55

CONCLUSION

Page 95: Graph-Tool in Practice

• Define problem in graphic form.

• Parse raw data.

• Watch out! Your data will bite you. →

• Visualize to understand.

• Choose a proper algorithms.

55

CONCLUSION

Page 96: Graph-Tool in Practice

• Define problem in graphic form.

• Parse raw data.

• Watch out! Your data will bite you. →

• Visualize to understand.

• Choose a proper algorithms.

• Filter data which interest you.

55

CONCLUSION

Page 97: Graph-Tool in Practice

• Define problem in graphic form.

• Parse raw data.

• Watch out! Your data will bite you. →

• Visualize to understand.

• Choose a proper algorithms.

• Filter data which interest you.

• Visualize again to convince.

55

CONCLUSION

Page 98: Graph-Tool in Practice

• Define problem in graphic form.

• Parse raw data.

• Watch out! Your data will bite you. →

• Visualize to understand.

• Choose a proper algorithms.

• Filter data which interest you.

• Visualize again to convince.

• mosky.tw

55

CONCLUSION

Page 99: Graph-Tool in Practice

DEMO

Page 100: Graph-Tool in Practice

COSCUP 20142014.07.19 - 2014.07.20 | Academia Sinica, Taipei, Taiwan

Page 101: Graph-Tool in Practice

LINKS• Quick start using graph-tool

http://graph-tool.skewed.de/static/doc/quickstart.html

• Learn more about Graph objecthttp://graph-tool.skewed.de/static/doc/graph_tool.html

• The possible property value typeshttp://graph-tool.skewed.de/static/doc/graph_tool.html#graph_tool.PropertyMap

58

Page 102: Graph-Tool in Practice

• Graph drawing and layouthttp://graph-tool.skewed.de/static/doc/draw.html

• Available subpackages - Graph-Toolhttp://graph-tool.skewed.de/static/doc/graph_tool.html#available-subpackages

• Centrality - Wikihttp://en.wikipedia.org/wiki/Centrality

• NumPy Reference http://docs.scipy.org/doc/numpy/reference/

59


Recommended