diff --git a/_modules/pygenstability/constructors.html b/_modules/pygenstability/constructors.html index f5290b5..0f89f94 100644 --- a/_modules/pygenstability/constructors.html +++ b/_modules/pygenstability/constructors.html @@ -251,8 +251,8 @@
def _compute_spectral_decomp(matrix):
- """Solve eigenalue problem."""
- lambdas, v = la.eig(matrix.toarray())
+ """Solve eigenalue problem for symmetric matrix."""
+ lambdas, v = la.eigh(matrix.toarray())
vinv = la.inv(v.real)
return lambdas.real, v.real, vinv
@@ -366,14 +366,20 @@ Source code for pygenstability.constructors
[docs]class constructor_continuous_combinatorial(Constructor):
r"""Constructor for continuous combinatorial Markov Stability.
- The quality matrix is:
+ This implementation follows equation (16) in [1]_. The quality matrix is:
.. math::
- F(t) = \Pi\exp(-Lt)
+ F(t) = \Pi\exp(-tL/<d>)
- where :math:`L=D-A` is the combinatorial Laplacian and :math:`\Pi=\mathrm{diag}(\pi)`,
+ where :math:`<d>=(\boldsymbol{1}^T D \boldsymbol{1})/N` is the average degree,
+ :math:`L=D-A` is the combinatorial Laplacian and :math:`\Pi=\mathrm{diag}(\pi)`,
with null model :math:`v_1=v_2=\pi=\frac{\boldsymbol{1}}{N}`.
+
+ References:
+ .. [1] Lambiotte, R., Delvenne, J.-C., & Barahona, M. (2019). Random Walks, Markov
+ Processes and the Multiscale Modular Organization of Complex Networks.
+ IEEE Trans. Netw. Sci. Eng., 1(2), p. 76-90.
"""
[docs] @_limit_numpy
@@ -406,11 +412,11 @@ Source code for pygenstability.constructors
[docs]class constructor_continuous_normalized(Constructor):
r"""Constructor for continuous normalized Markov Stability.
- The quality matrix is:
+ This implementation follows equation (10) in [1]_. The quality matrix is:
.. math::
- F(t) = \Pi\exp(-Lt)
+ F(t) = \Pi\exp(-tL)
where :math:`L=D^{-1}(D-A)` is the random-walk normalized Laplacian and
:math:`\Pi=\mathrm{diag}(\pi)` with null model :math:`v_1=v_2=\pi=\frac{d}{2M}`.
@@ -448,12 +454,12 @@ Source code for pygenstability.constructors
[docs]class constructor_signed_modularity(Constructor):
"""Constructor of signed modularity.
- This implementation is equation (18) of [1]_, where quality is the adjacency matrix and
+ This implementation is equation (18) of [2]_, where quality is the adjacency matrix and
the null model is the difference between the standard modularity null models based on
positive and negative degree vectors.
References:
- .. [1] Gomez, S., Jensen, P., & Arenas, A. (2009). Analysis of community structure in
+ .. [2] Gomez, S., Jensen, P., & Arenas, A. (2009). Analysis of community structure in
networks of correlated data. Physical Review E, 80(1), 016114.
"""
@@ -491,16 +497,20 @@ Source code for pygenstability.constructors
[docs]class constructor_signed_combinatorial(Constructor):
r"""Constructor for continuous signed combinatorial Markov Stability.
- The quality matrix is:
+ This implementation follows equation (19) in [3]_. The quality matrix is:
.. math::
- F(t) = \exp(-Lt)^T\exp(-Lt)
+ F(t) = \exp(-tL)^T\exp(-tL)
where :math:`L=D_{\mathrm{abs}}-A` is the signed combinatorial Laplacian,
:math:`D_{\mathrm{abs}}=\mathrm{diag}(d_\mathrm{abs})` the diagonal matrix of absolute node
strengths :math:`d_\mathrm{abs}`, and the associated null model is given by
:math:`v_1=v_2=\boldsymbol{0}`, where :math:`\boldsymbol{0}` is the vector of zeros.
+
+ References:
+ .. [3] Schaub, M., Delvenne, J.-C., Lambiotte, R., & Barahona, M. (2019). Multiscale
+ dynamical embeddings of complex networks. Physical Review E, 99(6), 062308.
"""
[docs] def prepare(self, **kwargs):
@@ -535,7 +545,8 @@ Source code for pygenstability.constructors
where :math:`I` denotes the identity matrix, :math:`M(\alpha)` is the transition matrix of a
random walk with teleportation and damping factor :math:`0\le \alpha < 1`, and
:math:`\Pi=\mathrm{diag}(\pi)` for the associated null model :math:`v_1=v_2=\pi` given by the
- eigenvector solving :math:`\pi M(\alpha) = \pi`, which is related to PageRank.
+ eigenvector solving :math:`\pi M(\alpha) = \pi`, which is related to PageRank. See [1]_ for
+ details.
The transition matrix :math:`M(\alpha)` is given by
@@ -552,7 +563,9 @@ Source code for pygenstability.constructors
[docs] @_limit_numpy
def prepare(self, **kwargs):
"""Prepare the constructor with non-scale dependent computations."""
- assert self.exp_comp_mode == "expm"
+ assert (
+ self.exp_comp_mode == "expm"
+ ), 'exp_comp_mode="expm" is required for "constructor_directed"'
alpha = kwargs.get("alpha", 0.8)
n_nodes = self.graph.shape[0]
diff --git a/_modules/pygenstability/optimal_scales.html b/_modules/pygenstability/optimal_scales.html
index 853b0cb..45ebca1 100644
--- a/_modules/pygenstability/optimal_scales.html
+++ b/_modules/pygenstability/optimal_scales.html
@@ -231,7 +231,12 @@ Source code for pygenstability.optimal_scales
)
shape_w = (output_shape[0], output_shape[1], kernel_size, kernel_size)
# pylint: disable=unsubscriptable-object
- strides_w = (stride * A.strides[0], stride * A.strides[1], A.strides[0], A.strides[1])
+ strides_w = (
+ stride * A.strides[0],
+ stride * A.strides[1],
+ A.strides[0],
+ A.strides[1],
+ )
A_w = as_strided(A, shape_w, strides_w)
# Return the result of pooling
@@ -255,7 +260,7 @@ Source code for pygenstability.optimal_scales
basin_radius (int): radius of basin around local minima of the pooled diagonal
Returns:
- result dictionary with two new keys: 'selected_partitions' and 'block_detection_curve'
+ result dictionary with two new keys: 'selected_partitions' and 'block_nvi'
References:
.. [1] D. J. Schindler, J. Clarke, and M. Barahona, 'Multiscale Mobility Patterns and
@@ -272,23 +277,21 @@ Source code for pygenstability.optimal_scales
diagonal = np.diag(nvi_tt_pooled)[: len(nvi_t)]
# smooth diagonal with moving window
- block_detection_curve = np.roll(
+ block_nvi = np.roll(
np.asarray(pd.Series(diagonal).rolling(window=window_size, win_type="triang").mean()),
-int(window_size / 2),
)
- results["block_detection_curve"] = block_detection_curve
+ results["block_nvi"] = block_nvi
# find local minima on diagonal of pooled NVI(s,s')
- basin_centers, _ = find_peaks(-block_detection_curve, height=-max_nvi)
+ basin_centers, _ = find_peaks(-block_nvi, height=-max_nvi)
# add robust scales located in large 0 margins
- not_nan_ind = np.argwhere(~np.isnan(block_detection_curve)).flatten()
+ not_nan_ind = np.argwhere(~np.isnan(block_nvi)).flatten()
if (
np.count_nonzero(
- np.around(
- block_detection_curve[not_nan_ind[0] : not_nan_ind[0] + 2 * basin_radius + 1], 5
- )
+ np.around(block_nvi[not_nan_ind[0] : not_nan_ind[0] + 2 * basin_radius + 1], 5)
)
== 0
):
@@ -296,9 +299,7 @@ Source code for pygenstability.optimal_scales
if (
np.count_nonzero(
- np.around(
- block_detection_curve[not_nan_ind[-1] - 2 * basin_radius : not_nan_ind[-1] + 1], 5
- )
+ np.around(block_nvi[not_nan_ind[-1] - 2 * basin_radius : not_nan_ind[-1] + 1], 5)
)
== 0
):
diff --git a/_modules/pygenstability/plotting.html b/_modules/pygenstability/plotting.html
index a8f6046..a3b4969 100644
--- a/_modules/pygenstability/plotting.html
+++ b/_modules/pygenstability/plotting.html
@@ -229,6 +229,7 @@ Source code for pygenstability.plotting
[docs]def plot_scan(
all_results,
+ figsize=(6, 5),
scale_axis=True,
figure_name="scan_results.pdf",
use_plotly=False,
@@ -239,6 +240,7 @@ Source code for pygenstability.plotting
Args:
all_results (dict): results of pygenstability scan
+ figsize (tuple): matplotlib figure size
scale_axis (bool): display scale of scale index on scale axis
figure_name (str): name of matplotlib figure
use_plotly (bool): use matplotlib or plotly backend
@@ -252,7 +254,9 @@ Source code for pygenstability.plotting
if use_plotly:
return plot_scan_plotly(all_results, live=live, filename=plotly_filename)
- return plot_scan_plt(all_results, scale_axis=scale_axis, figure_name=figure_name)
+ return plot_scan_plt(
+ all_results, figsize=figsize, scale_axis=scale_axis, figure_name=figure_name
+ )
[docs]def plot_scan_plotly( # pylint: disable=too-many-branches,too-many-statements,too-many-locals
@@ -461,7 +465,11 @@ Source code for pygenstability.plotting
for optimal_scale_id in selected_scales:
plot_single_partition(
- graph, all_results, optimal_scale_id, edge_color=edge_color, edge_width=edge_width
+ graph,
+ all_results,
+ optimal_scale_id,
+ edge_color=edge_color,
+ edge_width=edge_width,
)
plt.savefig(f"{folder}/scale_{optimal_scale_id}{ext}", bbox_inches="tight")
if show: # pragma: no cover
@@ -469,7 +477,12 @@ Source code for pygenstability.plotting
[docs]def plot_communities(
- graph, all_results, folder="communities", edge_color="0.5", edge_width=0.5, ext=".pdf"
+ graph,
+ all_results,
+ folder="communities",
+ edge_color="0.5",
+ edge_width=0.5,
+ ext=".pdf",
):
"""Plot the community structures at each scale in a folder.
@@ -592,7 +605,7 @@ Source code for pygenstability.plotting
"""Plot stability."""
ax.plot(
scales,
- all_results["block_detection_curve"],
+ all_results["block_nvi"],
"-",
lw=2.0,
c="C4",
@@ -600,7 +613,7 @@ Source code for pygenstability.plotting
)
ax.plot(
scales[all_results["selected_partitions"]],
- all_results["block_detection_curve"][all_results["selected_partitions"]],
+ all_results["block_nvi"][all_results["selected_partitions"]],
"o",
lw=2.0,
c="C4",
@@ -618,9 +631,10 @@ Source code for pygenstability.plotting
ax2.axvline(scale, ls="--", color="C4")
-[docs]def plot_scan_plt(all_results, scale_axis=True, figure_name="scan_results.svg"):
+[docs]def plot_scan_plt(all_results, figsize=(6, 5), scale_axis=True, figure_name="scan_results.svg"):
"""Plot results of pygenstability with matplotlib."""
scales = _get_scales(all_results, scale_axis=scale_axis)
+ plt.figure(figsize=figsize)
gs = gridspec.GridSpec(3, 1, height_ratios=[0.5, 1.0, 0.5])
gs.update(hspace=0)
axes = []
@@ -654,7 +668,7 @@ Source code for pygenstability.plotting
_plot_number_comm(all_results, ax=ax3, scales=scales)
axes.append(ax3)
- if "block_detection_curve" in all_results:
+ if "block_nvi" in all_results:
ax4 = plt.subplot(gs[2, 0])
_plot_optimal_scales(all_results, ax=ax4, scales=scales, ax1=ax1, ax2=ax2)
axes.append(ax4)
diff --git a/_modules/pygenstability/pygenstability.html b/_modules/pygenstability/pygenstability.html
index b6902bf..8a53b64 100644
--- a/_modules/pygenstability/pygenstability.html
+++ b/_modules/pygenstability/pygenstability.html
@@ -341,6 +341,7 @@ Source code for pygenstability.pygenstability
log_scale=True,
scales=None,
n_tries=100,
+ with_all_tries=False,
with_NVI=True,
n_NVI=20,
with_postprocessing=True,
@@ -375,6 +376,8 @@ Source code for pygenstability.pygenstability
log_scale (bool): use linear or log scales for scales
scales (array): custom scale vector, if provided, it will override the other scale arguments
n_tries (int): number of generalized Markov Stability optimisation evaluations
+ with_all_tries (bools): store all partitions with stability values found in different
+ optimisation evaluations
with_NVI (bool): compute NVI(t) between generalized Markov Stability optimisations
at each scale t
n_NVI (int): number of randomly chosen generalized Markov Stability optimisations
@@ -399,10 +402,13 @@ Source code for pygenstability.pygenstability
- '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
+ - 'all_tries': all community node labels with stability values found in different
+ optimisation evaluations at each scale (included if with_all_tries==True)
- 'NVI': NVI(t) at each scale
- 'ttprime': NVI(t,tprime) matrix
- - 'block_detection_curve': block detection curve (included if with_optimal_scales==True)
+ - 'block_nvi': block NVI 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())
@@ -447,6 +453,9 @@ Source code for pygenstability.pygenstability
if with_NVI:
_compute_NVI(communities, all_results, pool, n_partitions=min(n_NVI, n_tries))
+ if with_all_tries:
+ all_results["all_tries"].append(results)
+
save_results(all_results, filename=result_file)
if with_postprocessing:
diff --git a/constructors.html b/constructors.html
index b84bdca..ecc9aec 100644
--- a/constructors.html
+++ b/constructors.html
@@ -282,13 +282,24 @@
class pygenstability.constructors.constructor_continuous_combinatorial(graph, with_spectral_gap=False, exp_comp_mode='spectral', **kwargs)[source]#
Constructor for continuous combinatorial Markov Stability.
-The quality matrix is:
+This implementation follows equation (16) in [1]. The quality matrix is:
-\[F(t) = \Pi\exp(-Lt)\]
+\[F(t) = \Pi\exp(-tL/<d>)\]
-where \(L=D-A\) is the combinatorial Laplacian and \(\Pi=\mathrm{diag}(\pi)\),
+
where \(<d>=(\boldsymbol{1}^T D \boldsymbol{1})/N\) is the average degree,
+\(L=D-A\) is the combinatorial Laplacian and \(\Pi=\mathrm{diag}(\pi)\),
with null model \(v_1=v_2=\pi=\frac{\boldsymbol{1}}{N}\).
+References
+
The constructor calls the prepare method upon initialisation.
- Parameters:
@@ -312,10 +323,10 @@
-
class pygenstability.constructors.constructor_continuous_normalized(graph, with_spectral_gap=False, exp_comp_mode='spectral', **kwargs)[source]#
Constructor for continuous normalized Markov Stability.
-The quality matrix is:
+This implementation follows equation (10) in [1]. The quality matrix is:
-\[F(t) = \Pi\exp(-Lt)\]
+\[F(t) = \Pi\exp(-tL)\]
where \(L=D^{-1}(D-A)\) is the random-walk normalized Laplacian and
\(\Pi=\mathrm{diag}(\pi)\) with null model \(v_1=v_2=\pi=\frac{d}{2M}\).
@@ -342,13 +353,13 @@
class pygenstability.constructors.constructor_signed_modularity(graph, with_spectral_gap=False, exp_comp_mode='spectral', **kwargs)[source]#
Constructor of signed modularity.
-This implementation is equation (18) of [1], where quality is the adjacency matrix and
+
This implementation is equation (18) of [2], where quality is the adjacency matrix and
the null model is the difference between the standard modularity null models based on
positive and negative degree vectors.
References
-
-[1]
+
+[2]
Gomez, S., Jensen, P., & Arenas, A. (2009). Analysis of community structure in
networks of correlated data. Physical Review E, 80(1), 016114.
@@ -376,15 +387,23 @@
class pygenstability.constructors.constructor_signed_combinatorial(graph, with_spectral_gap=False, exp_comp_mode='spectral', **kwargs)[source]#
Constructor for continuous signed combinatorial Markov Stability.
-The quality matrix is:
+This implementation follows equation (19) in [3]. The quality matrix is:
-\[F(t) = \exp(-Lt)^T\exp(-Lt)\]
+\[F(t) = \exp(-tL)^T\exp(-tL)\]
where \(L=D_{\mathrm{abs}}-A\) is the signed combinatorial Laplacian,
\(D_{\mathrm{abs}}=\mathrm{diag}(d_\mathrm{abs})\) the diagonal matrix of absolute node
strengths \(d_\mathrm{abs}\), and the associated null model is given by
\(v_1=v_2=\boldsymbol{0}\), where \(\boldsymbol{0}\) is the vector of zeros.
+References
+
+
+[3]
+Schaub, M., Delvenne, J.-C., Lambiotte, R., & Barahona, M. (2019). Multiscale
+dynamical embeddings of complex networks. Physical Review E, 99(6), 062308.
+
+
The constructor calls the prepare method upon initialisation.
- Parameters:
@@ -422,7 +441,8 @@
where \(I\) denotes the identity matrix, \(M(\alpha)\) is the transition matrix of a
random walk with teleportation and damping factor \(0\le \alpha < 1\), and
\(\Pi=\mathrm{diag}(\pi)\) for the associated null model \(v_1=v_2=\pi\) given by the
-eigenvector solving \(\pi M(\alpha) = \pi\), which is related to PageRank.
+eigenvector solving \(\pi M(\alpha) = \pi\), which is related to PageRank. See [1] for
+details.
The transition matrix \(M(\alpha)\) is given by
diff --git a/index.html b/index.html
index 0a954e3..aab4d22 100644
--- a/index.html
+++ b/index.html
@@ -272,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, kernel_size=10, window_size=5)
pgs.plot_optimal_partitions(nx_graph, results)
@@ -301,7 +301,7 @@ Graph-based data clusteringpygenstability.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",
+ graph_method="cknn-mst",
k=5,
constructor="continuous_normalized")
@@ -313,7 +313,7 @@ Graph-based data clusteringclustering.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:
+We currently support $k$-Nearest Neighbor (kNN) and Continuous $k$-Nearest Neighbor (CkNN) [10] graph constructions (specified by graph_method
) augmented with the minimum spanning tree to guarentee connectivity, where 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)
@@ -331,14 +331,16 @@ Contributors
Cite#
Please cite our paper if you use this code in your own work:
-@article{pygenstability,
- author = {Arnaudon, Alexis and Schindler, Dominik J. and Peach, Robert L. and Gosztolai, Adam and Hodges, Maxwell and Schaub, Michael T. and Barahona, Mauricio},
- title = {PyGenStability: Multiscale community detection with generalized Markov Stability},
- publisher = {arXiv},
- year = {2023},
- doi = {10.48550/ARXIV.2303.05385},
- url = {https://arxiv.org/abs/2303.05385}
-}
+@article{pygenstability,
+ author = {Arnaudon, Alexis and Schindler, Dominik J. and Peach, Robert L. and Gosztolai, Adam and Hodges, Maxwell and Schaub, Michael T. and Barahona, Mauricio},
+ title = {Algorithm 1044: PyGenStability, a Multiscale Community Detection Framework with Generalized Markov Stability},
+ journal = {ACM Trans. Math. Softw.},
+ volume = {50},
+ number = {2},
+ pages = {15:1–15:8}
+ year = {2024},
+ doi = {10.1145/3651225}
+}
The original paper for Markov Stability can also be cited as:
@@ -401,7 +403,7 @@ ReferencesReturns:
-‘selected_partitions’ and ‘block_detection_curve’
+‘selected_partitions’ and ‘block_nvi’
- Return type:
result dictionary with two new keys
diff --git a/plotting.html b/plotting.html
index 0a55b9d..024b0a3 100644
--- a/plotting.html
+++ b/plotting.html
@@ -202,12 +202,13 @@
Plotting functions.
-
-pygenstability.plotting.plot_scan(all_results, scale_axis=True, figure_name='scan_results.pdf', use_plotly=False, live=True, plotly_filename='scan_results.html')[source]#
+pygenstability.plotting.plot_scan(all_results, figsize=(6, 5), scale_axis=True, figure_name='scan_results.pdf', use_plotly=False, live=True, plotly_filename='scan_results.html')[source]#
Plot results of pygenstability with matplotlib or plotly.
- Parameters:
all_results (dict) – results of pygenstability scan
+figsize (tuple) – matplotlib figure size
scale_axis (bool) – display scale of scale index on scale axis
figure_name (str) – name of matplotlib figure
use_plotly (bool) – use matplotlib or plotly backend
@@ -299,7 +300,7 @@
-
-pygenstability.plotting.plot_scan_plt(all_results, scale_axis=True, figure_name='scan_results.svg')[source]#
+pygenstability.plotting.plot_scan_plt(all_results, figsize=(6, 5), scale_axis=True, figure_name='scan_results.svg')[source]#
Plot results of pygenstability with matplotlib.
diff --git a/pygenstability.html b/pygenstability.html
index 6028fff..85790a7 100644
--- a/pygenstability.html
+++ b/pygenstability.html
@@ -211,7 +211,7 @@
the user via the constructor module.
-
-pygenstability.pygenstability.run(graph=None, constructor='linearized', min_scale=-2.0, max_scale=0.5, n_scale=20, log_scale=True, scales=None, n_tries=100, with_NVI=True, n_NVI=20, with_postprocessing=True, with_ttprime=True, with_spectral_gap=False, exp_comp_mode='spectral', result_file='results.pkl', n_workers=4, tqdm_disable=False, with_optimal_scales=True, optimal_scales_kwargs=None, method='louvain', constructor_kwargs=None)[source]#
+pygenstability.pygenstability.run(graph=None, constructor='linearized', min_scale=-2.0, max_scale=0.5, n_scale=20, log_scale=True, scales=None, n_tries=100, with_all_tries=False, with_NVI=True, n_NVI=20, with_postprocessing=True, with_ttprime=True, with_spectral_gap=False, exp_comp_mode='spectral', result_file='results.pkl', n_workers=4, tqdm_disable=False, with_optimal_scales=True, optimal_scales_kwargs=None, method='louvain', constructor_kwargs=None)[source]#
This is the main function to compute graph clustering across scales with Markov Stability.
This function needs a graph object as an adjacency matrix encoded with scipy.csgraph.
The default settings will provide a fast and generic run with linearized Markov Stability,
@@ -232,6 +232,8 @@
log_scale (bool) – use linear or log scales for scales
scales (array) – custom scale vector, if provided, it will override the other scale arguments
n_tries (int) – number of generalized Markov Stability optimisation evaluations
+with_all_tries (bools) – store all partitions with stability values found in different
+optimisation evaluations
with_NVI (bool) – compute NVI(t) between generalized Markov Stability optimisations
at each scale t
n_NVI (int) – number of randomly chosen generalized Markov Stability optimisations
@@ -258,9 +260,14 @@
’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
+
+- ’all_tries’: all community node labels with stability values found in different
optimisation evaluations at each scale (included if with_all_tries==True)
+
+
+
’NVI’: NVI(t) at each scale
’ttprime’: NVI(t,tprime) matrix
-’block_detection_curve’: block detection curve (included if with_optimal_scales==True)
+’block_nvi’: block NVI curve (included if with_optimal_scales==True)
’selected_partitions’: selected partitions (included if with_optimal_scales==True)
diff --git a/searchindex.js b/searchindex.js
index b32202b..eda15fa 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-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
+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, 1, 2, 3, 4, 8], "http": [0, 3, 4], "barahona": [0, 1, 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, 1, 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, 4, 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": 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, 8], "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, "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": [1, 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, 4], "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, 8], "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], "scienc": [2, 4], "vol": [2, 4], "3": [1, 2, 3, 4, 6], "dec": [2, 4], "2020": [2, 4], "doi": [2, 4], "10": [1, 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": [1, 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, 4], "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": [1, 3, 4], "log_": 3, "ylabel": 3, "axhlin": 3, "c": [1, 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": [1, 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": [1, 4, 7], "accompani": 4, "softwar": 4, "paper": 4, "detail": [1, 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": [1, 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": [1, 4, 6], "gosztolai": 4, "adam": 4, "hodg": 4, "maxwel": 4, "michael": 4, "mauricio": 4, "titl": 4, "publish": 4, "arxiv": 6, "year": 4, "2023": [4, 6], "48550": [], "2303": [], "05385": [], "url": [], "org": 4, "origin": 4, "delvenne2010st": 4, "delvenn": [1, 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, 8], "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": [1, 4], "dimens": 4, "rel": 4, "local": [4, 6], "complex": [1, 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": [1, 4], "organ": [1, 4], "ieee": [1, 4], "tran": [1, 4], "netw": [1, 4], "sci": [1, 4], "eng": [1, 4], "76": [1, 4], "90": [1, 4], "2014": 4, "1109": 4, "tnse": 4, "2015": 4, "2391998": 4, "embed": [1, 4], "phy": 4, "rev": 4, "99": [1, 4], "jun": 4, "1103": 4, "physrev": 4, "062308": [1, 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": [], "print": [], "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": [1, 6], "window": 6, "move": 6, "mean": 6, "smooth": 6, "block_detection_curv": [], "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, "16": 1, "tl": 1, "19": 1, "augment": 4, "guarente": 4, "1044": 4, "framework": 4, "acm": 4, "math": 4, "softw": 4, "15": 4, "2024": 4, "1145": 4, "3651225": 4, "block_nvi": [6, 8], "tupl": 7, "with_all_tri": 8, "store": 8, "all_tri": 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": {"Example: Markov Stability with PyGenStability": [[3, "Example:-Markov-Stability-with-PyGenStability"]], "I/O module": [[5, "module-pygenstability.io"]], "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"]], "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"]], "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"], [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_"]], "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