All Projects → kfoynt → LocalGraphClustering

kfoynt / LocalGraphClustering

Licence: MIT license
No description or website provided.

Programming Languages

Jupyter Notebook
11667 projects
HTML
75241 projects
python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to LocalGraphClustering

graphs
Graph algorithms written in Go
Stars: ✭ 60 (-47.37%)
Mutual labels:  graph-algorithms
eastar
A* graph pathfinding in pure Elixir
Stars: ✭ 26 (-77.19%)
Mutual labels:  graph-algorithms
Erdos.jl
A library for graph analysis written Julia.
Stars: ✭ 37 (-67.54%)
Mutual labels:  graph-algorithms
PathFinder-Visualization
📟 React and p5, maze generation and path finding visualization
Stars: ✭ 12 (-89.47%)
Mutual labels:  graph-algorithms
jgrapht
Master repository for the JGraphT project
Stars: ✭ 2,259 (+1881.58%)
Mutual labels:  graph-algorithms
tmap
A very fast visualization library for large, high-dimensional data sets.
Stars: ✭ 146 (+28.07%)
Mutual labels:  graph-algorithms
rustgraphblas
rust-library to wrap GraphBLAS.h
Stars: ✭ 23 (-79.82%)
Mutual labels:  graph-algorithms
graph-library
Data Structure and Algorithm for Graphs
Stars: ✭ 14 (-87.72%)
Mutual labels:  graph-algorithms
ripples
A C++ Library for Influence Maximization
Stars: ✭ 18 (-84.21%)
Mutual labels:  graph-algorithms
Algorithms-Java
A collection of common algorithms and data structures implemented in Java.
Stars: ✭ 141 (+23.68%)
Mutual labels:  graph-algorithms
jsgraph
Deprecated: Use the @encapsule/arccore package that includes the graph library
Stars: ✭ 42 (-63.16%)
Mutual labels:  graph-algorithms
GPUGraphLayout
An experimental GPU accelerated implementation of ForceAtlas2
Stars: ✭ 40 (-64.91%)
Mutual labels:  graph-algorithms
networkx-guide
We here are very big fans of NetworkX as a graph library and its comprehensive set of graph algorithms. For many though, working with NetworkX involves a steep learning curve. This guide is designed as an aid for beginners and experienced users to find specific tips and explore the world of complex networks.
Stars: ✭ 28 (-75.44%)
Mutual labels:  graph-algorithms
DGFraud-TF2
A Deep Graph-based Toolbox for Fraud Detection in TensorFlow 2.X
Stars: ✭ 84 (-26.32%)
Mutual labels:  graph-algorithms
mazes
A comprehensive library of algorithms for creating perfect mazes.
Stars: ✭ 64 (-43.86%)
Mutual labels:  graph-algorithms
PGD
A Parallel Graphlet Decomposition Library for Large Graphs
Stars: ✭ 68 (-40.35%)
Mutual labels:  graph-algorithms
gardenia
GARDENIA: Graph Analytics Repository for Designing Efficient Next-generation Accelerators
Stars: ✭ 22 (-80.7%)
Mutual labels:  graph-algorithms
metahelm
Install dependency graphs of Kubernetes Helm Charts
Stars: ✭ 70 (-38.6%)
Mutual labels:  graph-algorithms
Differentia.js
No longer being supported or maintained. A Graph Theory & Data Structure Library for JavaScript.
Stars: ✭ 13 (-88.6%)
Mutual labels:  graph-algorithms
ASAP
AAAI 2020 - ASAP: Adaptive Structure Aware Pooling for Learning Hierarchical Graph Representations
Stars: ✭ 83 (-27.19%)
Mutual labels:  graph-algorithms

Local Graph Clustering

Local Graph Clustering provides

  • methods that find local clusters in a given graph without touching the whole graph
  • methods that improve a given cluster
  • methods for global graph partitioning
  • tools to compute Network Community Profiles
  • scalable graph analytics on your laptop

The current version is 0.5.0 and it is appropriate for experts and intermediates. Contact information for any questions and feedback is given below.

Authors

Contributors

List of applications and methods

Pipelines

Papers that use this code

Examples

All examples are in the notebooks folder.

Below is a simple demonstration from test.py in notebooks on how to improve spectral partitioning using flow-based methods from local graph clustering.

from localgraphclustering import *

import time
import numpy as np

# Read graph. This also supports gml and graphml format.
g = GraphLocal('./datasets/senate.edgelist','edgelist',' ')

# Call the global spectral partitioning algorithm.
eig2 = fiedler(g)

# Round the eigenvector
output_sc = sweep_cut(g,eig2)

# Extract the partition for g and store it.
eig2_rounded = output_sc[0]

# Conductance before improvement
print("Conductance before improvement:",g.compute_conductance(eig2_rounded))

# Start calling SimpleLocal
start = time.time()
output_SL_fast = SimpleLocal(g,eig2_rounded)
end = time.time()
print("running time:",str(end-start)+"s")

# Conductance after improvement
print("Conductance after improvement:",g.compute_conductance(output_SL_fast[0]))

output_SL = output_SL_fast[0]

Examples with visualization

For general examples with visualization using our built-in drawing methods, see the Jupyter notebook examples with visualization.

For comparisons of spectral- and flow-based methods with visualization see the Jupyter notebooks here and here.

For visual demonstration of algorithms that can improve a given seed set of nodes see the Jupyter notebook here.

Scalable graph analytics on your laptop

For examples using reasonably large graphs (100 million edges) on a 16GB RAM laptop please see the Jupyter notebook here.

Advanced examples

For advanced examples see the Jupyter notebook here.

Demonstration: social networks

Demonstration: bioinformatics networks

Presentation

When local graph clustering methods do not perform well?

In theory and in practice we have observed that the performance of local graph clustering methods depends on the magnitute of the conductance of the target cluster as well as the magnitute of the minimum conductance in the induced subgraph of the target cluster. Simply put, if the "internal connectivity" of the target cluster (the minimum conductance in the induced subgraph of the target cluster) is not stronger than the "external connectivity" (the conductance of the target cluster) then local graph clustering methods have poor performance in terms of finding the target cluster. For theoretical details please see Section 3 in the Capacity Releasing Diffusion for Speed and Locality paper. For extensive numerical experiments that demonstrate properties of challenging target clusters please see Section 4 in Capacity Releasing Diffusion for Speed and Locality as well as the supplementary material in the same link.

Installation

Clone the repo
Enter the folder using the termimal
Type in the terminal `python setup.py install`

Note that this package runs only with Python 3 on Mac or Linux.

Import from Julia

  1. In Julia, add the PyCall package:

    Pkg.add("PyCall")

  2. Update which version of Python that PyCall defaults to:

    ENV["PYTHON"] = (path to python3 executable)

    Pkg.build("PyCall")

    (You can get the path to the python3 executable by just running "which python3" in the terminal.)

  3. Make sure the PyPlot package is added in Julia.


  4. Import localgraphclustering by using:

    using PyPlot

    using PyCall

    @pyimport localgraphclustering

You can now use any routine in localgraphluserting from Julia.

License

MIT License

Copyright (C) 2020 Kimon Fountoulakis, Meng Liu, David Gleich and Michael W. Mahoney.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].