Utilities: nctx.core¶

The examples for the functions all build on the same graph and `context_map`:

```>>> from nctx.core import *
>>> import nctx.directed as nctx_directed
>>> g = nctx_directed.Graph()
>>> context_map = nctx_directed.PropertyMapVecDouble(g, "context")
>>> nctx_directed.read_graphml(g, "source/bcde.ctx.dir.graphml", [context_map])
```

Context Utilities: Distance functions¶

 `angular_distance` Obtain Angular Distance. `cosine_similarity` Obtain Cosine Similarity. `euclidean_distance` Obtain Euclidean Distance. `js_divergence` Obtain Jenson Shannon Divergence. `kl_divergence` Obtain Kullback Leibler Divergence.
`nctx.core.``angular_distance`((object)list1, (object)list2)float :

Obtain Angular Distance.

A straightforward implementation of Angular Distance.

The Angular Distance is a metric based on the KL Divergence. See https://en.wikipedia.org/wiki/Cosine_similarity#Angular_distance_and_similarity for more information. Both lists feeded into this function must have the same length and contain only numeric values.

Parameters: list1 (list) – First list list2 (list) – Second list Angular Distance between the two lists double ```>>> list1 = context_map.get_list(0) >>> list2 = [.1,.2,.3,.4,.5] >>> angular_distance(list1, list2) 0.18440190063093045 ```
`nctx.core.``cosine_similarity`((object)list1, (object)list2)float :

Obtain Cosine Similarity.

A straightforward implementation of Cosine Similarity.

See https://en.wikipedia.org/wiki/Cosine_similarity for more information. Both lists feeded into this function must have the same length and contain only numeric values.

Parameters: list1 (list) – First list list2 (list) – Second list Cosine Similarity between the two lists double ```>>> list1 = context_map.get_list(0) >>> list2 = [.1,.2,.3,.4,.5] >>> cosine_similarity(list1, list2) 0.8368374907292926 ```
`nctx.core.``euclidean_distance`((object)list1, (object)list2)float :

Obtain Euclidean Distance.

A straightforward implementation of Euclidean Distance.

See https://en.wikipedia.org/wiki/Euclidean_distance for more information. Both lists feeded into this function must have the same length and contain only numeric values.

Parameters: list1 (list) – First list list2 (list) – Second list Euclidean Distance between the two lists double ```>>> list1 = context_map.get_list(0) >>> list2 = [.1,.2,.3,.4,.5] >>> euclidean_distance(list1, list2) 0.4063153090787592 ```
`nctx.core.``js_divergence`((object)list1, (object)list2)float :

Obtain Jenson Shannon Divergence.

A straightforward implementation of JS Divergence. Note that both lists must be probability distributions, i.e. they sum to one. This is not checked internally and will result in obscure results if not taken care of.

The JS Divergence is based on the KL Divergence. Its square root yields a metric. See https://en.wikipedia.org/wiki/Jensen%E2%80%93Shannon_divergence for more information. Both lists feeded into this function must have the same length and contain only numeric values.

Parameters: list1 (list) – First list list2 (list) – Second list JS Divergence between the two lists double ```>>> import numpy as np >>> list1 = np.abs(context_map[0]) >>> list2 = [.1,.2,.3,.4,.5] >>> list1 = list1/np.sum(list1) >>> list2 = list2/np.sum(list2) >>> js_divergence(list1, list2) 0.11794226754027952 ```
`nctx.core.``kl_divergence`((object)list1, (object)list2)float :

Obtain Kullback Leibler Divergence.

A straightforward implementation of KL Divergence. Note that both lists must be probability distributions, i.e. they sum to one. This is not checked internally and will result in obscure results if not taken care of.

The KL Divergence does not fulfil triangle inequality and, hence, is no metric. See https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence for more information. Both lists feeded into this function must have the same length and contain only numeric values.

Parameters: list1 (list) – First list list2 (list) – Second list KL Divergence between the two lists double ```>>> import numpy as np >>> list1 = np.abs(context_map[0]) >>> list2 = [.1,.2,.3,.4,.5] >>> list1 = list1/np.sum(list1) >>> list2 = list2/np.sum(list2) >>> kl_divergence(list1, list2) 0.38236213356053317 ```

Helper Classes¶

 `VecDouble` This serves as a container of a typed list to pass lists of float to Python. `VecInt` This serves as a container of a typed list to pass lists of int to Python. `VecStr` This serves as a container of a typed list to pass lists of str to Python. `VecULong` This serves as a container of a typed list to pass lists of unsigned long - numbers > 0 - to Python.
class `nctx.core.``VecDouble`

This serves as a container of a typed list to pass lists of float to Python. It is not meant to be instatiated from Python. If necessary, this container can be converted to a Python list or a numpy array easily.

Example: ```>>> context_v0 = context_map[0] >>> print(type(context_v0).__name__) VecDouble >>> context_v0 = list(context_v0) >>> print(type(context_v0).__name__) list >>> import numpy as np >>> context_v0 = np.asarray(context_v0) >>> print(type(context_v0).__name__) ndarray ```
`__contains__`((object)arg2)bool

Not commented yet

`__delitem__`((object)arg2)None

Not commented yet

`__getitem__`((object)arg1, (object)arg2)object

Not commented yet

`__iter__`((object)arg1)object

Not commented yet

`__len__`()int

Not commented yet

`__setitem__`((object)arg2, (object)arg3)None

Not commented yet

`_max`()float :

Retrieve the highest possible value of the underlying data type. Important: This number is not neccessarily contained in the list!

`_min`()float :

Retrieve the lowest possible value of the underlying data type. Important: This number is not neccessarily contained in the list!

`append`((object)arg2)None

Not commented yet

`clear`()None :

Empty the property map

`extend`((object)arg2)None

Not commented yet

class `nctx.core.``VecInt`

This serves as a container of a typed list to pass lists of int to Python. It is not meant to be instatiated from Python. If necessary, this container can be converted to a Python list or a numpy array easily.

Example: ```>>> context_v0 = context_map[0] >>> print(type(context_v0).__name__) VecDouble >>> context_v0 = list(context_v0) >>> print(type(context_v0).__name__) list >>> import numpy as np >>> context_v0 = np.asarray(context_v0) >>> print(type(context_v0).__name__) ndarray ```
`__contains__`((object)arg2)bool

Not commented yet

`__delitem__`((object)arg2)None

Not commented yet

`__getitem__`((object)arg1, (object)arg2)object

Not commented yet

`__iter__`((object)arg1)object

Not commented yet

`__len__`()int

Not commented yet

`__setitem__`((object)arg2, (object)arg3)None

Not commented yet

`_max`()int :

Retrieve the highest possible value of the underlying data type. Important: This number is not neccessarily contained in the list!

`_min`()int :

Retrieve the lowest possible value of the underlying data type. Important: This number is not neccessarily contained in the list!

`append`((object)arg2)None

Not commented yet

`clear`()None :

Empty the property map

`extend`((object)arg2)None

Not commented yet

class `nctx.core.``VecStr`

This serves as a container of a typed list to pass lists of str to Python. It is not meant to be instatiated from Python. If necessary, this container can be converted to a Python list or a numpy array easily.

Example: ```>>> context_v0 = context_map[0] >>> print(type(context_v0).__name__) VecDouble >>> context_v0 = list(context_v0) >>> print(type(context_v0).__name__) list >>> import numpy as np >>> context_v0 = np.asarray(context_v0) >>> print(type(context_v0).__name__) ndarray ```
`__contains__`((object)arg2)bool

Not commented yet

`__delitem__`((object)arg2)None

Not commented yet

`__getitem__`((object)arg1, (object)arg2)object

Not commented yet

`__iter__`((object)arg1)object

Not commented yet

`__len__`()int

Not commented yet

`__setitem__`((object)arg2, (object)arg3)None

Not commented yet

`append`((object)arg2)None

Not commented yet

`clear`()None :

Empty the property map

`extend`((object)arg2)None

Not commented yet

class `nctx.core.``VecULong`

This serves as a container of a typed list to pass lists of unsigned long - numbers > 0 - to Python. It is not meant to be instatiated from Python. If necessary, this container can be converted to a Python list or a numpy array easily.

Example: ```>>> context_v0 = context_map[0] >>> print(type(context_v0).__name__) VecDouble >>> context_v0 = list(context_v0) >>> print(type(context_v0).__name__) list >>> import numpy as np >>> context_v0 = np.asarray(context_v0) >>> print(type(context_v0).__name__) ndarray ```
`__contains__`((object)arg2)bool

Not commented yet

`__delitem__`((object)arg2)None

Not commented yet

`__getitem__`((object)arg1, (object)arg2)object

Not commented yet

`__iter__`((object)arg1)object

Not commented yet

`__len__`()int

Not commented yet

`__setitem__`((object)arg2, (object)arg3)None

Not commented yet

`_max`()int :

Retrieve the highest possible value of the underlying data type. Important: This number is not neccessarily contained in the list!

`_min`()int :

Retrieve the lowest possible value of the underlying data type. Important: This number is not neccessarily contained in the list!

`append`((object)arg2)None

Not commented yet

`clear`()None :

Empty the property map

`extend`((object)arg2)None

Not commented yet