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 @@

Source code for pygenstability.constructors

 
 
 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

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

+

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:

-

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