Skip to main content

Community detection via Louvain/Leiden + Genetic Algorithm

Project description

TAU Community Detection

PyPI License: MIT Python 3.10+

tau-community-detection implements TAU, an evolutionary community detection algorithm that couples genetic search with Leiden refinements. It is designed for scalable graph clustering with configurable hyper-parameters and multiprocessing support.


Highlights

  • Evolutionary search: Maintains a population of candidate partitions and applies crossover/mutation tailored for graph clustering.
  • Leiden optimisation: Refines every candidate with Leiden to ensure modularity gains.
  • Multiprocessing aware: Utilises worker pools for population optimisation.
  • Deterministic options: Accepts a user-specified random seed for reproducibility.
  • Simple API: Access everything through the TauClustering class.

Installation

The project targets Python 3.10 or newer (required for slot-based dataclasses).

pip install tau-community-detection

To work from a clone, install the package in editable mode inside a virtual environment:

git clone https://github.com/HillelCharbit/community_TAU.git
cd community_TAU
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .

Quick Start (Python API)

from tau_community_detection import TauClustering

clustering = TauClustering(
    graph_source="path/to/graph.adjlist",
    population_size=80,
    max_generation=250,
)
membership, modularity_history = clustering.run()

print("community for node 0:", membership[0])
print("best modularity:", modularity_history[-1])

Graph input

TauClustering accepts either an igraph/NetworkX graph object or the path to an adjacency list that NetworkX can parse (see nx.read_adjlist). Nodes are internally remapped to contiguous integers to maximise igraph performance.


Example Script

The repository ships with a runnable example that uses the bundled src/tau_community_detection/examples/example.graph file. To execute it from the project root:

python3 src/tau_community_detection/run_clustering.py

The script prints the detected membership vector and the modularity score history.

Note: multiprocessing may be restricted inside some sandboxed environments. Run the example on a local machine for best results.


Configuration

All algorithm hyper-parameters live on the TauConfig dataclass. You can pass a custom configuration instance to TauClustering or adjust attributes on the default one. Key fields include:

  • population_size: number of partitions maintained per generation.
  • max_generations: upper bound on evolutionary iterations.
  • elite_fraction / immigrant_fraction: govern selection pressure.
  • stopping_generations / stopping_jaccard: convergence checks based on membership stability.
  • random_seed: makes runs reproducible across processes.

See src/tau_community_detection/config.py for the complete list.


Development Workflow

  • Format imports and style according to your preferred tooling (no formatter is enforced).
  • Validate new changes by executing the example script or custom experiments.
  • When contributing, ensure dependency pins remain compatible with Python 3.10+.

Pull requests are welcome—please include context on parameter changes or performance observations when proposing algorithmic tweaks.


License

Released under the MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tau_community_detection-1.0.1.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tau_community_detection-1.0.1-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file tau_community_detection-1.0.1.tar.gz.

File metadata

  • Download URL: tau_community_detection-1.0.1.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for tau_community_detection-1.0.1.tar.gz
Algorithm Hash digest
SHA256 57bad03e12d3e0110a9ec1c564c81bb8450929fd50cb4e84845bcf72664b9cf1
MD5 64a38cdbfdbca1bff3f7c4b0f24cf007
BLAKE2b-256 92cd540548405aab82795f1d9af2655340df66a2822afd040b37374d5cba23b2

See more details on using hashes here.

File details

Details for the file tau_community_detection-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for tau_community_detection-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 15dad8ac5c33723a64c43e2cda9c29404b7fea41d6593c8848a44fea4b0963f8
MD5 bef49c4992af5461e9d4fec3b39c26a9
BLAKE2b-256 0b3a4006bce67dd72ca104e515c9db58d5308c473b6f4528b18d3ec62b0e8cc4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page