All Projects → GiulioRossetti → DEMON

GiulioRossetti / DEMON

Licence: BSD-2-Clause license
DEMON: a local-first discovery method for overlapping communities.

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to DEMON

dynetx
Dynamic Network Analysis library
Stars: ✭ 75 (+188.46%)
Mutual labels:  complex-networks, network-analysis
Awesome Network Analysis
A curated list of awesome network analysis resources.
Stars: ✭ 2,525 (+9611.54%)
Mutual labels:  complex-networks, network-analysis
brainGraph
Graph theory analysis of brain MRI data
Stars: ✭ 136 (+423.08%)
Mutual labels:  complex-networks, network-analysis
ffxiv-dissector
A Wireshark dissector for the FFXIV wire protocol
Stars: ✭ 14 (-46.15%)
Mutual labels:  network-analysis
epynet
Object-oriented wrapper for EPANET 2.1
Stars: ✭ 24 (-7.69%)
Mutual labels:  network-analysis
IM GreedyCELF
Source code for blog post at https://hautahi.com/im_greedycelf
Stars: ✭ 24 (-7.69%)
Mutual labels:  network-analysis
Junet.jl
Julia package for network research
Stars: ✭ 37 (+42.31%)
Mutual labels:  network-analysis
Phase-aware-Deep-Complex-UNet
(NOT Official) Implementation DC-UNet (ICLR 2019)
Stars: ✭ 48 (+84.62%)
Mutual labels:  complex-networks
mcnp
📊复杂网络建模课程设计. The project of modeling of complex networks course.
Stars: ✭ 69 (+165.38%)
Mutual labels:  complex-networks
packet cafe
A platform built for easy-to-use automated network traffic analysis
Stars: ✭ 40 (+53.85%)
Mutual labels:  network-analysis
IPRadar2
Real-time detection and defense against malicious network activity and policy violations (exploits, port-scanners, advertising, telemetry, state surveillance, etc.)
Stars: ✭ 20 (-23.08%)
Mutual labels:  network-analysis
NetworkInference
R implementation to the netinf algorithm. Infers the most likely diffusion network from a set of events
Stars: ✭ 21 (-19.23%)
Mutual labels:  network-analysis
Network-Embedding-Resources
Network Embedding Survey and Resources
Stars: ✭ 43 (+65.38%)
Mutual labels:  network-analysis
Final Project
Using Twitter Ego Network Analysis to Detect Sources of Fake News
Stars: ✭ 44 (+69.23%)
Mutual labels:  network-analysis
NetBID
Data-driven Network-based Bayesian Inference of Drivers
Stars: ✭ 21 (-19.23%)
Mutual labels:  network-analysis
public-transit-tools
Tools for working with GTFS public transit data in ArcGIS
Stars: ✭ 126 (+384.62%)
Mutual labels:  network-analysis
pathpy
pathpy is an OpenSource python package for the modeling and analysis of pathways and temporal networks using higher-order and multi-order graphical models
Stars: ✭ 124 (+376.92%)
Mutual labels:  network-analysis
SynNet-Pipeline
Workflow for Building Microsynteny Networks
Stars: ✭ 32 (+23.08%)
Mutual labels:  network-analysis
ssldump
ssldump - (de-facto repository gathering patches around the cyberspace)
Stars: ✭ 160 (+515.38%)
Mutual labels:  network-analysis
lynxkite
The complete graph data science platform
Stars: ✭ 120 (+361.54%)
Mutual labels:  complex-networks

DEMON - Overlapping Community Discovery.

Test and Coverage (Ubuntu) Coverage Status pyversions PyPI version Updates DOI PyPI download month

DEMON logo

Community discovery in complex networks is an interesting problem with a number of applications, especially in the knowledge extraction task in social and information networks. However, many large networks often lack a particular community organization at a global level. In these cases, traditional graph partitioning algorithms fail to let the latent knowledge embedded in modular structure emerge, because they impose a top-down global view of a network. We propose here a simple local-first approach to community discovery, able to unveil the modular organization of real complex networks. This is achieved by democratically letting each node vote for the communities it sees surrounding it in its limited view of the global system, i.e. its ego neighborhood, using a label propagation algorithm; finally, the local communities are merged into a global collection.

Note: Demon has been integrated within CDlib a python package dedicated to community detection algorithms, check it out!

Citation

If you use our algorithm please cite the following works:

Coscia, Michele; Rossetti, Giulio; Giannotti, Fosca; Pedreschi, Dino "Uncovering Hierarchical and Overlapping Communities with a Local-First Approach" ACM Transactions on Knowledge Discovery from Data (TKDD), 9 (1), 2014.

Coscia, Michele; Rossetti, Giulio; Giannotti, Fosca; Pedreschi, Dino "DEMON: a Local-First Discovery Method for Overlapping Communities" SIGKDD international conference on knowledge discovery and data mining, pp. 615-623, IEEE ACM, 2012, ISBN: 978-1-4503-1462-6.

Installation

In order to install the package just download (or clone) the current project and copy the demon folder in the root of your application.

Alternatively use pip:

pip install demon

or conda

conda install -c giuliorossetti demon

Demon is written in python and requires the following package to run:

  • networkx
  • tqdm

Implementation details

Execution

The algorithm can be used as standalone program as well as integrated in python scripts.

Standalone

python demon filename epsilon -c min_com_size

where:

  • filename: edgelist filename
  • epsilon: merging threshold in [0,1]
  • min_community_size: minimum size for communities (default 3 - optional)

Demon results will be saved on a text file.

Input file specs

Edgelist format: tab separated edgelist (nodes represented with integer ids).

Row example:

node_id0    node_id1

As python library

Demon can be executed specifying as input:

  1. an edgelist file
import demon as d
dm = d.Demon(network_filename="filename.tsc", epsilon=0.25, min_community_size=3, file_output="communities.txt")
dm.execute()
  1. a networkx Graph object
import networkx as nx
import demon as d

g = nx.karate_club_graph()
dm = d.Demon(graph=g, epsilon=0.25, min_community_size=3)
coms = dm.execute()

The parameter file_output, if specified, allows to write on file the algorithm results. Conversely, the communities will be returned to the main program as a list of node ids tuple, e.g.,

[(0,1,2),(3,4),(5,6,7)]
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].