Graph annotate_weighted_degrees


annotate_weighted_degrees(self, output_property_name, degree_option=None, input_edge_labels=None, edge_weight_property=None, edge_weight_default=None)

Calculates the weighted degree of each vertex with respect to an (optional) set of labels.

Parameters:

output_property_name : unicode

property name of where to store output

degree_option : unicode (default=None)

choose from ‘out’, ‘in’, ‘undirected’

input_edge_labels : list (default=None)

labels of edge types that should be included

edge_weight_property : unicode (default=None)

property name of edge weight, if not provided all edges are weighted equally

edge_weight_default : float64 (default=None)

default edge weight

Returns:

: dict

Dictionary containing the vertex type as the key and the corresponding vertex’s frame with a column storing the annotated weighted degree for the vertex in a user specified property. Call dictionary_name[‘vertex type’] to get the handle to frame of that ‘vertex type’

Pulls graph from underlying store, calculates weighted degrees and writes them into the property specified, and then writes the output graph to the underlying store.

Degree Calculation

A fundamental quantity in graph analysis is the degree of a vertex: The degree of a vertex is the number of edges adjacent to it.

For a directed edge relation, a vertex has both an out-degree (the number of edges leaving the vertex) and an in-degree (the number of edges entering the vertex).

The toolkit provides a routine annotate_degrees for calculating the degrees of vertices. The Trusted Analytics Platform routine annotate_degrees can be executed at distributed scale.

In the presence of edge weights, vertices can have weighted degrees: The weighted degree of a vertex is the sum of weights of edges adjacent to it. Analogously, the weighted in-degree of a vertex is the sum of the weights of the edges entering it, and the weighted out-degree is the sum of the weights of the edges leaving the vertex.

The toolkit provides this routine for the distributed calculation of weighted vertex degrees.

Examples

>>> graph = ta.Graph()
>>> graph.define_vertex_type('source')
[===Job Progress===]
>>> graph.vertices['source'].add_vertices(vertex_frame, 'source', 'label')
[===Job Progress===]
>>> graph.define_edge_type('edges','source', 'source', directed=False)
[===Job Progress===]
>>> graph.edges['edges'].add_edges(edge_frame, 'source', 'dest', ['weight'])
[===Job Progress===]
>>> result = graph.annotate_weighted_degrees("outEdgesCount",edge_weight_property="weight", degree_option="out")
[===Job Progress===]
>>> result['source'].inspect()
[#]  _vid  _label  source  label  outEdgesCount
===============================================
[0]     1  source       1    1.0            3.0
[1]     2  source       2    1.0            2.0
[2]     3  source       3    5.0            2.0
[3]     4  source       4    5.0            2.0
[4]     5  source       5    5.0            1.0
>>> result = graph.annotate_weighted_degrees("inEdgesCount",edge_weight_property="weight", degree_option="in")
[===Job Progress===]
>>> result['source'].inspect()
[#]  _vid  _label  source  label  inEdgesCount
==============================================
[0]     1  source       1    1.0           3.0
[1]     2  source       2    1.0           2.0
[2]     3  source       3    5.0           2.0
[3]     4  source       4    5.0           2.0
[4]     5  source       5    5.0           1.0