Source code for pygenstability.io
"""I/O functions."""
+
import pickle
diff --git a/_modules/pygenstability/optimal_scales.html b/_modules/pygenstability/optimal_scales.html
index 2c4c149..853b0cb 100644
--- a/_modules/pygenstability/optimal_scales.html
+++ b/_modules/pygenstability/optimal_scales.html
@@ -158,6 +158,7 @@
Source code for pygenstability.optimal_scales
"""Detect optimal scales from a scale scan."""
+
import numpy as np
import pandas as pd
from numpy.lib.stride_tricks import as_strided
@@ -256,8 +258,8 @@ Source code for pygenstability.optimal_scales
result dictionary with two new keys: 'selected_partitions' and 'block_detection_curve'
References:
- .. [1] D. J. Schindler, J. Clarke, and M. Barahona, ‘Multiscale Mobility Patterns and
- the Restriction of Human Movement’, *arXiv:2201.06323*, 2023
+ .. [1] D. J. Schindler, J. Clarke, and M. Barahona, 'Multiscale Mobility Patterns and
+ the Restriction of Human Movement', *arXiv:2201.06323*, 2023
"""
# get NVI(t) and NVI(t,t')
nvi_t = np.asarray(results["NVI"])
diff --git a/_modules/pygenstability/plotting.html b/_modules/pygenstability/plotting.html
index 3641fcf..a8f6046 100644
--- a/_modules/pygenstability/plotting.html
+++ b/_modules/pygenstability/plotting.html
@@ -158,6 +158,7 @@
Constructors module
The pygenstability cli
Plotting module
+DataClustering module
Optimal scales module
I/O module
Example: Markov Stability with PyGenStability
@@ -196,12 +197,18 @@
Source code for pygenstability.plotting
"""Plotting functions."""
+
import logging
import os
import matplotlib
import matplotlib.pyplot as plt
-import networkx as nx
+
+try:
+ import networkx as nx
+except ImportError: # pragma: no cover
+ print('Please install networkx via pip install "pygenstability[networkx]" for full plotting.')
+
import numpy as np
from matplotlib import gridspec
from matplotlib import patches
diff --git a/_modules/pygenstability/pygenstability.html b/_modules/pygenstability/pygenstability.html
index 4c202fb..b6902bf 100644
--- a/_modules/pygenstability/pygenstability.html
+++ b/_modules/pygenstability/pygenstability.html
@@ -158,6 +158,7 @@
Constructors module
The pygenstability cli
Plotting module
+DataClustering module
Optimal scales module
I/O module
Example: Markov Stability with PyGenStability
@@ -208,6 +209,7 @@ Source code for pygenstability.pygenstability
Markov Stability setting, and can be parametrised via built-in constructors, or specified by
the user via the constructor module.
"""
+
import itertools
import logging
import multiprocessing
@@ -216,15 +218,27 @@ Source code for pygenstability.pygenstability
from functools import wraps
from time import time
-import igraph as ig
-import leidenalg
+try:
+ import igraph as ig
+ import leidenalg
+
+ _NO_LEIDEN = False
+except ImportError: # pragma: no cover
+ _NO_LEIDEN = True
+
import numpy as np
import scipy.sparse as sp
from sklearn.metrics import mutual_info_score
from sklearn.metrics.cluster import entropy
from tqdm import tqdm
-from pygenstability import generalized_louvain
+try:
+ from pygenstability import generalized_louvain
+
+ _NO_LOUVAIN = False
+except ImportError: # pragma: no cover
+ _NO_LOUVAIN = True
+
from pygenstability.constructors import load_constructor
from pygenstability.io import save_results
from pygenstability.optimal_scales import identify_optimal_scales
@@ -294,10 +308,29 @@ Source code for pygenstability.pygenstability
@_timing
def _get_constructor_data(constructor, scales, pool, tqdm_disable=False):
return list(
- tqdm(pool.imap(constructor.get_data, scales), total=len(scales), disable=tqdm_disable)
+ tqdm(
+ pool.imap(constructor.get_data, scales),
+ total=len(scales),
+ disable=tqdm_disable,
+ )
)
+def _check_method(method): # pragma: no cover
+ if _NO_LEIDEN and _NO_LOUVAIN:
+ raise Exception("Without Louvain or Leiden solver, we cannot run PyGenStability")
+
+ if method == "louvain" and _NO_LOUVAIN:
+ print("Louvain is not available, we fallback to leiden.")
+ return "leiden"
+
+ if method == "leiden" and _NO_LEIDEN:
+ print("Leiden is not available, we fallback to louvain.")
+ return "louvain"
+
+ return method
+
+
[docs]@_timing
def run(
graph=None,
@@ -364,10 +397,14 @@ Source code for pygenstability.pygenstability
- 'run_params': dict with parameters used to run the code
- 'scales': scales of the scan
- 'number_of_communities': number of communities at each scale
+ - 'stability': value of stability cost function at each scale
- 'community_id': community node labels at each scale
- - 'NVI': NVI at each scale
- - 'ttprime': ttprime matrix
+ - 'NVI': NVI(t) at each scale
+ - 'ttprime': NVI(t,tprime) matrix
+ - 'block_detection_curve': block detection curve (included if with_optimal_scales==True)
+ - 'selected_partitions': selected partitions (included if with_optimal_scales==True)
"""
+ method = _check_method(method)
run_params = _get_params(locals())
graph = _graph_checks(graph)
scales = _get_scales(
@@ -414,7 +451,7 @@ Source code for pygenstability.pygenstability
if with_postprocessing:
L.info("Apply postprocessing...")
- _apply_postprocessing(all_results, pool, constructor_data, tqdm_disable)
+ _apply_postprocessing(all_results, pool, constructor_data, tqdm_disable, method=method)
if with_ttprime or with_optimal_scales:
L.info("Compute ttprimes...")
@@ -525,7 +562,10 @@ Source code for pygenstability.pygenstability
for null in null_model[::2]:
partitions.append(
leidenalg.CPMVertexPartition(
- G, weights=quality_values, node_sizes=null.tolist(), correct_self_loops=True
+ G,
+ weights=quality_values,
+ node_sizes=null.tolist(),
+ correct_self_loops=True,
)
)
optimiser = leidenalg.Optimiser()
@@ -539,18 +579,34 @@ Source code for pygenstability.pygenstability
return stability + global_shift, community_id
-def _evaluate_quality(partition_id, qualities_index, null_model, global_shift):
+def _evaluate_quality(partition_id, qualities_index, null_model, global_shift, method="louvain"):
"""Worker for generalized Markov Stability optimisation runs."""
- quality = generalized_louvain.evaluate_quality(
- qualities_index[0][0],
- qualities_index[0][1],
- qualities_index[1],
- len(qualities_index[1]),
- null_model,
- np.shape(null_model)[0],
- 1.0,
- partition_id,
- )
+ if method == "louvain":
+ quality = generalized_louvain.evaluate_quality(
+ qualities_index[0][0],
+ qualities_index[0][1],
+ qualities_index[1],
+ len(qualities_index[1]),
+ null_model,
+ np.shape(null_model)[0],
+ 1.0,
+ partition_id,
+ )
+
+ if method == "leiden":
+ quality = np.mean(
+ [
+ leidenalg.CPMVertexPartition(
+ ig.Graph(edges=zip(*qualities_index[0]), directed=True),
+ initial_membership=partition_id,
+ weights=qualities_index[1],
+ node_sizes=null.tolist(),
+ correct_self_loops=True,
+ ).quality()
+ for null in null_model[::2]
+ ]
+ )
+
return quality + global_shift
@@ -587,7 +643,7 @@ Source code for pygenstability.pygenstability
@_timing
-def _apply_postprocessing(all_results, pool, constructors, tqdm_disable=False):
+def _apply_postprocessing(all_results, pool, constructors, tqdm_disable=False, method="louvain"):
"""Apply postprocessing."""
all_results_raw = all_results.copy()
@@ -599,6 +655,7 @@ Source code for pygenstability.pygenstability
qualities_index=_to_indices(constructor["quality"]),
null_model=constructor["null_model"],
global_shift=constructor.get("shift", 0.0),
+ method=method,
)
best_quality_id = np.argmax(
pool.map(
diff --git a/_sources/dataclustering.rst.txt b/_sources/dataclustering.rst.txt
new file mode 100644
index 0000000..de88c6e
--- /dev/null
+++ b/_sources/dataclustering.rst.txt
@@ -0,0 +1,4 @@
+DataClustering module
+=====================
+.. automodule:: pygenstability.DataClustering
+ :members:
diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt
index e71b6b4..52fde51 100644
--- a/_sources/index.rst.txt
+++ b/_sources/index.rst.txt
@@ -13,6 +13,7 @@ Documentation of the API of *PyGenStability*.
constructors
app
plotting
+ dataclustering
optimal_scales
io
examples/example
diff --git a/app.html b/app.html
index d9dd37a..fb2757b 100644
--- a/app.html
+++ b/app.html
@@ -159,6 +159,7 @@
Constructors module
The pygenstability cli
Plotting module
+DataClustering module
Optimal scales module
I/O module
Example: Markov Stability with PyGenStability
diff --git a/constructors.html b/constructors.html
index 0958a6d..b84bdca 100644
--- a/constructors.html
+++ b/constructors.html
@@ -159,6 +159,7 @@
Constructors module
The pygenstability cli
Plotting module
+DataClustering module
Optimal scales module
I/O module
Example: Markov Stability with PyGenStability
@@ -348,7 +349,7 @@
diff --git a/dataclustering.html b/dataclustering.html
new file mode 100644
index 0000000..a346c01
--- /dev/null
+++ b/dataclustering.html
@@ -0,0 +1,402 @@
+
+
+
+
+
+
+
+
+ DataClustering module - PyGenStability documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Back to top
+
+
+
+
+DataClustering module#
+Class for multiscale graph-based data clustering.
+This class provides an interface for multiscale graph-based data clustering [1]
+with PyGenStability.
+
+- param metric:
+The distance metric to use. The distance function can be ‘braycurtis’, ‘canberra’,
+‘chebyshev’, ‘cityblock’, ‘correlation’, ‘cosine’, ‘dice’, ‘euclidean’, ‘hamming’,
+‘jaccard’, ‘jensenshannon’, ‘kulczynski1’, ‘mahalanobis’, ‘matching’, ‘minkowski’,
+‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’,
+‘sqeuclidean’, ‘yule’.
+
+- type metric:
+str or function, default=’euclidean’
+
+- param graph_method:
+Method to construct graph from sample-by-feature matrix:
+
+‘knn-mst’ will use k-Nearest Neighbor graph combined with Miniumus Spanning Tree.
+
+- ‘cknn-mst’ will use Continunous k-Nearest Neighbor graph [2] combined with
Miniumus Spanning Tree.
+
+
+
+
+- ‘precomputed’ assumes that data is already provided as adjacency matrix of a
sparse graph.
+
+
+
+
+
+- type graph_method:
+{‘knn-mst’, ‘cknn-mst’, ‘precomputed’}, default=’cknn-mst’
+
+- param k:
+Number of neighbors considered in graph construction. This parameter is expected
+to be positive.
+
+- type k:
+int, default=5
+
+- param delta:
+Density parameter for Continunous k-Nearest Neighbor graph. This parameter is expected
+to be positive.
+
+- type delta:
+float, default=1.0
+
+- param distance_threshold:
+Optional thresholding of distance matrix.
+
+- type distance_threshold:
+float, optional
+
+- param pgs_kwargs:
+Parameters for PyGenStability, see documentation. Some possible arguments:
+
+
+- constructor (str/function): name of the generalized Markov Stability constructor,
or custom constructor function. It must have two arguments, graph and scale.
+
+
+
+min_scale (float): minimum Markov scale
+max_scale (float): maximum Markov scale
+n_scale (int): number of scale steps
+with_spectral_gap (bool): normalise scale by spectral gap
+
+
+- type pgs_kwargs:
+dict, optional
+
+
+
+-
+pygenstability.DataClustering.adjacency_#
+Sparse adjacency matrix of constructed graph.
+
+- Type:
+sparse matrix of shape (n_samples, n_samples)
+
+
+
+
+
+-
+pygenstability.DataClustering.results_#
+PyGenStability results dictionary, see documentation for all arguments.
+
+- Type:
+dict
+
+
+
+
+
+-
+pygenstability.DataClustering.labels_#
+List of robust partitions identified with optimal scale selection.
+
+- Type:
+list of ndarray
+
+
+
+
+References
+
+
+[1]
+Z. Liu and M. Barahona, ‘Graph-based data clustering via multiscale
+community detection’, Applied Network Science, vol. 5, no. 1, p. 3,
+Dec. 2020, doi: 10.1007/s41109-019-0248-7.
+
+
+[2]
+T. Berry and T. Sauer, ‘Consistent manifold representation for
+topological data analysis’, Foundations of Data Science, vol. 1, no. 1,
+p. 1-38, Feb. 2019, doi: 10.3934/fods.2019001.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ On this page
+
+
+
+
+
+- DataClustering module
+adjacency_
+results_
+labels_
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/example.html b/examples/example.html
index fd58a31..db7bfd5 100644
--- a/examples/example.html
+++ b/examples/example.html
@@ -159,6 +159,7 @@
Constructors module
The pygenstability cli
Plotting module
+DataClustering module
Optimal scales module
I/O module
Example: Markov Stability with PyGenStability
diff --git a/genindex.html b/genindex.html
index f3bb486..9ce9fa2 100644
--- a/genindex.html
+++ b/genindex.html
@@ -157,6 +157,7 @@
Constructors module
The pygenstability cli
Plotting module
+DataClustering module
Optimal scales module
I/O module
Example: Markov Stability with PyGenStability
@@ -196,7 +197,7 @@
Index
-
+
Symbols
@@ -362,6 +363,16 @@ Symbols
+
+ A
+
+
+
+
+
C
@@ -504,10 +515,12 @@ I
L
@@ -525,6 +538,8 @@ M
pygenstability.app
pygenstability.constructors
+
+ pygenstability.DataClustering
pygenstability.io
@@ -591,6 +606,13 @@ P
- module
+
+
+
+ pygenstability.DataClustering
+
+
+ - module
@@ -629,6 +651,8 @@ P
R
+ - results_ (in module pygenstability.DataClustering)
+
-
RESULTS_FILE
diff --git a/index.html b/index.html
index 302f7b1..0a954e3 100644
--- a/index.html
+++ b/index.html
@@ -159,6 +159,7 @@
- Constructors module
- The pygenstability cli
- Plotting module
+- DataClustering module
- Optimal scales module
- I/O module
- Example: Markov Stability with PyGenStability
@@ -203,41 +204,56 @@ PyGenStability
Installation#
-The wrapper uses Pybind11 https://github.com/pybind/pybind11 and the package can simply be installed by first cloning this repo with
-git clone --recurse-submodules https://github.com/ImperialCollegeLondon/PyGenStability.git
+You can install the package using pypi:
+pip install pygenstability
-(if the --recurse-submodules
has not been used, just do git submodule update --init --recursive
to fetch the submodule with M. Schaub’s code).
-Then, to install the package, simply run
-pip install .
+Using a fresh python3 virtual environment, e.g. conda, may be recommended to avoid conflicts with other python packages.
+By default, the package uses the Louvain algorithm [4] for optimizing generalized Markov Stability. To use the Leiden algorithm [5], install this package with:
+pip install pygenstability[leiden]
+
+
+To plot network partitions using networkx
, install this package with:
+pip install pygenstability[networkx]
+
+
+To use plotly
for interactive plots in the browser, install this package with:
+pip install pygenstability[plotly]
-using a fresh virtualenv
in python3 may be recommended to avoid conflict of python packages.
-To use plotly for interactive plots in the browser, install this package with
-pip install .[plotly]
+To install all dependencies, run:
+pip install pygenstability[all]
-To use a contrib module, with additional tools, run
-pip install .[contrib]
+
+Installation from GitHub#
+You can also install the source code of this package from GitHub directly by first cloning this repo with:
+git clone --recurse-submodules https://github.com/ImperialCollegeLondon/PyGenStability.git
-To install all dependencies, run
-pip install .[all]
+(if the --recurse-submodules
has not been used, just do git submodule update --init --recursive
to fetch the submodule with M. Schaub’s code).
+The wrapper for the submodule uses Pybind11 https://github.com/pybind/pybind11 and, to install the package, simply run (within the PyGenStability
directory):
+pip install .
+
+
+using a fresh python3 virtual environment to avoid conflicts. Similar to above, you can also specify additional dependencies, e.g. to install the package with networkx
run:
+pip install .[networkx]
+
Using the code#
The code is simple to run with the default settings. We can input our graph (of type scipy.csgraph), run a scan in scales with a chosen Markov Stability constructor and plot the results in a summary figure presenting different partition quality measures across scales (values of MS cost function, number of communities, etc.) with an indication of optimal scales.
-import pygenstability as pgs
+import pygenstability as pgs
results = pgs.run(graph)
pgs.plot_scan(results)
Although it is enforced in the code, it is advised to set environment variables
-export OPENBLAS_NUM_THREADS=1
-export OMP_NUM_THREADS=1
-export NUMEXPR_MAX_THREADS=1
+export OPENBLAS_NUM_THREADS=1
+export OMP_NUM_THREADS=1
+export NUMEXPR_MAX_THREADS=1
to ensure numpy does not use multi-threadings, which may clash with the parallelisation and slow down the computation.
@@ -247,7 +263,7 @@ Using the coderesults = pgs.run(graph, method="leiden")
+results = pgs.run(graph, method="leiden")
There are also additional post-processing and analysis functions, including:
@@ -256,7 +272,7 @@ Using the codepygenstability/optimal_scales.py. To reduce noise, e.g., one can increase the parameter values for block_size
and window_size
. The optimal network partitions can then be plotted given a NetworkX nx_graph.
-results = pgs.identify_optimal_scales(results, block_size=10, window_size=5)
+results = pgs.identify_optimal_scales(results, block_size=10, window_size=5)
pgs.plot_optimal_partitions(nx_graph, results)
@@ -280,6 +296,29 @@ Constructorsquality_matrix (sparse scipy matrix) and a null_model
(multiples of two, in a numpy array)
+
+Graph-based data clustering#
+PyGenStability can also be used to perform multiscale graph-based data clustering on data that comes in the form of a sample-by-feature matrix. This approach was shown to achieve better performance than other popular clustering methods without the need of setting the number of clusters externally [9].
+We provide an easy-to-use interface in our pygenstability.data_clustering.py
module. Given a sample-by-feature matrix X
, one can apply graph-based data clustering as follows:
+clustering = pgs.DataClustering(
+ graph_method="cknn",
+ k=5,
+ constructor="continuous_normalized")
+
+# apply graph-based data clustering to X
+results = clustering.fit(X)
+
+# identify optimal scales and plot scan
+clustering.scale_selection(kernel_size=0.2)
+clustering.plot_scan()
+
+
+We currently support $k$-Nearest Neighbor (kNN) and Continuous $k$-Nearest Neighbor (CkNN) [10] graph constructions (specified by graph_method
) and k
refers to the number of neighbours considered in the construction. See documentation for a list of all parameters. All functionalities of PyGenStability including plotting and scale selection are also available for data clustering. For example, given two-dimensional coordinates of the data points one can plot the optimal partitions directly:
+# plot robust partitions
+clustering.plot_robust_partitions(x_coord=x_coord,y_coord=y_coord)
+
+
+
Contributors#
@@ -319,11 +358,11 @@ Cite#
Run example#
In the example
folder, a demo script with a stochastic block model can be tried with
-python simple_example.py
+python simple_example.py
or using the click app:
-./run_simple_example.sh
+./run_simple_example.sh
Other examples can be found as jupyter-notebooks in the examples/
directory, including:
@@ -334,6 +373,7 @@ Run exampleexamples/real_examples/ directory, including:
@@ -361,8 +401,10 @@ References
Licence#
@@ -408,6 +450,12 @@ API documentationplot_clustered_adjacency()
+- DataClustering module
+adjacency_
+results_
+labels_
+
+
- Optimal scales module
@@ -468,9 +516,13 @@
API documentation
- PyGenStability
-- Installation
+- Installation
+
- Using the code
- Constructors
+- Graph-based data clustering
- Contributors
- Cite
- Run example
diff --git a/io.html b/io.html
index 8e9e6fb..7baaa38 100644
--- a/io.html
+++ b/io.html
@@ -159,6 +159,7 @@
- Constructors module
- The pygenstability cli
- Plotting module
+- DataClustering module
- Optimal scales module
- I/O module
- Example: Markov Stability with PyGenStability
diff --git a/objects.inv b/objects.inv
index d964f49..05f3b62 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/optimal_scales.html b/optimal_scales.html
index f91ab34..a1d141e 100644
--- a/optimal_scales.html
+++ b/optimal_scales.html
@@ -3,7 +3,7 @@
-
+
Optimal scales module - PyGenStability documentation
@@ -159,6 +159,7 @@
- Constructors module
- The pygenstability cli
- Plotting module
+- DataClustering module
- Optimal scales module
- I/O module
- Example: Markov Stability with PyGenStability
@@ -251,14 +252,14 @@
-
+
Previous
- Plotting module
+ DataClustering module
diff --git a/plotting.html b/plotting.html
index defb2dc..0a55b9d 100644
--- a/plotting.html
+++ b/plotting.html
@@ -3,7 +3,7 @@
-
+
Plotting module - PyGenStability documentation
@@ -159,6 +159,7 @@
- Constructors module
- The pygenstability cli
- Plotting module
+- DataClustering module
- Optimal scales module
- I/O module
- Example: Markov Stability with PyGenStability
@@ -328,12 +329,12 @@
+
+
+
+ pygenstability.DataClustering
+
+
diff --git a/pygenstability.html b/pygenstability.html
index a529b32..6028fff 100644
--- a/pygenstability.html
+++ b/pygenstability.html
@@ -159,6 +159,7 @@
Constructors module
The pygenstability cli
Plotting module
+DataClustering module
Optimal scales module
I/O module
Example: Markov Stability with PyGenStability
@@ -255,9 +256,12 @@
’run_params’: dict with parameters used to run the code
’scales’: scales of the scan
’number_of_communities’: number of communities at each scale
+’stability’: value of stability cost function at each scale
’community_id’: community node labels at each scale
-’NVI’: NVI at each scale
-’ttprime’: ttprime matrix
+’NVI’: NVI(t) at each scale
+’ttprime’: NVI(t,tprime) matrix
+’block_detection_curve’: block detection curve (included if with_optimal_scales==True)
+’selected_partitions’: selected partitions (included if with_optimal_scales==True)
diff --git a/search.html b/search.html
index af31bd9..d2b2266 100644
--- a/search.html
+++ b/search.html
@@ -156,6 +156,7 @@
Constructors module
The pygenstability cli
Plotting module
+DataClustering module
Optimal scales module
I/O module
Example: Markov Stability with PyGenStability
diff --git a/searchindex.js b/searchindex.js
index 6fad64b..b32202b 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["app", "constructors", "examples/example", "index", "io", "optimal_scales", "plotting", "pygenstability"], "filenames": ["app.rst", "constructors.rst", "examples/example.ipynb", "index.rst", "io.rst", "optimal_scales.rst", "plotting.rst", "pygenstability.rst"], "titles": ["The pygenstability cli", "Constructors module", "Example: Markov Stability with PyGenStability", "PyGenStability", "I/O module", "Optimal scales module", "Plotting module", "PyGenStability module"], "terms": {"command": 0, "line": 0, "interfac": [0, 3], "app": [0, 3], "initialis": [0, 1], "option": [0, 2, 3], "arg": 0, "plot": [0, 2, 3], "commun": [0, 1, 2, 3, 6, 7], "networkx": [0, 2, 3, 6], "graph": [0, 1, 2, 3, 6, 7], "graph_fil": 0, "results_fil": 0, "argument": [0, 2, 3, 7], "requir": [0, 3], "result": [0, 2, 3, 4, 5, 6, 7], "scan": [0, 3, 5, 6, 7], "path": [0, 7], "either": [0, 3], "pkl": [0, 4, 7], "adjac": [0, 1, 6, 7], "matrix": [0, 1, 2, 3, 5, 6, 7], "spars": [0, 2, 3], "format": [0, 6], "text": 0, "file": [0, 6, 7], "three": 0, "column": 0, "encod": [0, 1, 7], "node": [0, 1, 3, 6, 7], "indic": [0, 3, 7], "edg": [0, 1, 6], "weight": [0, 3], "need": [0, 3, 7], "header": 0, "first": [0, 2, 3, 5], "drop": 0, "notic": 0, "doubl": 0, "opposit": 0, "orient": [0, 3], "ar": [0, 1, 2, 3, 5, 7], "symetr": 0, "see": [0, 2, 3, 7], "http": [0, 2, 3], "barahona": [0, 2, 3, 5], "research": [0, 2, 3], "group": [0, 2], "github": [0, 2, 3], "io": [0, 2, 4], "more": [0, 3], "inform": [0, 2, 7], "constructor": [0, 2, 7], "name": [0, 1, 6, 7], "qualiti": [0, 1, 3, 7], "default": [0, 2, 3, 7], "linear": [0, 1, 3, 7], "min": 0, "scale": [0, 1, 2, 3, 6, 7], "min_scal": [0, 2, 7], "minimum": [0, 3, 7], "2": [0, 2, 3, 7], "0": [0, 1, 2, 6, 7], "max": 0, "max_scal": [0, 2, 7], "maximum": [0, 7], "5": [0, 3, 6, 7], "n": [0, 1, 3], "n_scale": [0, 2, 7], "number": [0, 2, 3, 7], "step": [0, 3, 7], "20": [0, 2, 7], "log": [0, 2, 7], "log_scal": [0, 7], "us": [0, 1, 2, 6, 7], "true": [0, 1, 2, 6, 7], "tri": [0, 3], "n_tri": [0, 2, 7], "louvain": [0, 2, 3, 7], "evalu": [0, 2, 7], "100": [0, 2, 6, 7], "nvi": [0, 2, 5, 7], "comput": [0, 1, 2, 3, 7], "normal": [0, 1, 2, 3, 7], "variat": [0, 2, 7], "between": [0, 1, 2, 7], "n_nvi": [0, 7], "randomli": [0, 7], "chosen": [0, 3, 7], "estim": [0, 7], "postprocess": [0, 2, 7], "appli": [0, 2, 3, 7], "final": [0, 2, 3, 7], "ttprime": [0, 2, 7], "spectral": [0, 1, 7], "gap": [0, 1, 7], "result_fil": [0, 7], "worker": [0, 7], "n_worker": [0, 2, 7], "multiprocess": [0, 7], "4": [0, 2, 3, 7], "tqdm": 0, "disabl": [0, 7], "tqdm_disabl": [0, 7], "progress": [0, 7], "bar": [0, 7], "fals": [0, 1, 6, 7], "method": [0, 1, 3, 7], "solv": [0, 1, 3, 7], "modular": [0, 1, 3, 7], "leiden": [0, 3, 7], "optim": [0, 2, 3, 6, 7], "search": [0, 5], "exp": [0, 1], "comp": 0, "mode": [0, 1, 7], "exp_comp_mod": [0, 1, 7], "exponenti": [0, 1, 3, 7], "can": [0, 1, 2, 3, 7], "expm": [0, 1, 7], "creat": [1, 2], "null": [1, 3, 7], "model": [1, 2, 3, 7], "The": [1, 2, 3, 7], "gener": [1, 3, 7], "markov": [1, 3, 5, 7], "stabil": [1, 3, 5, 7], "i": [1, 2, 3, 7], "given": [1, 3, 6], "q_": [1, 7], "gen": [1, 7], "t": [1, 2, 3, 5, 7], "h": [1, 7], "mathrm": [1, 7], "tr": [1, 7], "left": [1, 7], "f": [1, 7], "sum_": [1, 7], "k": [1, 2, 7], "1": [1, 2, 3, 5, 7], "m": [1, 2, 3, 5, 7], "v_": [1, 7], "2k": [1, 7], "right": [1, 7], "where": [1, 7], "v_k": [1, 7], "vector": [1, 7], "In": [1, 3], "follow": [1, 3, 7], "we": [1, 2, 3, 5], "denot": 1, "A": [1, 2, 3], "out": [1, 3], "degre": 1, "d": [1, 3, 5], "boldsymbol": 1, "ones": 1, "diagon": [1, 5], "diag": 1, "pygenst": [1, 4, 5, 6], "load_constructor": [1, 3], "kwarg": [1, 7], "sourc": [1, 3, 4, 5, 6, 7], "load": [1, 4], "from": [1, 2, 3, 4, 5, 6], "its": [1, 3, 5], "custom": [1, 3, 7], "class": 1, "with_spectral_gap": [1, 7], "parent": 1, "thi": [1, 2, 3, 7], "through": 1, "prepar": [1, 7], "independ": 1, "quantiti": 1, "get_data": 1, "return": [1, 2, 3, 5, 7], "possibl": 1, "global": [1, 3], "shift": 1, "call": [1, 3, 5], "upon": 1, "paramet": [1, 3, 5, 6, 7], "csgraph": [1, 2, 3, 7], "which": [1, 2, 3, 7], "run": [1, 2, 7], "cluster": [1, 2, 3, 6, 7], "bool": [1, 6, 7], "set": [1, 2, 3, 7], "rescal": 1, "dict": [1, 5, 6, 7], "ani": [1, 3], "other": [1, 2, 7], "properti": [1, 3], "pass": [1, 7], "str": [1, 6, 7], "non": 1, "depend": [1, 3], "well": [1, 3], "none": [1, 2, 6, 7], "user": [1, 3, 7], "ha": [1, 3], "defin": [1, 3, 7], "_get_data": 1, "so": [1, 3], "enur": 1, "numpi": [1, 3, 6], "doe": [1, 3], "multipl": [1, 3], "thread": [1, 3], "constructor_linear": [1, 3], "continu": 1, "frac": [1, 7], "2m": 1, "associ": [1, 3], "v_1": 1, "v_2": 1, "constructor_continuous_combinatori": [1, 3], "combinatori": [1, 2, 3], "pi": 1, "lt": [1, 2], "l": [1, 2, 3], "laplacian": [1, 2, 3], "constructor_continuous_norm": [1, 3], "random": [1, 3], "walk": [1, 3], "constructor_signed_modular": [1, 3], "sign": [1, 3], "implement": [1, 3], "equat": 1, "18": 1, "differ": [1, 2, 3], "standard": [1, 2], "base": [1, 3], "posit": 1, "neg": 1, "refer": [1, 5], "g\u00f3mez": [1, 3], "": [1, 2, 3], "jensen": [1, 3], "p": [1, 3], "arena": [1, 3], "2009": [1, 3], "analysi": [1, 2, 3], "structur": [1, 2, 3, 6], "network": [1, 2, 3, 5], "correl": [1, 3], "data": [1, 3], "physic": [1, 3], "review": [1, 3], "e": [1, 3, 7], "80": [1, 3], "016114": [1, 3], "constructor_signed_combinatori": [1, 3], "d_": 1, "ab": [1, 3], "absolut": 1, "strength": 1, "zero": 1, "constructor_direct": [1, 3], "direct": [1, 3], "alpha": 1, "ident": 1, "transit": 1, "teleport": [1, 3], "damp": 1, "factor": 1, "le": 1, "eigenvector": 1, "relat": 1, "pagerank": 1, "ii": [1, 3], "d_i": 1, "dangl": 1, "a_i": 1, "otherwis": 1, "constructor_linearized_direct": [1, 3], "illustr": [2, 3], "how": 2, "multiscal": [2, 3, 5], "detect": [2, 3, 5], "import": [2, 3], "matplotlib": [2, 3, 6], "pyplot": 2, "plt": [2, 6], "nx": 2, "scipi": [2, 3, 7], "sp": 2, "pg": [2, 3], "evaluate_nvi": [2, 3, 7], "multiscale_exampl": 2, "create_graph": 2, "stochast": [2, 3], "block": [2, 3, 5], "some": [2, 3], "plant": 2, "partit": [2, 3, 5, 7], "coarse_scale_id": 2, "middle_scale_id": 2, "fine_scale_id": 2, "g": [2, 3], "from_numpy_arrai": 2, "spring": 2, "layout": 2, "pos_g": 2, "spring_layout": 2, "seed": 2, "figur": [2, 3, 6], "imshow": 2, "interpol": 2, "nearest": 2, "imag": 2, "axesimag": 2, "0x125897010": 2, "gt": 2, "continuous_combinator": 2, "correspond": [2, 5, 7], "rang": [2, 3, 7], "time": [2, 3], "specifi": [2, 3, 7], "thei": 2, "avail": [2, 7], "document": 2, "3": [2, 3, 5], "identifi": [2, 3, 5], "csgraph_from_dens": 2, "25": 2, "75": 2, "50": 2, "continuous_combinatori": [2, 3], "info": 2, "precomput": 2, "00": 2, "02": 2, "17": 2, "93it": 2, "optimis": [2, 3, 7], "11": 2, "40it": 2, "05": 2, "9": [2, 3], "56it": 2, "analys": [2, 3], "plot_scan": [2, 3, 6], "show": [2, 6], "variou": [2, 3], "evalut": 2, "accro": 2, "select": [2, 3, 7], "algorithm": [2, 3, 7], "highlight": 2, "most": 2, "robust": [2, 3, 5], "_": 2, "figure_nam": [2, 6], "optimal": 2, "determin": [2, 5], "7": [2, 3], "plot_optimal_partit": [2, 3, 6], "compar": [2, 3, 7], "ground": 2, "truth": 2, "normalis": [2, 7], "observ": 2, "recov": 2, "8": [2, 3], "def": 2, "_get_nvi": 2, "ref_id": 2, "community_id": [2, 7], "len": 2, "nvi_scores_fin": 2, "nvi_scores_middl": 2, "nvi_scores_coars": 2, "score": 2, "fig": 2, "ax": 2, "subplot": 2, "figsiz": [2, 6], "label": [2, 6, 7], "fine": 2, "middl": 2, "coars": 2, "selected_partit": [2, 5], "axvlin": 2, "x": 2, "color": [2, 6], "red": 2, "xlabel": 2, "r": [2, 3], "log_": 2, "10": [2, 3, 6], "ylabel": 2, "axhlin": 2, "c": [2, 3], "legend": 2, "loc": 2, "xscale": 2, "python": 3, "design": 3, "allow": 3, "resolut": 3, "It": [3, 7], "sever": 3, "variant": 3, "cost": 3, "function": [3, 4, 6, 7], "diffus": 3, "process": 3, "explor": 3, "below": 3, "whilst": 3, "primarili": 3, "built": [3, 7], "intern": 3, "architectur": 3, "been": 3, "wide": 3, "sinc": 3, "To": 3, "maxim": 3, "provid": [3, 7], "conveni": 3, "further": 3, "specif": 3, "tool": 3, "facilit": 3, "automat": 3, "6": 3, "accompani": 3, "softwar": 3, "paper": 3, "detail": 3, "benchmark": 3, "applic": 3, "wrapper": 3, "pybind11": 3, "com": 3, "pybind": 3, "simpli": 3, "clone": 3, "repo": 3, "git": 3, "recurs": 3, "submodul": 3, "imperialcollegelondon": 3, "just": 3, "do": 3, "updat": 3, "init": 3, "fetch": 3, "schaub": 3, "Then": 3, "pip": 3, "fresh": 3, "virtualenv": 3, "python3": 3, "mai": 3, "recommend": 3, "avoid": 3, "conflict": 3, "plotli": [3, 6], "interact": 3, "browser": [3, 6], "contrib": 3, "modul": 3, "addit": [3, 7], "all": [3, 6], "simpl": 3, "input": 3, "type": [3, 5], "summari": 3, "present": 3, "measur": 3, "across": [3, 7], "valu": [3, 5], "etc": 3, "an": [3, 7], "although": 3, "enforc": 3, "advis": 3, "environ": 3, "variabl": 3, "export": 3, "openblas_num_thread": 3, "omp_num_thread": 3, "numexpr_max_thread": 3, "ensur": 3, "multi": 3, "clash": 3, "parallelis": 3, "slow": 3, "down": 3, "There": 3, "varieti": 3, "choic": [3, 7], "make": 3, "impact": 3, "includ": [3, 7], "object": [3, 7], "write": 3, "alreadi": 3, "py": 3, "classic": 3, "np": 3, "hard": 3, "two": [3, 5, 7], "while": 3, "due": 3, "familiar": 3, "within": 3, "known": 3, "produc": 3, "better": 3, "also": 3, "post": 3, "via": [3, 7], "autom": 3, "perform": [3, 7], "repeat": 3, "optimal_scal": [3, 5, 7], "reduc": 3, "nois": 3, "one": 3, "increas": 3, "block_siz": 3, "window_s": [3, 5], "nx_graph": 3, "identify_optimal_scal": [3, 5], "construct": 3, "matric": 3, "larg": [3, 5], "undirect": 3, "continuous_norm": 3, "signed_modular": 3, "signed_combinatori": 3, "linearized_direct": 3, "For": 3, "computation": 3, "effici": 3, "instead": 3, "reli": 3, "those": 3, "you": 3, "wish": 3, "own": 3, "take": 3, "float": [3, 5, 6, 7], "quality_matrix": 3, "null_model": 3, "arrai": [3, 6, 7], "alexi": 3, "arnaudon": 3, "robert": 3, "peach": 3, "lucien": 3, "dominik": 3, "schindler": [3, 5], "alwai": 3, "look": 3, "individu": 3, "interest": 3, "contribut": 3, "open": [3, 6], "project": 3, "even": 3, "made": 3, "minor": 3, "would": 3, "your": 3, "pleas": 3, "work": 3, "articl": 3, "author": 3, "j": [3, 5], "gosztolai": 3, "adam": 3, "hodg": 3, "maxwel": 3, "michael": 3, "mauricio": 3, "titl": 3, "publish": 3, "arxiv": [3, 5], "year": 3, "2023": [3, 5], "doi": 3, "48550": 3, "2303": 3, "05385": 3, "url": 3, "org": 3, "origin": 3, "delvenne2010st": 3, "delvenn": 3, "yaliraki": 3, "sophia": 3, "journal": 3, "proceed": 3, "nation": 3, "academi": 3, "scienc": 3, "volum": 3, "107": 3, "29": 3, "page": 3, "12755": 3, "12760": 3, "2010": 3, "acad": 3, "folder": [3, 6], "demo": 3, "script": 3, "simple_exampl": 3, "click": 3, "run_simple_exampl": 3, "sh": 3, "found": [3, 5], "jupyt": 3, "notebook": 3, "directori": 3, "sbm": 3, "hypergraph": 3, "real": 3, "world": 3, "real_exampl": 3, "power": 3, "grid": 3, "protein": 3, "If": 3, "try": 3, "list": [3, 6, 7], "gdr": 3, "reclassif": 3, "methodologi": 3, "classif": 3, "semi": 3, "supervis": 3, "learn": 3, "hcga": 3, "highli": 3, "toolbox": 3, "massiv": 3, "featur": 3, "extract": 3, "msc": 3, "central": 3, "metric": 3, "dyngdim": 3, "dynam": 3, "dimens": 3, "rel": 3, "local": [3, 5], "complex": 3, "rmst": 3, "relax": 3, "span": 3, "tree": 3, "sparsifi": 3, "retain": 3, "spatial": 3, "tempor": 3, "epidemiolog": 3, "proxim": 3, "characteris": 3, "contact": 3, "diseas": 3, "outbreak": 3, "vol": 3, "pp": 3, "jul": 3, "1073": 3, "pna": 3, "0903215107": 3, "lambiott": 3, "organ": 3, "ieee": 3, "tran": 3, "netw": 3, "sci": 3, "eng": 3, "76": 3, "90": 3, "2014": 3, "1109": 3, "tnse": 3, "2015": 3, "2391998": 3, "embed": 3, "phy": 3, "rev": 3, "99": 3, "jun": 3, "2019": 3, "1103": 3, "physrev": 3, "062308": 3, "v": 3, "blondel": 3, "guillaum": 3, "lefebvr": 3, "fast": [3, 7], "unfold": 3, "stat": 3, "mech": 3, "2008": 3, "oct": 3, "1088": 3, "1742": 3, "5468": 3, "p10008": 3, "traag": 3, "waltman": 3, "van": 3, "eck": 3, "guarante": 3, "connect": 3, "rep": 3, "5233": 3, "mar": 3, "1038": 3, "s41598": 3, "019": 3, "41695": 3, "z": 3, "clark": [3, 5], "mobil": [3, 5], "pattern": [3, 5], "restrict": [3, 5], "human": [3, 5], "movement": [3, 5], "royal": 3, "societi": 3, "230405": 3, "1098": 3, "rso": 3, "pre": 3, "print": 3, "program": 3, "free": 3, "redistribut": 3, "modifi": 3, "under": 3, "term": 3, "gnu": 3, "public": 3, "licens": 3, "foundat": 3, "version": 3, "later": 3, "distribut": 3, "hope": 3, "without": 3, "warranti": 3, "impli": 3, "merchant": 3, "fit": 3, "FOR": 3, "particular": 3, "purpos": 3, "should": 3, "have": [3, 7], "receiv": 3, "copi": 3, "along": 3, "www": 3, "cli": 3, "plot_scan_plotli": [3, 6], "plot_single_partit": [3, 6], "plot_commun": [3, 6], "plot_communities_matrix": [3, 6], "plot_scan_plt": [3, 6], "plot_clustered_adjac": [3, 6], "o": 3, "save_result": [3, 4], "load_result": [3, 4], "all_result": [4, 6], "filenam": [4, 6], "save": [4, 6], "pickl": 4, "kernel_s": 5, "max_nvi": 5, "basin_radiu": 5, "sequenti": 5, "wai": 5, "low": 5, "locat": 5, "minima": 5, "pool": 5, "curv": 5, "obtain": 5, "basin": 5, "fix": 5, "radiu": 5, "around": 5, "each": [5, 6, 7], "calcul": 5, "int": [5, 6, 7], "size": [5, 6], "kernel": 5, "averag": 5, "window": 5, "move": 5, "mean": 5, "smooth": 5, "threshold": 5, "block_detection_curv": 5, "dictionari": 5, "new": 5, "kei": 5, "2201": 5, "06323": 5, "scale_axi": 6, "scan_result": 6, "pdf": 6, "use_plotli": 6, "live": 6, "plotly_filenam": 6, "html": 6, "displai": 6, "index": 6, "axi": 6, "backend": 6, "pot": 6, "scale_id": 6, "edge_color": 6, "edge_width": 6, "node_s": 6, "width": 6, "ext": 6, "extens": 6, "optimal_partit": 6, "communities_matrix": 6, "form": [6, 7], "clustr": 6, "svg": 6, "12": 6, "cmap": 6, "blue": 6, "clustered_adjac": 6, "ndarrai": 6, "tubpl": 6, "colormap": 6, "element": 6, "code": 7, "arbitrari": 7, "parametris": 7, "with_nvi": 7, "with_postprocess": 7, "with_ttprim": 7, "with_optimal_scal": 7, "optimal_scales_kwarg": 7, "constructor_kwarg": 7, "main": 7, "ad": 7, "trial": 7, "cannot": 7, "must": 7, "overrid": 7, "tprime": 7, "optimi": 7, "entri": 7, "run_param": 7, "number_of_commun": 7, "index_pair": 7, "p1": 7, "p2": 7, "2mi": 7, "je": 7, "entropi": 7, "joint": 7, "mi": 7, "mutual": 7, "pair": 7}, "objects": {"pygenstability": [[0, 0, 0, "-", "app"], [1, 0, 0, "-", "constructors"], [4, 0, 0, "-", "io"], [5, 0, 0, "-", "optimal_scales"], [6, 0, 0, "-", "plotting"], [7, 0, 0, "-", "pygenstability"]], "pygenstability.constructors": [[1, 1, 1, "", "Constructor"], [1, 1, 1, "", "constructor_continuous_combinatorial"], [1, 1, 1, "", "constructor_continuous_normalized"], [1, 1, 1, "", "constructor_directed"], [1, 1, 1, "", "constructor_linearized"], [1, 1, 1, "", "constructor_linearized_directed"], [1, 1, 1, "", "constructor_signed_combinatorial"], [1, 1, 1, "", "constructor_signed_modularity"], [1, 3, 1, "", "load_constructor"]], "pygenstability.constructors.Constructor": [[1, 2, 1, "", "get_data"], [1, 2, 1, "", "prepare"]], "pygenstability.constructors.constructor_continuous_combinatorial": [[1, 2, 1, "", "prepare"]], "pygenstability.constructors.constructor_continuous_normalized": [[1, 2, 1, "", "prepare"]], "pygenstability.constructors.constructor_directed": [[1, 2, 1, "", "prepare"]], "pygenstability.constructors.constructor_linearized": [[1, 2, 1, "", "prepare"]], "pygenstability.constructors.constructor_linearized_directed": [[1, 2, 1, "", "prepare"]], "pygenstability.constructors.constructor_signed_combinatorial": [[1, 2, 1, "", "get_data"], [1, 2, 1, "", "prepare"]], "pygenstability.constructors.constructor_signed_modularity": [[1, 2, 1, "", "prepare"]], "pygenstability.io": [[4, 3, 1, "", "load_results"], [4, 3, 1, "", "save_results"]], "pygenstability.optimal_scales": [[5, 3, 1, "", "identify_optimal_scales"]], "pygenstability.plotting": [[6, 3, 1, "", "plot_clustered_adjacency"], [6, 3, 1, "", "plot_communities"], [6, 3, 1, "", "plot_communities_matrix"], [6, 3, 1, "", "plot_optimal_partitions"], [6, 3, 1, "", "plot_scan"], [6, 3, 1, "", "plot_scan_plotly"], [6, 3, 1, "", "plot_scan_plt"], [6, 3, 1, "", "plot_single_partition"]], "pygenstability.pygenstability": [[7, 3, 1, "", "evaluate_NVI"], [7, 3, 1, "", "run"]], "cli-plot_communities": [[0, 4, 1, "cmdoption-cli-plot_communities-arg-GRAPH_FILE", "GRAPH_FILE"], [0, 4, 1, "cmdoption-cli-plot_communities-arg-RESULTS_FILE", "RESULTS_FILE"]], "cli-plot_scan": [[0, 4, 1, "cmdoption-cli-plot_scan-arg-RESULTS_FILE", "RESULTS_FILE"]], "cli-run": [[0, 4, 1, "cmdoption-cli-run-NVI", "--NVI"], [0, 4, 1, "cmdoption-cli-run-constructor", "--constructor"], [0, 4, 1, "cmdoption-cli-run-exp-comp-mode", "--exp-comp-mode"], [0, 4, 1, "cmdoption-cli-run-log-scale", "--log-scale"], [0, 4, 1, "cmdoption-cli-run-max-scale", "--max-scale"], [0, 4, 1, "cmdoption-cli-run-method", "--method"], [0, 4, 1, "cmdoption-cli-run-min-scale", "--min-scale"], [0, 4, 1, "cmdoption-cli-run-n-NVI", "--n-NVI"], [0, 4, 1, "cmdoption-cli-run-n-scale", "--n-scale"], [0, 4, 1, "cmdoption-cli-run-n-tries", "--n-tries"], [0, 4, 1, "cmdoption-cli-run-n-workers", "--n-workers"], [0, 4, 1, "cmdoption-cli-run-NVI", "--no-NVI"], [0, 4, 1, "cmdoption-cli-run-postprocessing", "--no-postprocessing"], [0, 4, 1, "cmdoption-cli-run-spectral-gap", "--no-spectral-gap"], [0, 4, 1, "cmdoption-cli-run-ttprime", "--no-ttprime"], [0, 4, 1, "cmdoption-cli-run-with-optimal-scales", "--no-with-optimal-scales"], [0, 4, 1, "cmdoption-cli-run-postprocessing", "--postprocessing"], [0, 4, 1, "cmdoption-cli-run-result-file", "--result-file"], [0, 4, 1, "cmdoption-cli-run-spectral-gap", "--spectral-gap"], [0, 4, 1, "cmdoption-cli-run-tqdm-disable", "--tqdm-disable"], [0, 4, 1, "cmdoption-cli-run-ttprime", "--ttprime"], [0, 4, 1, "cmdoption-cli-run-with-optimal-scales", "--with-optimal-scales"], [0, 4, 1, "cmdoption-cli-run-arg-GRAPH_FILE", "GRAPH_FILE"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function", "4": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"], "4": ["std", "cmdoption", "program option"]}, "titleterms": {"The": 0, "pygenst": [0, 2, 3, 7], "cli": 0, "plot_commun": 0, "plot_scan": 0, "run": [0, 3], "constructor": [1, 3], "modul": [1, 4, 5, 6, 7], "exampl": [2, 3], "markov": 2, "stabil": 2, "instal": 3, "us": 3, "code": 3, "contributor": 3, "cite": 3, "our": 3, "other": 3, "avail": 3, "packag": 3, "refer": 3, "licenc": 3, "api": 3, "document": 3, "i": 4, "o": 4, "optim": 5, "scale": 5, "plot": 6}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"The pygenstability cli": [[0, "module-pygenstability.app"]], "cli": [[0, "cli"]], "plot_communities": [[0, "cli-plot-communities"]], "plot_scan": [[0, "cli-plot-scan"]], "run": [[0, "cli-run"]], "Constructors module": [[1, "module-pygenstability.constructors"]], "Example: Markov Stability with PyGenStability": [[2, "Example:-Markov-Stability-with-PyGenStability"]], "PyGenStability": [[3, "pygenstability"]], "Installation": [[3, "installation"]], "Using the code": [[3, "using-the-code"]], "Constructors": [[3, "constructors"]], "Contributors": [[3, "contributors"]], "Cite": [[3, "cite"]], "Run example": [[3, "run-example"]], "Our other available packages": [[3, "our-other-available-packages"]], "References": [[3, "references"]], "Licence": [[3, "licence"]], "API documentation": [[3, "api-documentation"]], "I/O module": [[4, "module-pygenstability.io"]], "Optimal scales module": [[5, "module-pygenstability.optimal_scales"]], "Plotting module": [[6, "module-pygenstability.plotting"]], "PyGenStability module": [[7, "module-pygenstability.pygenstability"]]}, "indexentries": {"--nvi": [[0, "cmdoption-cli-run-NVI"]], "--constructor": [[0, "cmdoption-cli-run-constructor"]], "--exp-comp-mode": [[0, "cmdoption-cli-run-exp-comp-mode"]], "--log-scale": [[0, "cmdoption-cli-run-log-scale"]], "--max-scale": [[0, "cmdoption-cli-run-max-scale"]], "--method": [[0, "cmdoption-cli-run-method"]], "--min-scale": [[0, "cmdoption-cli-run-min-scale"]], "--n-nvi": [[0, "cmdoption-cli-run-n-NVI"]], "--n-scale": [[0, "cmdoption-cli-run-n-scale"]], "--n-tries": [[0, "cmdoption-cli-run-n-tries"]], "--n-workers": [[0, "cmdoption-cli-run-n-workers"]], "--no-nvi": [[0, "cmdoption-cli-run-NVI"]], "--no-postprocessing": [[0, "cmdoption-cli-run-postprocessing"]], "--no-spectral-gap": [[0, "cmdoption-cli-run-spectral-gap"]], "--no-ttprime": [[0, "cmdoption-cli-run-ttprime"]], "--no-with-optimal-scales": [[0, "cmdoption-cli-run-with-optimal-scales"]], "--postprocessing": [[0, "cmdoption-cli-run-postprocessing"]], "--result-file": [[0, "cmdoption-cli-run-result-file"]], "--spectral-gap": [[0, "cmdoption-cli-run-spectral-gap"]], "--tqdm-disable": [[0, "cmdoption-cli-run-tqdm-disable"]], "--ttprime": [[0, "cmdoption-cli-run-ttprime"]], "--with-optimal-scales": [[0, "cmdoption-cli-run-with-optimal-scales"]], "graph_file": [[0, "cmdoption-cli-plot_communities-arg-GRAPH_FILE"], [0, "cmdoption-cli-run-arg-GRAPH_FILE"]], "results_file": [[0, "cmdoption-cli-plot_communities-arg-RESULTS_FILE"], [0, "cmdoption-cli-plot_scan-arg-RESULTS_FILE"]], "cli-plot_communities command line option": [[0, "cmdoption-cli-plot_communities-arg-GRAPH_FILE"], [0, "cmdoption-cli-plot_communities-arg-RESULTS_FILE"]], "cli-plot_scan command line option": [[0, "cmdoption-cli-plot_scan-arg-RESULTS_FILE"]], "cli-run command line option": [[0, "cmdoption-cli-run-NVI"], [0, "cmdoption-cli-run-arg-GRAPH_FILE"], [0, "cmdoption-cli-run-constructor"], [0, "cmdoption-cli-run-exp-comp-mode"], [0, "cmdoption-cli-run-log-scale"], [0, "cmdoption-cli-run-max-scale"], [0, "cmdoption-cli-run-method"], [0, "cmdoption-cli-run-min-scale"], [0, "cmdoption-cli-run-n-NVI"], [0, "cmdoption-cli-run-n-scale"], [0, "cmdoption-cli-run-n-tries"], [0, "cmdoption-cli-run-n-workers"], [0, "cmdoption-cli-run-postprocessing"], [0, "cmdoption-cli-run-result-file"], [0, "cmdoption-cli-run-spectral-gap"], [0, "cmdoption-cli-run-tqdm-disable"], [0, "cmdoption-cli-run-ttprime"], [0, "cmdoption-cli-run-with-optimal-scales"]], "module": [[0, "module-pygenstability.app"], [1, "module-pygenstability.constructors"], [4, "module-pygenstability.io"], [5, "module-pygenstability.optimal_scales"], [6, "module-pygenstability.plotting"], [7, "module-pygenstability.pygenstability"]], "pygenstability.app": [[0, "module-pygenstability.app"]], "constructor (class in pygenstability.constructors)": [[1, "pygenstability.constructors.Constructor"]], "constructor_continuous_combinatorial (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_continuous_combinatorial"]], "constructor_continuous_normalized (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_continuous_normalized"]], "constructor_directed (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_directed"]], "constructor_linearized (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_linearized"]], "constructor_linearized_directed (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_linearized_directed"]], "constructor_signed_combinatorial (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_signed_combinatorial"]], "constructor_signed_modularity (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_signed_modularity"]], "get_data() (pygenstability.constructors.constructor method)": [[1, "pygenstability.constructors.Constructor.get_data"]], "get_data() (pygenstability.constructors.constructor_signed_combinatorial method)": [[1, "pygenstability.constructors.constructor_signed_combinatorial.get_data"]], "load_constructor() (in module pygenstability.constructors)": [[1, "pygenstability.constructors.load_constructor"]], "prepare() (pygenstability.constructors.constructor method)": [[1, "pygenstability.constructors.Constructor.prepare"]], "prepare() (pygenstability.constructors.constructor_continuous_combinatorial method)": [[1, "pygenstability.constructors.constructor_continuous_combinatorial.prepare"]], "prepare() (pygenstability.constructors.constructor_continuous_normalized method)": [[1, "pygenstability.constructors.constructor_continuous_normalized.prepare"]], "prepare() (pygenstability.constructors.constructor_directed method)": [[1, "pygenstability.constructors.constructor_directed.prepare"]], "prepare() (pygenstability.constructors.constructor_linearized method)": [[1, "pygenstability.constructors.constructor_linearized.prepare"]], "prepare() (pygenstability.constructors.constructor_linearized_directed method)": [[1, "pygenstability.constructors.constructor_linearized_directed.prepare"]], "prepare() (pygenstability.constructors.constructor_signed_combinatorial method)": [[1, "pygenstability.constructors.constructor_signed_combinatorial.prepare"]], "prepare() (pygenstability.constructors.constructor_signed_modularity method)": [[1, "pygenstability.constructors.constructor_signed_modularity.prepare"]], "pygenstability.constructors": [[1, "module-pygenstability.constructors"]], "load_results() (in module pygenstability.io)": [[4, "pygenstability.io.load_results"]], "pygenstability.io": [[4, "module-pygenstability.io"]], "save_results() (in module pygenstability.io)": [[4, "pygenstability.io.save_results"]], "identify_optimal_scales() (in module pygenstability.optimal_scales)": [[5, "pygenstability.optimal_scales.identify_optimal_scales"]], "pygenstability.optimal_scales": [[5, "module-pygenstability.optimal_scales"]], "plot_clustered_adjacency() (in module pygenstability.plotting)": [[6, "pygenstability.plotting.plot_clustered_adjacency"]], "plot_communities() (in module pygenstability.plotting)": [[6, "pygenstability.plotting.plot_communities"]], "plot_communities_matrix() (in module pygenstability.plotting)": [[6, "pygenstability.plotting.plot_communities_matrix"]], "plot_optimal_partitions() (in module pygenstability.plotting)": [[6, "pygenstability.plotting.plot_optimal_partitions"]], "plot_scan() (in module pygenstability.plotting)": [[6, "pygenstability.plotting.plot_scan"]], "plot_scan_plotly() (in module pygenstability.plotting)": [[6, "pygenstability.plotting.plot_scan_plotly"]], "plot_scan_plt() (in module pygenstability.plotting)": [[6, "pygenstability.plotting.plot_scan_plt"]], "plot_single_partition() (in module pygenstability.plotting)": [[6, "pygenstability.plotting.plot_single_partition"]], "pygenstability.plotting": [[6, "module-pygenstability.plotting"]], "evaluate_nvi() (in module pygenstability.pygenstability)": [[7, "pygenstability.pygenstability.evaluate_NVI"]], "pygenstability.pygenstability": [[7, "module-pygenstability.pygenstability"]], "run() (in module pygenstability.pygenstability)": [[7, "pygenstability.pygenstability.run"]]}})
\ No newline at end of file
+Search.setIndex({"docnames": ["app", "constructors", "dataclustering", "examples/example", "index", "io", "optimal_scales", "plotting", "pygenstability"], "filenames": ["app.rst", "constructors.rst", "dataclustering.rst", "examples/example.ipynb", "index.rst", "io.rst", "optimal_scales.rst", "plotting.rst", "pygenstability.rst"], "titles": ["The pygenstability cli", "Constructors module", "DataClustering module", "Example: Markov Stability with PyGenStability", "PyGenStability", "I/O module", "Optimal scales module", "Plotting module", "PyGenStability module"], "terms": {"command": 0, "line": 0, "interfac": [0, 2, 4], "app": [0, 4], "initialis": [0, 1], "option": [0, 2, 3, 4], "arg": 0, "plot": [0, 3, 4], "commun": [0, 1, 2, 3, 4, 7, 8], "networkx": [0, 3, 4, 7], "graph": [0, 1, 2, 3, 7, 8], "graph_fil": 0, "results_fil": 0, "argument": [0, 2, 3, 4, 8], "requir": [0, 4], "result": [0, 2, 3, 4, 5, 6, 7, 8], "scan": [0, 4, 6, 7, 8], "path": [0, 8], "either": [0, 4], "pkl": [0, 5, 8], "adjac": [0, 1, 2, 7, 8], "matrix": [0, 1, 2, 3, 4, 6, 7, 8], "spars": [0, 2, 3, 4], "format": [0, 7], "text": 0, "file": [0, 7, 8], "three": 0, "column": 0, "encod": [0, 1, 8], "node": [0, 1, 4, 7, 8], "indic": [0, 4, 8], "edg": [0, 1, 7], "weight": [0, 4], "need": [0, 4, 8], "header": 0, "first": [0, 3, 4, 6], "drop": 0, "notic": 0, "doubl": 0, "opposit": 0, "orient": [0, 4], "ar": [0, 1, 3, 4, 6, 8], "symetr": 0, "see": [0, 2, 3, 4, 8], "http": [0, 3, 4], "barahona": [0, 2, 3, 4, 6], "research": [0, 3, 4], "group": [0, 3], "github": [0, 3], "io": [0, 3, 5], "more": [0, 4], "inform": [0, 3, 8], "constructor": [0, 2, 3, 8], "name": [0, 1, 2, 7, 8], "qualiti": [0, 1, 4, 8], "default": [0, 2, 3, 4, 8], "linear": [0, 1, 4, 8], "min": 0, "scale": [0, 1, 2, 3, 4, 7, 8], "min_scal": [0, 2, 3, 8], "minimum": [0, 2, 4, 8], "2": [0, 2, 3, 4, 8], "0": [0, 1, 2, 3, 4, 7, 8], "max": 0, "max_scal": [0, 2, 3, 8], "maximum": [0, 2, 8], "5": [0, 2, 4, 7, 8], "n": [0, 1, 4], "n_scale": [0, 2, 3, 8], "number": [0, 2, 3, 4, 8], "step": [0, 2, 4, 8], "20": [0, 3, 8], "log": [0, 3, 8], "log_scal": [0, 8], "us": [0, 1, 2, 3, 7, 8], "true": [0, 1, 3, 7, 8], "tri": [0, 4], "n_tri": [0, 3, 8], "louvain": [0, 3, 4, 8], "evalu": [0, 3, 8], "100": [0, 3, 7, 8], "nvi": [0, 3, 6, 8], "comput": [0, 1, 3, 4, 8], "normal": [0, 1, 3, 4, 8], "variat": [0, 3, 8], "between": [0, 1, 3, 8], "n_nvi": [0, 8], "randomli": [0, 8], "chosen": [0, 4, 8], "estim": [0, 8], "postprocess": [0, 3, 8], "appli": [0, 2, 3, 4, 8], "final": [0, 3, 4, 8], "ttprime": [0, 3, 8], "spectral": [0, 1, 2, 8], "gap": [0, 1, 2, 8], "result_fil": [0, 8], "worker": [0, 8], "n_worker": [0, 3, 8], "multiprocess": [0, 8], "4": [0, 3, 4, 8], "tqdm": 0, "disabl": [0, 8], "tqdm_disabl": [0, 8], "progress": [0, 8], "bar": [0, 8], "fals": [0, 1, 7, 8], "method": [0, 1, 2, 4, 8], "solv": [0, 1, 4, 8], "modular": [0, 1, 4, 8], "leiden": [0, 4, 8], "optim": [0, 2, 3, 4, 7, 8], "search": [0, 6], "exp": [0, 1], "comp": 0, "mode": [0, 1, 8], "exp_comp_mod": [0, 1, 8], "exponenti": [0, 1, 4, 8], "can": [0, 1, 2, 3, 4, 8], "expm": [0, 1, 8], "creat": [1, 3], "null": [1, 4, 8], "model": [1, 3, 4, 8], "The": [1, 2, 3, 4, 8], "gener": [1, 2, 4, 8], "markov": [1, 2, 4, 6, 8], "stabil": [1, 2, 4, 6, 8], "i": [1, 2, 3, 4, 8], "given": [1, 4, 7], "q_": [1, 8], "gen": [1, 8], "t": [1, 2, 3, 4, 6, 8], "h": [1, 8], "mathrm": [1, 8], "tr": [1, 8], "left": [1, 8], "f": [1, 8], "sum_": [1, 8], "k": [1, 2, 3, 4, 8], "1": [1, 2, 3, 4, 6, 8], "m": [1, 2, 3, 4, 6, 8], "v_": [1, 8], "2k": [1, 8], "right": [1, 8], "where": [1, 8], "v_k": [1, 8], "vector": [1, 8], "In": [1, 4], "follow": [1, 4, 8], "we": [1, 3, 4, 6], "denot": 1, "A": [1, 3, 4], "out": [1, 4], "degre": 1, "d": [1, 4, 6], "boldsymbol": 1, "ones": 1, "diagon": [1, 6], "diag": 1, "pygenst": [1, 2, 5, 6, 7], "load_constructor": [1, 4], "kwarg": [1, 8], "sourc": [1, 4, 5, 6, 7, 8], "load": [1, 5], "from": [1, 2, 3, 5, 6, 7], "its": [1, 4, 6], "custom": [1, 2, 4, 8], "class": [1, 2], "with_spectral_gap": [1, 2, 8], "parent": 1, "thi": [1, 2, 3, 4, 8], "through": 1, "prepar": [1, 8], "independ": 1, "quantiti": 1, "get_data": 1, "return": [1, 3, 4, 6, 8], "possibl": [1, 2], "global": [1, 4], "shift": 1, "call": [1, 4, 6], "upon": 1, "paramet": [1, 2, 4, 6, 7, 8], "csgraph": [1, 3, 4, 8], "which": [1, 3, 4, 8], "run": [1, 3, 8], "cluster": [1, 2, 3, 7, 8], "bool": [1, 2, 7, 8], "set": [1, 3, 4, 8], "rescal": 1, "dict": [1, 2, 6, 7, 8], "ani": [1, 4], "other": [1, 3, 8], "properti": [1, 4], "pass": [1, 8], "str": [1, 2, 7, 8], "non": 1, "depend": [1, 4], "well": [1, 4], "none": [1, 3, 7, 8], "user": [1, 4, 8], "ha": [1, 4], "defin": [1, 4, 8], "_get_data": 1, "so": [1, 4], "enur": 1, "numpi": [1, 4, 7], "doe": [1, 4], "multipl": [1, 4], "thread": [1, 4], "constructor_linear": [1, 4], "continu": [1, 4], "frac": [1, 8], "2m": 1, "associ": [1, 4], "v_1": 1, "v_2": 1, "constructor_continuous_combinatori": [1, 4], "combinatori": [1, 3, 4], "pi": 1, "lt": [1, 3], "l": [1, 3, 4], "laplacian": [1, 3, 4], "constructor_continuous_norm": [1, 4], "random": [1, 4], "walk": [1, 4], "constructor_signed_modular": [1, 4], "sign": [1, 4], "implement": [1, 4], "equat": 1, "18": 1, "differ": [1, 3, 4], "standard": [1, 3], "base": [1, 2], "posit": [1, 2], "neg": 1, "refer": [1, 2, 6], "gomez": [1, 4], "": [1, 3, 4], "jensen": [1, 4], "p": [1, 2, 4], "arena": [1, 4], "2009": [1, 4], "analysi": [1, 2, 3, 4], "structur": [1, 3, 4, 7], "network": [1, 2, 3, 4, 6], "correl": [1, 2, 4], "data": [1, 2], "physic": [1, 4], "review": [1, 4], "e": [1, 4, 8], "80": [1, 4], "016114": [1, 4], "constructor_signed_combinatori": [1, 4], "d_": 1, "ab": [1, 4], "absolut": 1, "strength": 1, "zero": 1, "constructor_direct": [1, 4], "direct": [1, 4], "alpha": 1, "ident": 1, "transit": 1, "teleport": [1, 4], "damp": 1, "factor": 1, "le": 1, "eigenvector": 1, "relat": 1, "pagerank": 1, "ii": [1, 4], "d_i": 1, "dangl": 1, "a_i": 1, "otherwis": 1, "constructor_linearized_direct": [1, 4], "multiscal": [2, 3, 4, 6], "provid": [2, 4, 8], "an": [2, 4, 8], "param": 2, "metric": [2, 4], "distanc": 2, "function": [2, 4, 5, 7, 8], "braycurti": 2, "canberra": 2, "chebyshev": 2, "cityblock": 2, "cosin": 2, "dice": 2, "euclidean": 2, "ham": 2, "jaccard": 2, "jensenshannon": 2, "kulczynski1": 2, "mahalanobi": 2, "match": 2, "minkowski": 2, "rogerstanimoto": 2, "russellrao": 2, "seuclidean": 2, "sokalmichen": 2, "sokalsneath": 2, "sqeuclidean": 2, "yule": 2, "type": [2, 4, 6], "graph_method": [2, 4], "construct": [2, 4], "sampl": [2, 4], "featur": [2, 4], "knn": [2, 4], "mst": 2, "nearest": [2, 3, 4], "neighbor": [2, 4], "combin": 2, "miniumu": 2, "span": [2, 4], "tree": [2, 4], "cknn": [2, 4], "continun": 2, "precomput": [2, 3], "assum": 2, "alreadi": [2, 4], "consid": [2, 4], "expect": 2, "int": [2, 6, 7, 8], "delta": 2, "densiti": 2, "float": [2, 4, 6, 7, 8], "distance_threshold": 2, "threshold": [2, 6], "pgs_kwarg": 2, "document": [2, 3], "some": [2, 3, 4], "It": [2, 4, 8], "must": [2, 8], "have": [2, 4, 8], "two": [2, 4, 6, 8], "normalis": [2, 3, 8], "adjacency_": [2, 4], "shape": 2, "n_sampl": 2, "results_": [2, 4], "dictionari": [2, 6], "all": [2, 4, 7], "labels_": [2, 4], "list": [2, 4, 7, 8], "robust": [2, 3, 4, 6], "partit": [2, 3, 4, 6, 8], "identifi": [2, 3, 4, 6], "select": [2, 3, 4, 8], "ndarrai": [2, 7], "z": [2, 4], "liu": [2, 4], "via": [2, 4, 8], "detect": [2, 3, 4, 6, 8], "scienc": [2, 4], "vol": [2, 4], "3": [2, 3, 4, 6], "dec": [2, 4], "2020": [2, 4], "doi": [2, 4], "10": [2, 3, 4, 7], "1007": [2, 4], "s41109": [2, 4], "019": [2, 4], "0248": [2, 4], "7": [2, 3, 4], "berri": [2, 4], "sauer": [2, 4], "consist": [2, 4], "manifold": [2, 4], "represent": [2, 4], "topolog": [2, 4], "foundat": [2, 4], "38": [2, 4], "feb": [2, 4], "2019": [2, 4], "3934": [2, 4], "fod": [2, 4], "2019001": [2, 4], "illustr": [3, 4], "how": 3, "import": [3, 4], "matplotlib": [3, 4, 7], "pyplot": 3, "plt": [3, 7], "nx": 3, "scipi": [3, 4, 8], "sp": 3, "pg": [3, 4], "evaluate_nvi": [3, 4, 8], "multiscale_exampl": 3, "create_graph": 3, "stochast": [3, 4], "block": [3, 4, 6, 8], "plant": 3, "coarse_scale_id": 3, "middle_scale_id": 3, "fine_scale_id": 3, "g": [3, 4], "from_numpy_arrai": 3, "spring": 3, "layout": 3, "pos_g": 3, "spring_layout": 3, "seed": 3, "figur": [3, 4, 7], "imshow": 3, "interpol": 3, "imag": 3, "axesimag": 3, "0x125897010": 3, "gt": 3, "continuous_combinator": 3, "correspond": [3, 6, 8], "rang": [3, 4, 8], "time": [3, 4], "specifi": [3, 4, 8], "thei": 3, "avail": [3, 8], "csgraph_from_dens": 3, "25": 3, "75": 3, "50": 3, "continuous_combinatori": [3, 4], "info": 3, "00": 3, "02": 3, "17": 3, "93it": 3, "optimis": [3, 4, 8], "11": 3, "40it": 3, "05": 3, "9": [3, 4], "56it": 3, "analys": [3, 4], "plot_scan": [3, 4, 7], "show": [3, 7], "variou": [3, 4], "evalut": 3, "accro": 3, "algorithm": [3, 4, 8], "highlight": 3, "most": 3, "_": 3, "figure_nam": [3, 7], "optimal": 3, "determin": [3, 6], "plot_optimal_partit": [3, 4, 7], "compar": [3, 4, 8], "ground": 3, "truth": 3, "observ": 3, "recov": 3, "8": [3, 4], "def": 3, "_get_nvi": 3, "ref_id": 3, "community_id": [3, 8], "len": 3, "nvi_scores_fin": 3, "nvi_scores_middl": 3, "nvi_scores_coars": 3, "score": 3, "fig": 3, "ax": 3, "subplot": 3, "figsiz": [3, 7], "label": [3, 7, 8], "fine": 3, "middl": 3, "coars": 3, "selected_partit": [3, 6, 8], "axvlin": 3, "x": [3, 4], "color": [3, 7], "red": 3, "xlabel": 3, "r": [3, 4], "log_": 3, "ylabel": 3, "axhlin": 3, "c": [3, 4], "legend": 3, "loc": 3, "xscale": 3, "python": 4, "design": 4, "allow": 4, "resolut": 4, "sever": 4, "variant": 4, "cost": [4, 8], "diffus": 4, "process": 4, "explor": 4, "below": 4, "whilst": 4, "primarili": 4, "built": [4, 8], "intern": 4, "architectur": 4, "been": 4, "wide": 4, "sinc": 4, "To": 4, "maxim": 4, "conveni": 4, "further": 4, "specif": 4, "tool": 4, "facilit": 4, "automat": 4, "6": 4, "accompani": 4, "softwar": 4, "paper": 4, "detail": 4, "benchmark": 4, "applic": 4, "you": 4, "pypi": 4, "pip": 4, "fresh": 4, "python3": 4, "virtual": 4, "environ": 4, "conda": 4, "mai": 4, "recommend": 4, "avoid": 4, "conflict": 4, "By": 4, "plotli": [4, 7], "interact": 4, "browser": [4, 7], "also": 4, "directli": 4, "clone": 4, "repo": 4, "git": 4, "recurs": 4, "submodul": 4, "com": 4, "imperialcollegelondon": 4, "just": 4, "do": 4, "updat": 4, "init": 4, "fetch": 4, "schaub": 4, "wrapper": 4, "pybind11": 4, "pybind": 4, "simpli": 4, "within": 4, "directori": 4, "similar": 4, "abov": 4, "addit": [4, 8], "simpl": 4, "input": 4, "summari": 4, "present": 4, "measur": 4, "across": [4, 8], "valu": [4, 6, 8], "etc": 4, "although": 4, "enforc": 4, "advis": 4, "variabl": 4, "export": 4, "openblas_num_thread": 4, "omp_num_thread": 4, "numexpr_max_thread": 4, "ensur": 4, "multi": 4, "clash": 4, "parallelis": 4, "slow": 4, "down": 4, "There": 4, "varieti": 4, "choic": [4, 8], "make": 4, "impact": 4, "includ": [4, 8], "object": [4, 8], "modul": 4, "write": 4, "py": 4, "classic": 4, "np": 4, "hard": 4, "while": 4, "due": 4, "familiar": 4, "known": 4, "produc": 4, "better": 4, "post": 4, "autom": 4, "perform": [4, 8], "repeat": 4, "optimal_scal": [4, 6, 8], "reduc": 4, "nois": 4, "one": 4, "increas": 4, "block_siz": 4, "window_s": [4, 6], "nx_graph": 4, "identify_optimal_scal": [4, 6], "matric": 4, "larg": [4, 6], "undirect": 4, "continuous_norm": 4, "signed_modular": 4, "signed_combinatori": 4, "linearized_direct": 4, "For": 4, "computation": 4, "effici": 4, "instead": 4, "reli": 4, "those": 4, "wish": 4, "own": 4, "take": 4, "quality_matrix": 4, "null_model": 4, "arrai": [4, 7, 8], "come": 4, "form": [4, 7, 8], "approach": 4, "wa": 4, "shown": 4, "achiev": 4, "than": 4, "popular": 4, "without": 4, "extern": 4, "easi": 4, "data_clust": 4, "dataclust": 4, "fit": 4, "scale_select": 4, "kernel_s": [4, 6], "current": 4, "support": 4, "neighbour": 4, "dimension": 4, "coordin": 4, "point": 4, "plot_robust_partit": 4, "x_coord": 4, "y_coord": 4, "alexi": 4, "arnaudon": 4, "robert": 4, "peach": 4, "lucien": 4, "dominik": 4, "schindler": [4, 6], "alwai": 4, "look": 4, "individu": 4, "interest": 4, "contribut": 4, "open": [4, 7], "project": 4, "even": 4, "made": 4, "minor": 4, "would": 4, "your": 4, "pleas": 4, "work": 4, "articl": 4, "author": 4, "j": [4, 6], "gosztolai": 4, "adam": 4, "hodg": 4, "maxwel": 4, "michael": 4, "mauricio": 4, "titl": 4, "publish": 4, "arxiv": [4, 6], "year": 4, "2023": [4, 6], "48550": 4, "2303": 4, "05385": 4, "url": 4, "org": 4, "origin": 4, "delvenne2010st": 4, "delvenn": 4, "yaliraki": 4, "sophia": 4, "journal": 4, "proceed": 4, "nation": 4, "academi": 4, "volum": 4, "107": 4, "29": 4, "page": 4, "12755": 4, "12760": 4, "2010": 4, "acad": 4, "folder": [4, 7], "demo": 4, "script": 4, "simple_exampl": 4, "click": 4, "run_simple_exampl": 4, "sh": 4, "found": [4, 6], "jupyt": 4, "notebook": 4, "sbm": 4, "hypergraph": 4, "real": 4, "world": 4, "real_exampl": 4, "power": 4, "grid": 4, "protein": 4, "If": 4, "try": 4, "gdr": 4, "reclassif": 4, "methodologi": 4, "classif": 4, "semi": 4, "supervis": 4, "learn": 4, "hcga": 4, "highli": 4, "toolbox": 4, "massiv": 4, "extract": 4, "msc": 4, "central": 4, "dyngdim": 4, "dynam": 4, "dimens": 4, "rel": 4, "local": [4, 6], "complex": 4, "rmst": 4, "relax": 4, "sparsifi": 4, "retain": 4, "spatial": 4, "tempor": 4, "epidemiolog": 4, "proxim": 4, "characteris": 4, "contact": 4, "diseas": 4, "outbreak": 4, "pp": 4, "jul": 4, "1073": 4, "pna": 4, "0903215107": 4, "lambiott": 4, "organ": 4, "ieee": 4, "tran": 4, "netw": 4, "sci": 4, "eng": 4, "76": 4, "90": 4, "2014": 4, "1109": 4, "tnse": 4, "2015": 4, "2391998": 4, "embed": 4, "phy": 4, "rev": 4, "99": 4, "jun": 4, "1103": 4, "physrev": 4, "062308": 4, "v": 4, "blondel": 4, "guillaum": 4, "lefebvr": 4, "fast": [4, 8], "unfold": 4, "stat": 4, "mech": 4, "2008": 4, "oct": 4, "1088": 4, "1742": 4, "5468": 4, "p10008": 4, "traag": 4, "waltman": 4, "van": 4, "eck": 4, "guarante": 4, "connect": 4, "rep": 4, "5233": 4, "mar": 4, "1038": 4, "s41598": 4, "41695": 4, "clark": [4, 6], "mobil": [4, 6], "pattern": [4, 6], "restrict": [4, 6], "human": [4, 6], "movement": [4, 6], "royal": 4, "societi": 4, "230405": 4, "1098": 4, "rso": 4, "pre": 4, "print": 4, "program": 4, "free": 4, "redistribut": 4, "modifi": 4, "under": 4, "term": 4, "gnu": 4, "public": 4, "licens": 4, "version": 4, "later": 4, "distribut": 4, "hope": 4, "warranti": 4, "impli": 4, "merchant": 4, "FOR": 4, "particular": 4, "purpos": 4, "should": 4, "receiv": 4, "copi": 4, "along": 4, "www": 4, "cli": 4, "plot_scan_plotli": [4, 7], "plot_single_partit": [4, 7], "plot_commun": [4, 7], "plot_communities_matrix": [4, 7], "plot_scan_plt": [4, 7], "plot_clustered_adjac": [4, 7], "o": 4, "save_result": [4, 5], "load_result": [4, 5], "all_result": [5, 7], "filenam": [5, 7], "save": [5, 7], "pickl": 5, "max_nvi": 6, "basin_radiu": 6, "sequenti": 6, "wai": 6, "low": 6, "locat": 6, "minima": 6, "pool": 6, "curv": [6, 8], "obtain": 6, "basin": 6, "fix": 6, "radiu": 6, "around": 6, "each": [6, 7, 8], "calcul": 6, "size": [6, 7], "kernel": 6, "averag": 6, "window": 6, "move": 6, "mean": 6, "smooth": 6, "block_detection_curv": [6, 8], "new": 6, "kei": 6, "2201": 6, "06323": 6, "scale_axi": 7, "scan_result": 7, "pdf": 7, "use_plotli": 7, "live": 7, "plotly_filenam": 7, "html": 7, "displai": 7, "index": 7, "axi": 7, "backend": 7, "pot": 7, "scale_id": 7, "edge_color": 7, "edge_width": 7, "node_s": 7, "width": 7, "ext": 7, "extens": 7, "optimal_partit": 7, "communities_matrix": 7, "clustr": 7, "svg": 7, "12": 7, "cmap": 7, "blue": 7, "clustered_adjac": 7, "tubpl": 7, "colormap": 7, "element": 7, "code": 8, "arbitrari": 8, "parametris": 8, "with_nvi": 8, "with_postprocess": 8, "with_ttprim": 8, "with_optimal_scal": 8, "optimal_scales_kwarg": 8, "constructor_kwarg": 8, "main": 8, "ad": 8, "trial": 8, "cannot": 8, "overrid": 8, "tprime": 8, "optimi": 8, "entri": 8, "run_param": 8, "number_of_commun": 8, "index_pair": 8, "p1": 8, "p2": 8, "2mi": 8, "je": 8, "entropi": 8, "joint": 8, "mi": 8, "mutual": 8, "pair": 8}, "objects": {"pygenstability": [[2, 0, 0, "-", "DataClustering"], [0, 0, 0, "-", "app"], [1, 0, 0, "-", "constructors"], [5, 0, 0, "-", "io"], [6, 0, 0, "-", "optimal_scales"], [7, 0, 0, "-", "plotting"], [8, 0, 0, "-", "pygenstability"]], "pygenstability.DataClustering": [[2, 1, 1, "", "adjacency_"], [2, 1, 1, "", "labels_"], [2, 1, 1, "", "results_"]], "pygenstability.constructors": [[1, 2, 1, "", "Constructor"], [1, 2, 1, "", "constructor_continuous_combinatorial"], [1, 2, 1, "", "constructor_continuous_normalized"], [1, 2, 1, "", "constructor_directed"], [1, 2, 1, "", "constructor_linearized"], [1, 2, 1, "", "constructor_linearized_directed"], [1, 2, 1, "", "constructor_signed_combinatorial"], [1, 2, 1, "", "constructor_signed_modularity"], [1, 4, 1, "", "load_constructor"]], "pygenstability.constructors.Constructor": [[1, 3, 1, "", "get_data"], [1, 3, 1, "", "prepare"]], "pygenstability.constructors.constructor_continuous_combinatorial": [[1, 3, 1, "", "prepare"]], "pygenstability.constructors.constructor_continuous_normalized": [[1, 3, 1, "", "prepare"]], "pygenstability.constructors.constructor_directed": [[1, 3, 1, "", "prepare"]], "pygenstability.constructors.constructor_linearized": [[1, 3, 1, "", "prepare"]], "pygenstability.constructors.constructor_linearized_directed": [[1, 3, 1, "", "prepare"]], "pygenstability.constructors.constructor_signed_combinatorial": [[1, 3, 1, "", "get_data"], [1, 3, 1, "", "prepare"]], "pygenstability.constructors.constructor_signed_modularity": [[1, 3, 1, "", "prepare"]], "pygenstability.io": [[5, 4, 1, "", "load_results"], [5, 4, 1, "", "save_results"]], "pygenstability.optimal_scales": [[6, 4, 1, "", "identify_optimal_scales"]], "pygenstability.plotting": [[7, 4, 1, "", "plot_clustered_adjacency"], [7, 4, 1, "", "plot_communities"], [7, 4, 1, "", "plot_communities_matrix"], [7, 4, 1, "", "plot_optimal_partitions"], [7, 4, 1, "", "plot_scan"], [7, 4, 1, "", "plot_scan_plotly"], [7, 4, 1, "", "plot_scan_plt"], [7, 4, 1, "", "plot_single_partition"]], "pygenstability.pygenstability": [[8, 4, 1, "", "evaluate_NVI"], [8, 4, 1, "", "run"]], "cli-plot_communities": [[0, 5, 1, "cmdoption-cli-plot_communities-arg-GRAPH_FILE", "GRAPH_FILE"], [0, 5, 1, "cmdoption-cli-plot_communities-arg-RESULTS_FILE", "RESULTS_FILE"]], "cli-plot_scan": [[0, 5, 1, "cmdoption-cli-plot_scan-arg-RESULTS_FILE", "RESULTS_FILE"]], "cli-run": [[0, 5, 1, "cmdoption-cli-run-NVI", "--NVI"], [0, 5, 1, "cmdoption-cli-run-constructor", "--constructor"], [0, 5, 1, "cmdoption-cli-run-exp-comp-mode", "--exp-comp-mode"], [0, 5, 1, "cmdoption-cli-run-log-scale", "--log-scale"], [0, 5, 1, "cmdoption-cli-run-max-scale", "--max-scale"], [0, 5, 1, "cmdoption-cli-run-method", "--method"], [0, 5, 1, "cmdoption-cli-run-min-scale", "--min-scale"], [0, 5, 1, "cmdoption-cli-run-n-NVI", "--n-NVI"], [0, 5, 1, "cmdoption-cli-run-n-scale", "--n-scale"], [0, 5, 1, "cmdoption-cli-run-n-tries", "--n-tries"], [0, 5, 1, "cmdoption-cli-run-n-workers", "--n-workers"], [0, 5, 1, "cmdoption-cli-run-NVI", "--no-NVI"], [0, 5, 1, "cmdoption-cli-run-postprocessing", "--no-postprocessing"], [0, 5, 1, "cmdoption-cli-run-spectral-gap", "--no-spectral-gap"], [0, 5, 1, "cmdoption-cli-run-ttprime", "--no-ttprime"], [0, 5, 1, "cmdoption-cli-run-with-optimal-scales", "--no-with-optimal-scales"], [0, 5, 1, "cmdoption-cli-run-postprocessing", "--postprocessing"], [0, 5, 1, "cmdoption-cli-run-result-file", "--result-file"], [0, 5, 1, "cmdoption-cli-run-spectral-gap", "--spectral-gap"], [0, 5, 1, "cmdoption-cli-run-tqdm-disable", "--tqdm-disable"], [0, 5, 1, "cmdoption-cli-run-ttprime", "--ttprime"], [0, 5, 1, "cmdoption-cli-run-with-optimal-scales", "--with-optimal-scales"], [0, 5, 1, "cmdoption-cli-run-arg-GRAPH_FILE", "GRAPH_FILE"]]}, "objtypes": {"0": "py:module", "1": "py:attribute", "2": "py:class", "3": "py:method", "4": "py:function", "5": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "attribute", "Python attribute"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["std", "cmdoption", "program option"]}, "titleterms": {"The": 0, "pygenst": [0, 3, 4, 8], "cli": 0, "plot_commun": 0, "plot_scan": 0, "run": [0, 4], "constructor": [1, 4], "modul": [1, 2, 5, 6, 7, 8], "dataclust": 2, "exampl": [3, 4], "markov": 3, "stabil": 3, "instal": 4, "from": 4, "github": 4, "us": 4, "code": 4, "graph": 4, "base": 4, "data": 4, "cluster": 4, "contributor": 4, "cite": 4, "our": 4, "other": 4, "avail": 4, "packag": 4, "refer": 4, "licenc": 4, "api": 4, "document": 4, "i": 5, "o": 5, "optim": 6, "scale": 6, "plot": 7}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"The pygenstability cli": [[0, "module-pygenstability.app"]], "cli": [[0, "cli"]], "plot_communities": [[0, "cli-plot-communities"]], "plot_scan": [[0, "cli-plot-scan"]], "run": [[0, "cli-run"]], "Constructors module": [[1, "module-pygenstability.constructors"]], "DataClustering module": [[2, "module-pygenstability.DataClustering"]], "Example: Markov Stability with PyGenStability": [[3, "Example:-Markov-Stability-with-PyGenStability"]], "PyGenStability": [[4, "pygenstability"]], "Installation": [[4, "installation"]], "Installation from GitHub": [[4, "installation-from-github"]], "Using the code": [[4, "using-the-code"]], "Constructors": [[4, "constructors"]], "Graph-based data clustering": [[4, "graph-based-data-clustering"]], "Contributors": [[4, "contributors"]], "Cite": [[4, "cite"]], "Run example": [[4, "run-example"]], "Our other available packages": [[4, "our-other-available-packages"]], "References": [[4, "references"]], "Licence": [[4, "licence"]], "API documentation": [[4, "api-documentation"]], "I/O module": [[5, "module-pygenstability.io"]], "Optimal scales module": [[6, "module-pygenstability.optimal_scales"]], "Plotting module": [[7, "module-pygenstability.plotting"]], "PyGenStability module": [[8, "module-pygenstability.pygenstability"]]}, "indexentries": {"--nvi": [[0, "cmdoption-cli-run-NVI"]], "--constructor": [[0, "cmdoption-cli-run-constructor"]], "--exp-comp-mode": [[0, "cmdoption-cli-run-exp-comp-mode"]], "--log-scale": [[0, "cmdoption-cli-run-log-scale"]], "--max-scale": [[0, "cmdoption-cli-run-max-scale"]], "--method": [[0, "cmdoption-cli-run-method"]], "--min-scale": [[0, "cmdoption-cli-run-min-scale"]], "--n-nvi": [[0, "cmdoption-cli-run-n-NVI"]], "--n-scale": [[0, "cmdoption-cli-run-n-scale"]], "--n-tries": [[0, "cmdoption-cli-run-n-tries"]], "--n-workers": [[0, "cmdoption-cli-run-n-workers"]], "--no-nvi": [[0, "cmdoption-cli-run-NVI"]], "--no-postprocessing": [[0, "cmdoption-cli-run-postprocessing"]], "--no-spectral-gap": [[0, "cmdoption-cli-run-spectral-gap"]], "--no-ttprime": [[0, "cmdoption-cli-run-ttprime"]], "--no-with-optimal-scales": [[0, "cmdoption-cli-run-with-optimal-scales"]], "--postprocessing": [[0, "cmdoption-cli-run-postprocessing"]], "--result-file": [[0, "cmdoption-cli-run-result-file"]], "--spectral-gap": [[0, "cmdoption-cli-run-spectral-gap"]], "--tqdm-disable": [[0, "cmdoption-cli-run-tqdm-disable"]], "--ttprime": [[0, "cmdoption-cli-run-ttprime"]], "--with-optimal-scales": [[0, "cmdoption-cli-run-with-optimal-scales"]], "graph_file": [[0, "cmdoption-cli-plot_communities-arg-GRAPH_FILE"], [0, "cmdoption-cli-run-arg-GRAPH_FILE"]], "results_file": [[0, "cmdoption-cli-plot_communities-arg-RESULTS_FILE"], [0, "cmdoption-cli-plot_scan-arg-RESULTS_FILE"]], "cli-plot_communities command line option": [[0, "cmdoption-cli-plot_communities-arg-GRAPH_FILE"], [0, "cmdoption-cli-plot_communities-arg-RESULTS_FILE"]], "cli-plot_scan command line option": [[0, "cmdoption-cli-plot_scan-arg-RESULTS_FILE"]], "cli-run command line option": [[0, "cmdoption-cli-run-NVI"], [0, "cmdoption-cli-run-arg-GRAPH_FILE"], [0, "cmdoption-cli-run-constructor"], [0, "cmdoption-cli-run-exp-comp-mode"], [0, "cmdoption-cli-run-log-scale"], [0, "cmdoption-cli-run-max-scale"], [0, "cmdoption-cli-run-method"], [0, "cmdoption-cli-run-min-scale"], [0, "cmdoption-cli-run-n-NVI"], [0, "cmdoption-cli-run-n-scale"], [0, "cmdoption-cli-run-n-tries"], [0, "cmdoption-cli-run-n-workers"], [0, "cmdoption-cli-run-postprocessing"], [0, "cmdoption-cli-run-result-file"], [0, "cmdoption-cli-run-spectral-gap"], [0, "cmdoption-cli-run-tqdm-disable"], [0, "cmdoption-cli-run-ttprime"], [0, "cmdoption-cli-run-with-optimal-scales"]], "module": [[0, "module-pygenstability.app"], [1, "module-pygenstability.constructors"], [2, "module-pygenstability.DataClustering"], [5, "module-pygenstability.io"], [6, "module-pygenstability.optimal_scales"], [7, "module-pygenstability.plotting"], [8, "module-pygenstability.pygenstability"]], "pygenstability.app": [[0, "module-pygenstability.app"]], "constructor (class in pygenstability.constructors)": [[1, "pygenstability.constructors.Constructor"]], "constructor_continuous_combinatorial (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_continuous_combinatorial"]], "constructor_continuous_normalized (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_continuous_normalized"]], "constructor_directed (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_directed"]], "constructor_linearized (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_linearized"]], "constructor_linearized_directed (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_linearized_directed"]], "constructor_signed_combinatorial (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_signed_combinatorial"]], "constructor_signed_modularity (class in pygenstability.constructors)": [[1, "pygenstability.constructors.constructor_signed_modularity"]], "get_data() (pygenstability.constructors.constructor method)": [[1, "pygenstability.constructors.Constructor.get_data"]], "get_data() (pygenstability.constructors.constructor_signed_combinatorial method)": [[1, "pygenstability.constructors.constructor_signed_combinatorial.get_data"]], "load_constructor() (in module pygenstability.constructors)": [[1, "pygenstability.constructors.load_constructor"]], "prepare() (pygenstability.constructors.constructor method)": [[1, "pygenstability.constructors.Constructor.prepare"]], "prepare() (pygenstability.constructors.constructor_continuous_combinatorial method)": [[1, "pygenstability.constructors.constructor_continuous_combinatorial.prepare"]], "prepare() (pygenstability.constructors.constructor_continuous_normalized method)": [[1, "pygenstability.constructors.constructor_continuous_normalized.prepare"]], "prepare() (pygenstability.constructors.constructor_directed method)": [[1, "pygenstability.constructors.constructor_directed.prepare"]], "prepare() (pygenstability.constructors.constructor_linearized method)": [[1, "pygenstability.constructors.constructor_linearized.prepare"]], "prepare() (pygenstability.constructors.constructor_linearized_directed method)": [[1, "pygenstability.constructors.constructor_linearized_directed.prepare"]], "prepare() (pygenstability.constructors.constructor_signed_combinatorial method)": [[1, "pygenstability.constructors.constructor_signed_combinatorial.prepare"]], "prepare() (pygenstability.constructors.constructor_signed_modularity method)": [[1, "pygenstability.constructors.constructor_signed_modularity.prepare"]], "pygenstability.constructors": [[1, "module-pygenstability.constructors"]], "adjacency_ (in module pygenstability.dataclustering)": [[2, "pygenstability.DataClustering.adjacency_"]], "labels_ (in module pygenstability.dataclustering)": [[2, "pygenstability.DataClustering.labels_"]], "pygenstability.dataclustering": [[2, "module-pygenstability.DataClustering"]], "results_ (in module pygenstability.dataclustering)": [[2, "pygenstability.DataClustering.results_"]], "load_results() (in module pygenstability.io)": [[5, "pygenstability.io.load_results"]], "pygenstability.io": [[5, "module-pygenstability.io"]], "save_results() (in module pygenstability.io)": [[5, "pygenstability.io.save_results"]], "identify_optimal_scales() (in module pygenstability.optimal_scales)": [[6, "pygenstability.optimal_scales.identify_optimal_scales"]], "pygenstability.optimal_scales": [[6, "module-pygenstability.optimal_scales"]], "plot_clustered_adjacency() (in module pygenstability.plotting)": [[7, "pygenstability.plotting.plot_clustered_adjacency"]], "plot_communities() (in module pygenstability.plotting)": [[7, "pygenstability.plotting.plot_communities"]], "plot_communities_matrix() (in module pygenstability.plotting)": [[7, "pygenstability.plotting.plot_communities_matrix"]], "plot_optimal_partitions() (in module pygenstability.plotting)": [[7, "pygenstability.plotting.plot_optimal_partitions"]], "plot_scan() (in module pygenstability.plotting)": [[7, "pygenstability.plotting.plot_scan"]], "plot_scan_plotly() (in module pygenstability.plotting)": [[7, "pygenstability.plotting.plot_scan_plotly"]], "plot_scan_plt() (in module pygenstability.plotting)": [[7, "pygenstability.plotting.plot_scan_plt"]], "plot_single_partition() (in module pygenstability.plotting)": [[7, "pygenstability.plotting.plot_single_partition"]], "pygenstability.plotting": [[7, "module-pygenstability.plotting"]], "evaluate_nvi() (in module pygenstability.pygenstability)": [[8, "pygenstability.pygenstability.evaluate_NVI"]], "pygenstability.pygenstability": [[8, "module-pygenstability.pygenstability"]], "run() (in module pygenstability.pygenstability)": [[8, "pygenstability.pygenstability.run"]]}})
\ No newline at end of file