Proposal: Add TAU Community Detection as a clustering method for Scanpy / scverse ecosystem

Hi everyone,

I would like to propose adding a new clustering method to the scverse ecosystem (potentially as a Scanpy plugin, or as a built-in Scanpy tool). The method is called TAU Community Detection, a genetic-algorithm + Leiden–based hybrid designed for large, sparse graphs such as scRNA-seq kNN graphs.

TAU Community Detection is described and benchmarked in the following peer-reviewed work:

https://academic.oup.com/pnasnexus/article/2/6/pgad180/7187731

published in 2023. I launched a pip package that is open source and available.

What TAU Does

TAU is an evolutionary algorithm that repeatedly optimizes modularity on large graphs while using Leiden refinement internally. Conceptually, it combines:

  • Exploration (via genetic recombination, mutation, immigration)

  • Exploitation (via Leiden refinement on each offspring)

  • Parallel evaluation to handle very large graphs

It produces clusters with higher modularity than Leiden/Louvain alone.

Single-cell clustering often depends strongly on graph topology and resolution parameters. TAU can offer:

  • More stable clusters, due to searching the global space of partitions

  • Higher modularity and better separation on difficult datasets

  • Compatibility with AnnData graph structures

  • A drop-in alternative to sc.tl.leiden and sc.tl.louvainQuestions for the maintainers

    Before developing a plugin or PR, I would love you notes on the following questions:

    1. Whether TAU should begin as a separate Scanpy plugin
      (following the scverse extension model), or whether you prefer evaluating a PR directly.

    2. API conventions, especially naming and integration with neighbors_key, use_rep, and the AnnData graph utilities.

    3. Performance standards you expect for inclusion.

    4. Documentation requirements to ensure alignment with the scverse ecosystem

    Thank you for your time and for maintaining this fantastic ecosystem. I’d be happy to join this community.

    Looking forward to feedback!

2 Likes

Hey

is there a GitHub repo or documentation webpage? The link on the paper is of a 3 years old repo, I dont think it is the one used on pypi

Yes of course, here it is: GitHub - HillelCharbit/TAU

Hey, do you think it might be a good idea? Hillel

Hi @HillelCharbit I would highly suggest using our template GitHub - scverse/cookiecutter-scverse: Cookiecutter template for scverse and then submitting to the scverse ecosystem. At the moment, we don’t really have a modular clustering ecosystem but maybe you could open an issue to suggest one for scanpy 2.0? We are actively looking for ways to improve the API in the next major release!

I didn’t generate the repository directly from the cookiecutter template since the project already existed on PyPI, but I’ve been aligning it with scverse conventions (src layout, pyproject-based packaging, CI, testing, publishing workflows). I’m happy to continue aligning tooling and API where it makes sense.

And thank you for the advice, I opened an issue with the suggestion.