@@ -50,65 +50,59 @@ CREATE QUERY tg_pagerank (STRING v_type, STRING e_type, FLOAT max_change=0.001,
50
50
importance of traversal vs. random teleport
51
51
*/
52
52
53
- TYPEDEF TUPLE<VERTEX Vertex_ID, FLOAT score> Vertex_Score;
54
- HeapAccum<Vertex_Score>(top_k, score DESC) @@top_scores_heap;
55
- SetAccum<VERTEX> @@top_vertices; # vertices with top score
56
- MaxAccum<FLOAT> @@max_diff = 9999; # max score change in an iteration
57
- SumAccum<FLOAT> @sum_recvd_score = 0; # sum of scores each vertex receives FROM neighbors
58
- SumAccum<FLOAT> @sum_score = 1; # initial score for every vertex is 1.
59
- SetAccum<EDGE> @@edge_set; # list of all edges, if display is needed
60
- FILE f (file_path);
53
+ TYPEDEF TUPLE<VERTEX Vertex_ID, FLOAT score> Vertex_Score;
54
+ HeapAccum<Vertex_Score>(top_k, score DESC) @@top_scores_heap;
55
+ SetAccum<VERTEX> @@top_vertices; # vertices with top score
56
+ MaxAccum<FLOAT> @@max_diff = 9999; # max score change in an iteration
57
+ SumAccum<FLOAT> @sum_recvd_score = 0; # sum of scores each vertex receives FROM neighbors
58
+ SumAccum<FLOAT> @sum_score = 1; # initial score for every vertex is 1.
59
+ SetAccum<EDGE> @@edge_set; # list of all edges, if display is needed
60
+ FILE f (file_path);
61
61
62
- # PageRank iterations
63
- Start = {v_type}; # Start with all vertices of specified type(s)
64
- WHILE @@max_diff > max_change
65
- LIMIT maximum_iteration DO
62
+ # PageRank iterations
63
+ Start = {v_type}; # Start with all vertices of specified type(s)
64
+ WHILE @@max_diff > max_change LIMIT maximum_iteration DO
66
65
@@max_diff = 0;
67
- V = SELECT s
68
- FROM Start:s -(e_type:e)- v_type:t
69
- ACCUM
70
- t.@sum_recvd_score += s.@sum_score/(s.outdegree(e_type))
71
- POST-ACCUM
72
- s.@sum_score = (1.0-damping) + damping * s.@sum_recvd_score,
73
- s.@sum_recvd_score = 0,
74
- @@max_diff += abs(s.@sum_score - s.@sum_score');
75
- END; # END WHILE loop
66
+ V = SELECT s FROM Start:s -(e_type:e)- v_type:t
67
+ ACCUM
68
+ t.@sum_recvd_score += s.@sum_score/(s.outdegree(e_type))
69
+ POST-ACCUM
70
+ s.@sum_score = (1.0 - damping) + damping * s.@sum_recvd_score,
71
+ s.@sum_recvd_score = 0,
72
+ @@max_diff += abs(s.@sum_score - s.@sum_score');
73
+ END; # END WHILE loop
76
74
77
- # Output
78
- IF file_path != "" THEN
79
- f.println("Vertex_ID", "PageRank");
80
- END;
81
- V = SELECT s
82
- FROM Start:s
83
- POST-ACCUM
84
- IF result_attribute != "" THEN
85
- s.setAttr(result_attribute, s.@sum_score)
86
- END,
87
-
88
- IF file_path != "" THEN
89
- f.println(s, s.@sum_score)
90
- END,
91
-
92
- IF print_results THEN
93
- @@top_scores_heap += Vertex_Score(s, s.@sum_score)
94
- END;
75
+ # Output
76
+ IF file_path != "" THEN
77
+ f.println("Vertex_ID", "PageRank");
78
+ END;
79
+ V = SELECT s FROM Start:s
80
+ POST-ACCUM
81
+ IF result_attribute != "" THEN
82
+ s.setAttr(result_attribute, s.@sum_score)
83
+ END,
84
+ IF file_path != "" THEN
85
+ f.println(s, s.@sum_score)
86
+ END,
87
+
88
+ IF print_results THEN
89
+ @@top_scores_heap += Vertex_Score(s, s.@sum_score)
90
+ END;
95
91
96
- IF print_results THEN
97
- PRINT @@top_scores_heap;
98
- IF display_edges THEN
99
-
100
- FOREACH vert IN @@top_scores_heap DO
101
- @@top_vertices += vert.Vertex_ID;
92
+ IF print_results THEN
93
+ PRINT @@top_scores_heap;
94
+ IF display_edges THEN
95
+ FOREACH vert IN @@top_scores_heap DO
96
+ @@top_vertices += vert.Vertex_ID;
97
+ END;
98
+
99
+ Top = {@@top_vertices};
100
+ Top = SELECT s FROM Top:s -(e_type:e)- v_type:t
101
+ WHERE @@top_vertices.contains(t)
102
+ ACCUM @@edge_set += e;
103
+
104
+ PRINT @@edge_set;
105
+ PRINT Top;
102
106
END;
103
-
104
- Top = {@@top_vertices};
105
- Top = SELECT s
106
- FROM Top:s -(e_type:e)- v_type:t
107
- WHERE @@top_vertices.contains(t)
108
- ACCUM @@edge_set += e;
109
-
110
- PRINT @@edge_set;
111
- PRINT Top;
112
107
END;
113
- END;
114
108
}
0 commit comments