scverse / scverse/scanpy

Add TAU as an optional clustering method in Scanpy

Open
#3,919 14 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area - Community
Dominant language
Python
Stars
2.6k
Forks
779
Avg merge
1d 4h
Merged PRs (30d)
27

Description

What kind of feature would you like to request?

New analysis tool: A simple analysis tool you have been using and are missing in sc.tools?

Please describe your wishes

I would like to propose adding TAU as an additional clustering method in Scanpy, alongside existing methods such as Leiden and Louvain. TAU is a graph-based community detection algorithm implemented as a standalone Python package (tau_community_detection, available on PyPI). The goal would be to make it accessible through a Scanpy-native API so users can easily apply and benchmark it within standard Scanpy workflows.

This request is motivated by empirical results reported in the TAU paper, which show consistently higher modularity scores compared to Leiden/Louvain across a variety of benchmarks, including both synthetic graphs (e.g. LFR benchmarks) and real-world datasets. This suggests TAU could serve as a useful complementary clustering option for users interested in alternative optimization behavior, while preserving Scanpy’s existing clustering defaults.

To keep the maintenance burden low, TAU can be integrated as an optional dependency. If the dependency is missing, Scanpy could raise a clear error message instructing the user how to install it.

I’m happy to take responsibility for:

  • maintaining API stability and compatibility on the TAU side
    -preparing an implementation aligned with Scanpy’s style, CI, and testing conventions
  • adapting the TAU interface as needed to fit Scanpy’s design decisions

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review Scanpy's existing Leiden and Louvain clustering APIs and the conventions for optional dependencies before deciding where TAU should fit. Done means a Scanpy-native clustering entry point, clear behavior when tau_community_detection is missing, and coverage for the integration and dependency error paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data, machine-learning
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.