From fe4785d029d3e6e64c64a6134961164520c50a8d Mon Sep 17 00:00:00 2001 From: Ben Pedigo Date: Wed, 20 Mar 2024 14:51:32 -0700 Subject: [PATCH] add a method --- networkframe/networkframe.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/networkframe/networkframe.py b/networkframe/networkframe.py index 725c33d..615543e 100644 --- a/networkframe/networkframe.py +++ b/networkframe/networkframe.py @@ -1244,6 +1244,22 @@ def condense( nodes = pd.DataFrame(index=nodes_index) return self.__class__(nodes, edges, directed=self.directed) + def sort_spectral(self, weight_col="weight", inplace=False) -> "NetworkFrame": + adjacency = self.to_sparse_adjacency(weight_col=weight_col) + adjacency = adjacency + adjacency.T + adjacency = adjacency.astype(float) + + # from scipy.sparse.linalg import svds + # u, s, vh = svds(adjacency, k=1) + + from scipy.sparse.linalg import eigsh + + _, u = eigsh(adjacency, k=1, which="LM", return_eigenvectors=True) + + nodes = self.nodes.iloc[np.argsort(u[:, 0])] + + return self._return(nodes=nodes, inplace=inplace) + class LocIndexer: """A class for indexing a NetworkFrame using .loc."""