Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/networkx/linalg/bethehessianmatrix.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
| author | shellac |
|---|---|
| date | Mon, 01 Jun 2020 08:59:25 -0400 |
| parents | 79f47841a781 |
| children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/networkx/linalg/bethehessianmatrix.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2004-2019 by -# Aric Hagberg <hagberg@lanl.gov> -# Dan Schult <dschult@colgate.edu> -# Pieter Swart <swart@lanl.gov> -# Jean-Gabriel Young <jeangabriel.young@gmail.com> -# All rights reserved. -# BSD license. -# -# Authors: Jean-Gabriel Young (jeangabriel.young@gmail.com) -"""Bethe Hessian or deformed Laplacian matrix of graphs.""" -import networkx as nx -from networkx.utils import not_implemented_for - -__all__ = ['bethe_hessian_matrix'] - - -@not_implemented_for('directed') -@not_implemented_for('multigraph') -def bethe_hessian_matrix(G, r=None, nodelist=None): - r"""Returns the Bethe Hessian matrix of G. - - The Bethe Hessian is a family of matrices parametrized by r, defined as - H(r) = (r^2 - 1) I - r A + D where A is the adjacency matrix, D is the - diagonal matrix of node degrees, and I is the identify matrix. It is equal - to the graph laplacian when the regularizer r = 1. - - The default choice of regularizer should be the ratio [2] - - .. math:: - r_m = \left(\sum k_i \right)^{-1}\left(\sum k_i^2 \right) - 1 - - Parameters - ---------- - G : Graph - A NetworkX graph - - r : float - Regularizer parameter - - nodelist : list, optional - The rows and columns are ordered according to the nodes in nodelist. - If nodelist is None, then the ordering is produced by G.nodes(). - - - Returns - ------- - H : Numpy matrix - The Bethe Hessian matrix of G, with paramter r. - - Examples - -------- - >>> import networkx as nx - >>> k =[3, 2, 2, 1, 0] - >>> G = nx.havel_hakimi_graph(k) - >>> H = nx.modularity_matrix(G) - - - See Also - -------- - bethe_hessian_spectrum - to_numpy_matrix - adjacency_matrix - laplacian_matrix - - References - ---------- - .. [1] A. Saade, F. Krzakala and L. Zdeborová - "Spectral clustering of graphs with the bethe hessian", - Advances in Neural Information Processing Systems. 2014. - .. [2] C. M. Lee, E. Levina - "Estimating the number of communities in networks by spectral methods" - arXiv:1507.00827, 2015. - """ - import scipy.sparse - if nodelist is None: - nodelist = list(G) - if r is None: - r = sum([d ** 2 for v, d in nx.degree(G)]) /\ - sum([d for v, d in nx.degree(G)]) - 1 - A = nx.to_scipy_sparse_matrix(G, nodelist=nodelist, format='csr') - n, m = A.shape - diags = A.sum(axis=1) - D = scipy.sparse.spdiags(diags.flatten(), [0], m, n, format='csr') - I = scipy.sparse.eye(m, n, format='csr') - return (r ** 2 - 1) * I - r * A + D - - -# fixture for pytest -def setup_module(module): - import pytest - numpy = pytest.importorskip('numpy')
