Process undirected graphs: nctx.undirected¶
This submodule provides functionality for undirected graphs. The examples on this page all build on the same graph:
>>> import nctx.undirected as nctx
>>> g = nctx.Graph()
>>> name_map = nctx.PropertyMapStr(g, 'name')
>>> context_map = PropertyMapVecDouble(g, 'context')
>>> nctx.read_graphml(g, 'bcde.ctx.undir.graphml', [name_map, context_map])
If you load this module, all operations refer to undirected graphs.
Up to now, there is no possibility to convert a undirected graph into a directed one or vice versa. This will be added in future versions.
Todo
Functionality to convert undirected to directed graphs.
The Graph Class¶
Graph 
This class represents an undirected graph. 
__hash__ 

__init__ 

add_edge 
Add an edge that connects u and v. 
add_vertex 
Add a vertex to the graph. 
children 
Iterate over the children of a given vertex u. 
edges 
Iterate over the edges of the graph. 
in_edges 
Iterate over the incoming edges of a vertex. 
numEdges 
Retrieve the number of edges in the graph. 
numVertices 
Retrieve the number of vertices in the graph. 
out_edges 
Iterate over the outgoing edges of a vertex. 
parents 
Iterate over the parents of a given vertex u. 
source 
Retrieve the source vertex of an edge. 
target 
Retrieve the target vertex of an edge. 
vertices 
Iterate over the vertices of the graph. 

class
nctx.undirected.
Graph
¶ This class represents an undirected graph.
Example: >>> import nctx.undirected as nctx >>> graph = nctx.Graph()

__hash__
() → int¶ Not commented yet

__init__
((object)arg1) → None¶ Not commented yet

add_edge
((int)u, (int)v) → bool :¶ Add an edge that connects u and v.
Returns: Status if adding the edge was successful.
Return type: bool
Example: >>> from collections import defaultdict >>> vertices = defaultdict(lambda: graph.add_vertex()) >>> for i in range(10): ... _ = vertices[i] >>> graph.add_edge(vertices[0], vertices[1]) True

add_vertex
() → int :¶ Add a vertex to the graph.
Returns: The ID of the added vertex.
Return type: int
Example: >>> from collections import defaultdict >>> name_map = nctx.PropertyMapStr(graph, 'name') >>> vertices = defaultdict(lambda: graph.add_vertex()) >>> for i in range(10): ... v = vertices[i] ... name_map.set_elem(v, f"vertex {i}")

children
((int)u) → a_iter_ids :¶ Iterate over the children of a given vertex u. Since there is no difference between children and parents in an undirected graph,
children
yields the same list of vertices asparents
Parameters: u (int) – ID of the vertex whose children should be iterated.
Returns: A vertex iterator
Return type: Example: >>> some_vertex = 0 >>> for c in g.children(some_vertex): ... pass

edges
() → e_iter_ids :¶ Iterate over the edges of the graph. Use
source
to access the source vertex of an edge andtarget
to access its target. Note that incoming and outgoing edges are not distinguished in an undirected graph, thereforein_edges
,out_edges
, and this function all yield the same results.Returns: The edge iterator
Return type: Example: >>> for e in g.edges(): ... source_vertex = g.source(e) ... target_vertex = g.target(e)

in_edges
((int)arg2) → e_iter_ids_in :¶ Iterate over the incoming edges of a vertex. Use
source
to access the source vertex of an edge.Parameters: v (int) – ID of the vertex whose inedges should be iterated.
Returns: The inedge iterator
Return type: Example: >>> v=4 >>> for e in g.in_edges(v): ... source_vertex = g.source(e)

numEdges
() → int :¶ Retrieve the number of edges in the graph.
Returns: The number of edges Return type: int

numVertices
() → int :¶ Retrieve the number of vertices in the graph.
Returns: The number of vertices Return type: int

out_edges
((int)arg2) → e_iter_ids_out :¶ Iterate over the outgoing edges of a vertex. Use
target
to access the target vertex of an edge.Parameters: v (int) – ID of the vertex whose outedges should be iterated.
Returns: The outedge iterator
Return type: Example: >>> v=4 >>> for e in g.in_edges(v): ... target_vertex = g.target(e)

parents
((int)u) → a_iter_ids_rev :¶ Iterate over the parents of a given vertex u. Since there is no difference between children and parents in an undirected graph,
parents
yields the same list of vertices aschildren
Parameters: u (int) – ID of the vertex whose parents should be iterated.
Returns: A vertex iterator
Return type: Example: >>> some_vertex = 0 >>> for p in g.parents(some_vertex): ... pass

source
((Edge)e) → int :¶ Retrieve the source vertex of an edge. See
edges
for an example.Parameters: e (Edge) – An edge. Returns: The ID of the source vertex Return type: int

target
((Edge)e) → int :¶ Retrieve the target vertex of an edge. See
edges
for an example.Parameters: e (Edge) – An edge. Returns: The ID of the target vertex Return type: int

vertices
() → v_iter_ids :¶ Iterate over the vertices of the graph.
Returns: A vertex iterator
Return type: Example: >>> for v in g.vertices(): ... pass

AlgPaths: Shortestpath discovery¶
AlgPaths 

dijkstra 
Conventional singlesource shortest paths discovery using Dijkstra’s algorithm. 
dijkstra_apsp_ctx 
Obtain allpairsshortestpaths using Dijkstra’s algorithm taking into account contextual constraints. 
dijkstra_ctx 
Obtain shortest paths with dynamic contextual constraints. 
find_path 
Conventional shortest path discovery using Dijkstra’s algorithm. 
find_path_ctx 
Obtain a shortest paths from a start vertex to a target vertex using Dijkstra’s algorithm taking into account contextual constraints. 

class
nctx.undirected.
AlgPaths
¶ 
dijkstra
((Graph)g, (int)start, (PropertyMapULong)distances) → None :

dijkstra
((Graph)g, (int)start) → PropertyMapULong :¶ Conventional singlesource shortest paths discovery using Dijkstra’s algorithm.
Parameters:  g (Graph) – The Graph object
 start (int) – Source vertex
 distances (PropertyMapULong) – PropertyMap in which distances will be written.
Returns: PropertyMap with distances.
Return type:

dijkstra_apsp_ctx
((Graph)g, (object)decision_fct, (PropertyMapVecULong)distances) → None :

dijkstra_apsp_ctx
((Graph)g, (object)decision_fct) → PropertyMapVecULong :¶ Obtain allpairsshortestpaths using Dijkstra’s algorithm taking into account contextual constraints.
This is basically a wrapper around
dijkstra_ctx
. Please see the mentioned function for more information regarding the contextual constraints.Parameters:  g (Graph) – The Graph object
 decision_fct (function) – The decision function enforcing contextual constraints. The signature of the function is
(vertex index, vertex index, vertex index) > Bool
 distances (PropertyMapVecULong) – matrix in which distances will be written
Returns: matrix of distances named apsp_constraint
Return type: Example: >>> distmap = PropertyMapVecULong(g, 'distances_ctx') >>> AlgPaths.dijkstra_apsp_ctx(g,lambda _start,_current,_next: (True), distmap)
Example: >>> distmap = AlgPaths.dijkstra_apsp_ctx(g,lambda _start,_current,_next: (True))

dijkstra_ctx
((Graph)g, (int)s, (object)decision_fct, (PropertyMapULong)distances) → None :

dijkstra_ctx
((Graph)g, (int)s, (object)decision_fct) → PropertyMapULong :¶ Obtain shortest paths with dynamic contextual constraints.
Singlesource shortest paths using Dijkstra’s algorithm taking into account contextual constraints. Enforcement of constraints is the task of the given userdefined function.
The function enforcing contextual constraints is evaluated at each node during shortest path discovery. The function needs to evaluate to
true
orfalse
allowing an edge to be visited or not. As parameters, the function needs to accept the starting node of path traversal, the current node, and the descending node in question. If the function returns False, the descending node is not being visited. Passing the start vertex is unnecessary here. However, the signature is the same as for the other functions for usability reasons.The three nodes are passed as indices allowing for access of (external) attribute and other associated information.
Note that the decision function is evaluated more than once during path traversal. That means, there should not happen any resourceintense computation inside this function. Also, it does not allow to keep track of the status of calculation, e.g. by calculating the visited edges or something similar.
If the decision function simply returns True all the time, the set of shortest paths is the unaltered set of shortest paths expected by the classical Dijkstraimplementation.
Parameters: distances (PropertyMapULong) – map in which distances will be written
Returns: map containing distances named dijkstra_constraint
Return type: Example: >>> start = 3 >>> distmap = PropertyMapULong(g, 'distances_ctx') >>> AlgPaths.dijkstra_ctx(g, start, lambda _start,_current,_next: (True), distmap)
Example: >>> start = 3 >>> distmap = AlgPaths.dijkstra_ctx(g, start, lambda _start,_current,_next: (True))

find_path
((Graph)g, (int)start, (int)target) → list :¶ Conventional shortest path discovery using Dijkstra’s algorithm.
Parameters:  g (Graph) – The Graph object
 start (int) – Source vertex
 target (int) – Target vertex
Returns: A list of vertex indices describing the shortest path from start to target.
Return type: list

find_path_ctx
((Graph)g, (int)start, (int)target, (object)decision_fct) → list :¶ Obtain a shortest paths from a start vertex to a target vertex using Dijkstra’s algorithm taking into account contextual constraints.
This is basically a wrapper around
dijkstra_ctx
. Please see the mentioned function for more information regarding the contextual constraints.Parameters:  g (Graph) – The Graph object
 decision_fct (function) – The decision function enforcing contextual constraints. The signature of the function is
(vertex index, vertex index, vertex index) > Bool
 start (int) – Start vertex
 target (int) – Target vertex
Returns: A list of vertex indices describing the shortest path from start to target.
Return type: list
Example: >>> start = 3 >>> target = 10 >>> path = AlgPaths.find_path_ctx(g,start,target,lambda _start,_current,_next: (True))

AlgCentralities: Centrality measures¶
AlgCentralities 

betweenness 
Obtain betweenness centrality for a graph using Brandes’ efficient algorithm. 
betweenness_ctx 
Betweenness centrality with dynamic contextual constraints. 
closeness 
Obtain closeness centrality for a graph. 
closeness_ctx 
Closeness centrality with dynamic contextual constraints. 

class
nctx.undirected.
AlgCentralities
¶ 
betweenness
((Graph)g, (PropertyMapDouble)outmap) → None :

betweenness
((Graph)g) → PropertyMapDouble :¶ Obtain betweenness centrality for a graph using Brandes’ efficient algorithm.
Parameters:  g (Graph) – Graph object
 outmap (PropertyMapDouble) – map in which centrality values will be written
Returns: list of centrality values named betweenness
Return type: Example: >>> outmap = PropertyMapDouble(g, 'betw') >>> AlgCentralities.betweenness(g, outmap)
Example: >>> outmap = AlgCentralities.betweenness(g)

betweenness_ctx
((Graph)g, (object)betw_decision_fct, (PropertyMapDouble)outmap) → None :

betweenness_ctx
((Graph)g, (object)betw_decision_fct) → PropertyMapDouble :¶ Betweenness centrality with dynamic contextual constraints.
Using this function allows obtaining betweenness centrality under dynamic contextual constraints. Enforcement of constraints is the task of the given userdefined function.
The function enforcing contextual constraints is evaluated at each node during shortest path traversal. The function needs to evaluate to True or False allowing an edge to be visited or not. As parameters, the current state of the betweenness calculation is passed to the function, i.e. the starting node for which a centrality value is being calculated, the current node, and the descending node in question. If the function returns False, the descending node is not being visited.
The three nodes are passed as indices allowing for access of (external) attribute and other associated information.
Note that the decision function is evaluated more than once during path traversal. That means, there should not happen any resourceintense computation inside this function. Also, it does not allow to keep track of the status of calculation, e.g. by calculating the visited edges or something similar.
If the decision function simply returns True all the time, this function results in the unaltered betweenness centrality values.
Obtaining betweenness centrality is based on Brandes’ efficient algorithm. At the current stage, the implementation allows for singlecore execution only.
Parameters: outmap (PropertyMapDouble) – map in which centrality values will be written
Returns: list of centrality values named betweenness_constraint
Return type: Example: >>> outmap = PropertyMapDouble(g, 'betw_ctx') >>> AlgCentralities.betweenness_ctx(g,lambda _start,_current,_next: (True),outmap)
Example: >>> outmap = AlgCentralities.betweenness_ctx(g,lambda _start,_current,_next: (True))

closeness
((Graph)g) → PropertyMapDouble :

closeness
((Graph)g, (PropertyMapDouble)outmap) → None :¶ Obtain closeness centrality for a graph.
Parameters:  g (Graph) – Graph object
 outmap (PropertyMapDouble) – map in which centrality values will be written
Returns: list of centrality values named betweenness
Return type: Example: >>> outmap = AlgCentralities.closeness(g)
Example: >>> outmap = PropertyMapDouble(g, 'clsn') >>> AlgCentralities.closeness(g, outmap)

closeness_ctx
((Graph)g, (object)clsn_decision_fct, (PropertyMapDouble)outmap) → None :

closeness_ctx
((Graph)g, (object)clsn_decision_fct) → PropertyMapDouble :¶ Closeness centrality with dynamic contextual constraints.
Using this function allows obtaining closeness centrality under dynamic contextual constraints. Enforcement of constraints is the task of the given userdefined function.
The function enforcing contextual constraints is evaluated at each node during shortest path traversal. The function needs to evaluate to True or False allowing an edge to be visited or not. As parameters, the current state of the centrality calculation is passed to the function, i.e. the starting node for which a centrality value is being calculated, the current node, and the descending node in question. If the function returns False, the descending node is not being visited.
The three nodes are passed as indices allowing for access of (external) attribute and other associated information.
Note that the decision function is evaluated more than once during path traversal. That means, there should not happen any resourceintense computation inside this function. Also, it does not allow to keep track of the status of calculation, e.g. by calculating the visited edges or something similar.
If the decision function simply returns True all the time, this function results in the unaltered betweenness centrality values.
Parameters: outmap (PropertyMapDouble) – map in which centrality values will be written
Returns: list of centrality values named closeness_constraint
Return type: Example: >>> outmap = PropertyMapDouble(g, 'clsn_ctx') >>> AlgCentralities.closeness_ctx(g,lambda _start,_current,_next: (True),outmap)
Example: >>> outmap = AlgCentralities.closeness_ctx(g,lambda _start,_current,_next: (True))

Graph Property Maps¶
Property maps allow to store attribute information together with the vertices. These are mainly used for importing and exporting graphs: read_graphml
and write_graphml
Todo
Support edge property maps
Property Maps containing atom elements¶
PropertyMapDouble 
PropertyMapDouble serves as a list of atom items of type float. 
PropertyMapInt 
PropertyMapInt serves as a list of atom items of type int. 
PropertyMapStr 
PropertyMapStr serves as a list of atom items of type str. 
PropertyMapULong 
PropertyMapULong serves as a list of atom items of type unsigned long  a number > 0. 

class
nctx.undirected.
PropertyMapDouble
¶ PropertyMapDouble serves as a list of atom items of type float. The list contains values of a single data type only as this is a link to the C++ code base (and C++ is a strongly typed language). This PropertyMap behaves like a python list, i.e. it allows iteration and supports builtin functions append and extend.
The contained data type can be recognized from the class name of the PropertyMap.
The PropertyMap can be converted to a Python list or a numpy array easily.
Parameters:  g (Graph) – The Graph object
 name (str) – Name of the PropertyMap
 init_val (float) – initial value
Example: >>> my_map = PropertyMapDouble(g, 'context1') >>> my_map = PropertyMapDouble(g, 'context1', .0)
Example: >>> import numpy as np >>> np_arr = np.array(list(my_map))

__contains__
((float)arg2) → bool :¶ Allows to check for the existence of elements in the PropertyMap.
Example: >>> .0 in my_map True >>> .1 in my_map False

__getitem__
((int)arg2) → float :¶ This allows to access items using square brackets. See
get_elem
for a detailed description of parameters.Example: >>> _ = my_map[2]

__init__
((object)arg1, (Graph)arg2, (str)arg3) → None

__init__
((object)arg1, (Graph)arg2, (str)arg3, (float)arg4) → None¶ Not commented yet

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int :¶ Allows to retrieve the length of the PropertyMap.
Example: >>> len(my_map) 10

__next__
() → float :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

__setitem__
((int)arg2, (float)arg3) → None :¶ This allows to modify items using square brackets. See
set_elem
for a detailed description of parameters.Example: >>> my_map[2] = .1

get_elem
((int)i) → float :¶ Retrieve the ith element of this list.n
Parameters: i (int) – Index of element. Returns: ith element. Return type: float

get_name
() → str :¶ Retrieve name of the property map.
The name is mainly used when exporting the Graph to a file, e.g. using
write_graphml
.Returns: The name of the list Return type: string

next
() → float :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

set_elem
((int)i, (float)newval) → None :¶ Set the ith element of this list to be newval. Note that the type of newval needs to be float or a type that can be implicitly converted to float.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
 newval (float) – The new element.
Example: Note the type conversion (float to int) from the input list to the output of
get_elem
.>>> complex_map = PropertyMapDouble(g, 'context') >>> complex_map.set_elem(0, 3) >>> complex_map.get_elem(0) 3.0

class
nctx.undirected.
PropertyMapInt
¶ PropertyMapInt serves as a list of atom items of type int. The list contains values of a single data type only as this is a link to the C++ code base (and C++ is a strongly typed language). This PropertyMap behaves like a python list, i.e. it allows iteration and supports builtin functions append and extend.
The contained data type can be recognized from the class name of the PropertyMap.
The PropertyMap can be converted to a Python list or a numpy array easily.
Parameters:  g (Graph) – The Graph object
 name (str) – Name of the PropertyMap
 init_val (int) – initial value
Example: >>> my_map = PropertyMapInt(g, 'context1') >>> my_map = PropertyMapInt(g, 'context1', 0)
Example: >>> import numpy as np >>> np_arr = np.array(list(my_map))

__contains__
((int)arg2) → bool :¶ Allows to check for the existence of elements in the PropertyMap.
Example: >>> 0 in my_map True >>> 1 in my_map False

__getitem__
((int)arg2) → int :¶ This allows to access items using square brackets. See
get_elem
for a detailed description of parameters.Example: >>> _ = my_map[2]

__init__
((object)arg1, (Graph)arg2, (str)arg3) → None

__init__
((object)arg1, (Graph)arg2, (str)arg3, (int)arg4) → None¶ Not commented yet

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int :¶ Allows to retrieve the length of the PropertyMap.
Example: >>> len(my_map) 10

__next__
() → int :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

__setitem__
((int)arg2, (int)arg3) → None :¶ This allows to modify items using square brackets. See
set_elem
for a detailed description of parameters.Example: >>> my_map[2] = 1

get_elem
((int)i) → int :¶ Retrieve the ith element of this list.n
Parameters: i (int) – Index of element. Returns: ith element. Return type: int

get_name
() → str :¶ Retrieve name of the property map.
The name is mainly used when exporting the Graph to a file, e.g. using
write_graphml
.Returns: The name of the list Return type: string

next
() → int :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

set_elem
((int)i, (int)newval) → None :¶ Set the ith element of this list to be newval. Note that the type of newval needs to be int or a type that can be implicitly converted to int. Please see
PropertyMapDouble.set_elem
for an example of type conversion.Parameters:  i (int) – Index of List
 j (int) – Index of element.
 newval (int) – The new element.

class
nctx.undirected.
PropertyMapStr
¶ PropertyMapStr serves as a list of atom items of type str. The list contains values of a single data type only as this is a link to the C++ code base (and C++ is a strongly typed language). This PropertyMap behaves like a python list, i.e. it allows iteration and supports builtin functions append and extend.
The contained data type can be recognized from the class name of the PropertyMap.
The PropertyMap can be converted to a Python list or a numpy array easily.
Parameters:  g (Graph) – The Graph object
 name (str) – Name of the PropertyMap
 init_val (str) – initial value
Example: >>> my_map = PropertyMapStr(g, 'context1') >>> my_map = PropertyMapStr(g, 'context1', '')
Example: >>> import numpy as np >>> np_arr = np.array(list(my_map))

__contains__
((str)arg2) → bool :¶ Allows to check for the existence of elements in the PropertyMap.
Example: >>> '' in my_map True >>> '1' in my_map False

__getitem__
((int)arg2) → str :¶ This allows to access items using square brackets. See
get_elem
for a detailed description of parameters.Example: >>> _ = my_map[2]

__init__
((object)arg1, (Graph)arg2, (str)arg3) → None

__init__
((object)arg1, (Graph)arg2, (str)arg3, (str)arg4) → None¶ Not commented yet

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int :¶ Allows to retrieve the length of the PropertyMap.
Example: >>> len(my_map) 10

__next__
() → str :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

__setitem__
((int)arg2, (str)arg3) → None :¶ This allows to modify items using square brackets. See
set_elem
for a detailed description of parameters.Example: >>> my_map[2] = '1'

get_elem
((int)i) → str :¶ Retrieve the ith element of this list.n
Parameters: i (int) – Index of element. Returns: ith element. Return type: str

get_name
() → str :¶ Retrieve name of the property map.
The name is mainly used when exporting the Graph to a file, e.g. using
write_graphml
.Returns: The name of the list Return type: string

next
() → str :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

set_elem
((int)i, (str)newval) → None :¶ Set the ith element of this list to be newval. Note that the type of newval needs to be str or a type that can be implicitly converted to str. Please see
PropertyMapDouble.set_elem
for an example of type conversion.Parameters:  i (int) – Index of List
 j (int) – Index of element.
 newval (str) – The new element.

class
nctx.undirected.
PropertyMapULong
¶ PropertyMapULong serves as a list of atom items of type unsigned long  a number > 0. The list contains values of a single data type only as this is a link to the C++ code base (and C++ is a strongly typed language). This PropertyMap behaves like a python list, i.e. it allows iteration and supports builtin functions append and extend.
The contained data type can be recognized from the class name of the PropertyMap.
The PropertyMap can be converted to a Python list or a numpy array easily.
Parameters:  g (Graph) – The Graph object
 name (str) – Name of the PropertyMap
 init_val (int) – initial value
Example: >>> my_map = PropertyMapULong(g, 'context1') >>> my_map = PropertyMapULong(g, 'context1', 0)
Example: >>> import numpy as np >>> np_arr = np.array(list(my_map))

__contains__
((int)arg2) → bool :¶ Allows to check for the existence of elements in the PropertyMap.
Example: >>> 0 in my_map True >>> 1 in my_map False

__getitem__
((int)arg2) → int :¶ This allows to access items using square brackets. See
get_elem
for a detailed description of parameters.Example: >>> _ = my_map[2]

__init__
((object)arg1, (Graph)arg2, (str)arg3) → None

__init__
((object)arg1, (Graph)arg2, (str)arg3, (int)arg4) → None¶ Not commented yet

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int :¶ Allows to retrieve the length of the PropertyMap.
Example: >>> len(my_map) 10

__next__
() → int :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

__setitem__
((int)arg2, (int)arg3) → None :¶ This allows to modify items using square brackets. See
set_elem
for a detailed description of parameters.Example: >>> my_map[2] = 1

get_elem
((int)i) → int :¶ Retrieve the ith element of this list.n
Parameters: i (int) – Index of element. Returns: ith element. Return type: int

get_name
() → str :¶ Retrieve name of the property map.
The name is mainly used when exporting the Graph to a file, e.g. using
write_graphml
.Returns: The name of the list Return type: string

next
() → int :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

set_elem
((int)i, (int)newval) → None :¶ Set the ith element of this list to be newval. Note that the type of newval needs to be int or a type that can be implicitly converted to int. Please see
PropertyMapDouble.set_elem
for an example of type conversion.Parameters:  i (int) – Index of List
 j (int) – Index of element.
 newval (int) – The new element.
Property Maps containing list elements¶
PropertyMapVecDouble 
PropertyMapVecDouble serves as a container of lists, i. 
PropertyMapVecInt 
PropertyMapVecInt serves as a container of lists, i. 
PropertyMapVecStr 
PropertyMapVecStr serves as a container of lists, i. 
PropertyMapVecULong 
PropertyMapVecULong serves as a container of lists, i. 

class
nctx.undirected.
PropertyMapVecDouble
¶ PropertyMapVecDouble serves as a container of lists, i.e. it is a list of lists of float. The nested lists all contain values of a single data type as this is a link to the C++ code base (and C++ is a strongly typed language). This PropertyMap behaves like a python list returning lists as items when iterating over it.
The allowed data type can be recognized from the class name of the PropertyMap.
The PropertyMap can be converted to a Python list or a numpy array easily.
Parameters:  g (Graph) – The Graph object
 name (str) – Name of the PropertyMap
 init_val (float) – initial value for each inner list
 init_size (int) – size of each inner list.
Example: >>> my_map = PropertyMapVecDouble(g, 'context1') >>> my_map = PropertyMapVecDouble(g, 'context1', 0.0, 10)
Example: >>> import numpy as np >>> np_arr = np.array([np.array(xi) for xi in my_map])

__contains__
((object)arg2) → bool :¶ Allows to check for the existence of elements in the PropertyMap.
Example: >>> [.1,.2,.3] in my_map False

__getitem__
((int)arg2) → object :¶ This allows to access items using square brackets. See
get_list
for a detailed description of parameters.Example: >>> _ = my_map[2] >>> _ = my_map[2][0]

__init__
((object)arg1, (Graph)arg2, (str)arg3) → None

__init__
((object)arg1, (Graph)arg2, (str)arg3, (float)arg4, (int)arg5) → None¶ Not commented yet

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int :¶ Allows to retrieve the length of the PropertyMap.
Example: >>> len(my_map) 10

__next__
() → object :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

__setitem__
((int)arg2, (object)arg3) → None :¶ This allows to modify items using square brackets. See
set_list
for a detailed description of parameters.Example: >>> my_map[2] = [.1,.2,.3,.4,.5] >>> my_map[2][0] = 42.0

get_elem
((int)i, (int)j) → float :¶ Retrieve the jth element of ith list.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
Returns: jth element in ith list.
Return type: float

get_list
((int)i) → object :¶ Retrieve the ith list.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
Returns: The list saved at position i.
Return type:

get_name
() → str :¶ Retrieve name of the property map. The name is mainly used when exporting the Graph to a file, e.g. using
write_graphml
.Returns: The name of the list Return type: string

next
() → object :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

set_elem
((int)i, (int)j, (float)newval) → None :¶ Set the jth element of ith list. Note that the type of the new element needs to be float or a type that can be implicitly converted to float.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
 newval (float) – The new element.
Example: Note the type conversion (float to int) from the input to the output of
get_elem
.>>> complex_map = PropertyMapVecDouble(g, 'context') >>> complex_map.set_elem(0, 1, 3) >>> complex_map.get_elem(0,1) 3.0

set_list
((int)i, (object)newlist) → None :¶ Set the ith list to be newlist.
Parameters:  i (int) – Index of List
 newlist (list) – List to be saved at position i. Note that all items of this list will be converted to float internally.
Example: Note the type conversion (float to int) from the input list to the output of
get_elem
.>>> complex_map = PropertyMapVecDouble(g, 'context') >>> complex_map.set_list(0, [1,2,3,4,5]) >>> complex_map.get_elem(0,2) 3.0

class
nctx.undirected.
PropertyMapVecInt
¶ PropertyMapVecInt serves as a container of lists, i.e. it is a list of lists of int. The nested lists all contain values of a single data type as this is a link to the C++ code base (and C++ is a strongly typed language). This PropertyMap behaves like a python list returning lists as items when iterating over it.
The allowed data type can be recognized from the class name of the PropertyMap.
The PropertyMap can be converted to a Python list or a numpy array easily.
Parameters:  g (Graph) – The Graph object
 name (str) – Name of the PropertyMap
 init_val (int) – initial value for each inner list
 init_size (int) – size of each inner list.
Example: >>> my_map = PropertyMapVecInt(g, 'context1') >>> my_map = PropertyMapVecInt(g, 'context1', 0, 10)
Example: >>> import numpy as np >>> np_arr = np.array([np.array(xi) for xi in my_map])

__contains__
((object)arg2) → bool :¶ Allows to check for the existence of elements in the PropertyMap.
Example: >>> [1,2,3] in my_map False

__getitem__
((int)arg2) → object :¶ This allows to access items using square brackets. See
get_list
for a detailed description of parameters.Example: >>> _ = my_map[2] >>> _ = my_map[2][0]

__init__
((object)arg1, (Graph)arg2, (str)arg3) → None

__init__
((object)arg1, (Graph)arg2, (str)arg3, (int)arg4, (int)arg5) → None¶ Not commented yet

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int :¶ Allows to retrieve the length of the PropertyMap.
Example: >>> len(my_map) 10

__next__
() → object :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

__setitem__
((int)arg2, (object)arg3) → None :¶ This allows to modify items using square brackets. See
set_list
for a detailed description of parameters.Example: >>> my_map[2] = [1,2,3,4,5] >>> my_map[2][0] = 42

get_elem
((int)i, (int)j) → int :¶ Retrieve the jth element of ith list.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
Returns: jth element in ith list.
Return type: int

get_list
((int)i) → object :¶ Retrieve the ith list.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
Returns: The list saved at position i.
Return type:

get_name
() → str :¶ Retrieve name of the property map. The name is mainly used when exporting the Graph to a file, e.g. using
write_graphml
.Returns: The name of the list Return type: string

next
() → object :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

set_elem
((int)i, (int)j, (int)newval) → None :¶ Set the jth element of ith list. Note that the type of the new element needs to be int or a type that can be implicitly converted to int. Please see
PropertyMapVecDouble.set_elem
for an example of type conversion.Parameters:  i (int) – Index of List
 j (int) – Index of element.
 newval (int) – The new element.

set_list
((int)i, (object)newlist) → None :¶ Set the ith list to be newlist. Please see
PropertyMapVecDouble.set_elem
for an example of type conversion.Parameters:  i (int) – Index of List
 newlist (list) – List to be saved at position i. Note that all items of this list will be converted to int internally.

class
nctx.undirected.
PropertyMapVecStr
¶ PropertyMapVecStr serves as a container of lists, i.e. it is a list of lists of str. The nested lists all contain values of a single data type as this is a link to the C++ code base (and C++ is a strongly typed language). This PropertyMap behaves like a python list returning lists as items when iterating over it.
The allowed data type can be recognized from the class name of the PropertyMap.
The PropertyMap can be converted to a Python list or a numpy array easily.
Parameters:  g (Graph) – The Graph object
 name (str) – Name of the PropertyMap
 init_val (str) – initial value for each inner list
 init_size (int) – size of each inner list.
Example: >>> my_map = PropertyMapVecStr(g, 'context1') >>> my_map = PropertyMapVecStr(g, 'context1', '', 10)
Example: >>> import numpy as np >>> np_arr = np.array([np.array(xi) for xi in my_map])

__contains__
((object)arg2) → bool :¶ Allows to check for the existence of elements in the PropertyMap.
Example: >>> ['1','2','3'] in my_map False

__getitem__
((int)arg2) → object :¶ This allows to access items using square brackets. See
get_list
for a detailed description of parameters.Example: >>> _ = my_map[2] >>> _ = my_map[2][0]

__init__
((object)arg1, (Graph)arg2, (str)arg3) → None

__init__
((object)arg1, (Graph)arg2, (str)arg3, (str)arg4, (int)arg5) → None¶ Not commented yet

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int :¶ Allows to retrieve the length of the PropertyMap.
Example: >>> len(my_map) 10

__next__
() → object :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

__setitem__
((int)arg2, (object)arg3) → None :¶ This allows to modify items using square brackets. See
set_list
for a detailed description of parameters.Example: >>> my_map[2] = ['1','2','3','4','5'] >>> my_map[2][0] = '42'

get_elem
((int)i, (int)j) → str :¶ Retrieve the jth element of ith list.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
Returns: jth element in ith list.
Return type: str

get_list
((int)i) → object :¶ Retrieve the ith list.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
Returns: The list saved at position i.
Return type:

get_name
() → str :¶ Retrieve name of the property map. The name is mainly used when exporting the Graph to a file, e.g. using
write_graphml
.Returns: The name of the list Return type: string

next
() → object :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

set_elem
((int)i, (int)j, (str)newval) → None :¶ Set the jth element of ith list. Note that the type of the new element needs to be str or a type that can be implicitly converted to str. Please see
PropertyMapVecDouble.set_elem
for an example of type conversion.Parameters:  i (int) – Index of List
 j (int) – Index of element.
 newval (str) – The new element.

set_list
((int)i, (object)newlist) → None :¶ Set the ith list to be newlist. Please see
PropertyMapVecDouble.set_elem
for an example of type conversion.Parameters:  i (int) – Index of List
 newlist (list) – List to be saved at position i. Note that all items of this list will be converted to str internally.

class
nctx.undirected.
PropertyMapVecULong
¶ PropertyMapVecULong serves as a container of lists, i.e. it is a list of lists of unsigned long  numbers > 0. The nested lists all contain values of a single data type as this is a link to the C++ code base (and C++ is a strongly typed language). This PropertyMap behaves like a python list returning lists as items when iterating over it.
The allowed data type can be recognized from the class name of the PropertyMap.
The PropertyMap can be converted to a Python list or a numpy array easily.
Parameters:  g (Graph) – The Graph object
 name (str) – Name of the PropertyMap
 init_val (int) – initial value for each inner list
 init_size (int) – size of each inner list.
Example: >>> my_map = PropertyMapVecULong(g, 'context1') >>> my_map = PropertyMapVecULong(g, 'context1', 0, 10)
Example: >>> import numpy as np >>> np_arr = np.array([np.array(xi) for xi in my_map])

__contains__
((object)arg2) → bool :¶ Allows to check for the existence of elements in the PropertyMap.
Example: >>> [1,2,3] in my_map False

__getitem__
((int)arg2) → object :¶ This allows to access items using square brackets. See
get_list
for a detailed description of parameters.Example: >>> _ = my_map[2] >>> _ = my_map[2][0]

__init__
((object)arg1, (Graph)arg2, (str)arg3) → None

__init__
((object)arg1, (Graph)arg2, (str)arg3, (int)arg4, (int)arg5) → None¶ Not commented yet

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int :¶ Allows to retrieve the length of the PropertyMap.
Example: >>> len(my_map) 10

__next__
() → object :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

__setitem__
((int)arg2, (object)arg3) → None :¶ This allows to modify items using square brackets. See
set_list
for a detailed description of parameters.Example: >>> my_map[2] = [1,2,3,4,5] >>> my_map[2][0] = 42

get_elem
((int)i, (int)j) → int :¶ Retrieve the jth element of ith list.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
Returns: jth element in ith list.
Return type: int

get_list
((int)i) → object :¶ Retrieve the ith list.
Parameters:  i (int) – Index of List
 j (int) – Index of element.
Returns: The list saved at position i.
Return type:

get_name
() → str :¶ Retrieve name of the property map. The name is mainly used when exporting the Graph to a file, e.g. using
write_graphml
.Returns: The name of the list Return type: string

next
() → object :¶ Allows to iterater over the PropertyMap.
Example: >>> for ctx in my_map: ... pass

set_elem
((int)i, (int)j, (int)newval) → None :¶ Set the jth element of ith list. Note that the type of the new element needs to be int or a type that can be implicitly converted to int. Please see
PropertyMapVecDouble.set_elem
for an example of type conversion.Parameters:  i (int) – Index of List
 j (int) – Index of element.
 newval (int) – The new element.

set_list
((int)i, (object)newlist) → None :¶ Set the ith list to be newlist. Please see
PropertyMapVecDouble.set_elem
for an example of type conversion.Parameters:  i (int) – Index of List
 newlist (list) – List to be saved at position i. Note that all items of this list will be converted to int internally.
Graph I/O: Importing and Exporting to files¶
read_graphml 
Reads graph specification from a GraphML file and fills a graph object accordingly. 
write_graphml 
Reads graph specification from a GraphML file and fills a graph object accordingly. 

nctx.undirected.
read_graphml
((Graph)g, (str)filename, (list)pmaps) → None :¶ Reads graph specification from a GraphML file and fills a graph object accordingly. You can pass it a list of PropertyMaps to be filled. The names of the PropertyMaps must match the names in the graphml file. Graph properties that are present in the GraphML file but that do not have a matching PropertyMap in pmaps are ignored. See https://en.wikipedia.org/wiki/GraphML for more infos about the file format.
Parameters:  g (Graph) – The Graph object
 filename (str) – Path to a GraphML file
 pmaps (list) – A list of PropertyMaps that will be filled with the graph properties found in the file.
Example: >>> import nctx.undirected as nctx >>> g = nctx.Graph() >>> name_map = nctx.PropertyMapStr(g, 'name') >>> context_map = PropertyMapVecDouble(g, 'context') >>> nctx.read_graphml(g, 'bcde.ctx.undir.graphml', [name_map, context_map])

nctx.undirected.
write_graphml
((Graph)g, (str)filename, (list)pmaps) → None :¶ Reads graph specification from a GraphML file and fills a graph object accordingly. You can pass it a list of PropertyMaps to be filled. The names of the PropertyMaps must match the names in the graphml file. Graph properties that are present in the GraphML file but that do not have a matching PropertyMap in pmaps are ignored. See https://en.wikipedia.org/wiki/GraphML for more infos about the file format.
Parameters:  g (Graph) – The Graph object
 filename (str) – Path to a GraphML file
 pmaps (list) – A list of PropertyMaps that will be filled with the graph properties found in the file.
Example: >>> import nctx.undirected as nctx >>> g = nctx.Graph() >>> name_map = nctx.PropertyMapStr(g, 'name') >>> context_map = PropertyMapVecDouble(g, 'context') >>> nctx.read_graphml(g, 'bcde.ctx.undir.graphml', [name_map, context_map]) >>> name_map[3] = 'X' >>> context_map[0][2] = .1337 >>> nctx.write_graphml(g, 'bcde.ctx.undir.modified.graphml', [name_map, context_map])
Helper Classes¶

class
nctx.undirected.
Edge
¶ This is an internal description of an edge. It can’t be instantiated from Python. Just don’t bother with it.

class
nctx.undirected.
a_iter_ids
¶ This is an internal description of the childiterator.

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int¶ Not commented yet

__next__
() → int¶ Not commented yet

next
() → int :¶ See
Graph.children
how to use this to iterate over the children of a node.


class
nctx.undirected.
a_iter_ids_rev
¶ This is an internal description of the parentsiterator.

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int¶ Not commented yet

__next__
() → int¶ Not commented yet

next
() → int :¶ See
Graph.parents
how to use this to iterate over the parents of a node.


class
nctx.undirected.
e_iter_ids
¶ This is an internal description of the edgesiterator.

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int¶ Not commented yet

__next__
() → Edge¶ Not commented yet

next
() → Edge :¶ See
Graph.edges
how to use this to iterate over the edges of a graph.


class
nctx.undirected.
e_iter_ids_in
¶ This is an internal description of the inedgesiterator.

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int¶ Not commented yet

__next__
() → Edge¶ Not commented yet

next
() → Edge :¶ See
Graph.edges
how to use this to iterate over the edges of a graph.


class
nctx.undirected.
e_iter_ids_out
¶ This is an internal description of the outedgesiterator.

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int¶ Not commented yet

__next__
() → Edge¶ Not commented yet

next
() → Edge :¶ See
Graph.edges
how to use this to iterate over the edges of a graph.


class
nctx.undirected.
v_iter_ids
¶ This is an internal description of the vertexiterator.

__iter__
((object)arg1) → object¶ Not commented yet

__len__
() → int¶ Not commented yet

__next__
() → int¶ Not commented yet

next
() → int :¶ See
Graph.vertices
how to use this to iterate over the vertices of a graph.
