Skip to content

Releases: ragibson/ModularityPruning

v1.4.0

05 Jun 02:42
ab94be2
Compare
Choose a tag to compare

There are a number of separate improvements in this release.

  • Improved memory usage and performance of parallel Leiden algorithm optimization (see #13). This also addresses pathologically bad job allocation when the number of runs is in the low 100s.
For example, on a very cheap (~$300) laptop with sweeps of gamma in (0, 2) and omega in (0, 2):
  - 1,000,000 runs of a single-layer 32-node,   78-edge   graph went from ~3.9 minutes to ~3.7 minutes
  - 100 runs       of a single-layer 100k-node, 500k-edge graph went from ~22.2 minutes to ~6.0 minutes
  - 160,000 runs   of a 3-layer      90-node,   416-edge  graph went from ~4.3 minutes to ~4.2 minutes
  - 50 runs        of a 50-layer     25k-node,  102k-edge graph went from ~6.5 minutes to ~6.5 minutes
  • Added basic test coverage for all documented functions (see #11).
    • This includes tests for all documentation examples, including plotting functionality.
    • As part of the parallel Leiden algorithm optimization, we've also added tests to ensure that parallel Leiden has nearly optimal scaling compared to single-threaded optimization.
  • Corrected usage of outdated Matplotlib APIs and improved default arguments in plotting functionality.
  • Tweaked warnings from common usage to better reflect their importance (see #10).
    • Removed warnings about the inefficiency of the Leiden algorithm implementation in leidenalg for multi-layer networks as the number of layers increases. Although this inefficiency remains, it is still one of the most widely used modularity optimization implementations.
    • Added warnings when multi-layer pruning functions truncate omega to the user-specified limit. This was already mentioned in the documentation but realistically should also be a warning.
  • Improved documentation by adding basic descriptions of available multi-layer network topologies and tweaking examples to use parallel Leiden algorithm functions (see #12).

Full Changelog: v1.3.6...v1.4.0

v1.3.6

16 Nov 04:21
8347f4c
Compare
Choose a tag to compare

Fix minor documentation error involving an incorrect method link and upgrade ReadtheDocs configurations, integrations, and webhook to a more modern standard.

Full Changelog: v1.3.5...v1.3.6

v1.3.5

05 Oct 19:19
1b1d0fa
Compare
Choose a tag to compare

Add support and testing for Python 3.12, which was released on Monday.

Full Changelog: v1.3.4...v1.3.5

v1.3.4

29 Aug 00:03
3631b92
Compare
Choose a tag to compare

Change python-igraph dependency to igraph in #9

Full Changelog: v1.3.3...v1.3.4

v1.3.3

24 Mar 19:43
b5d8938
Compare
Choose a tag to compare

Streamline package README and documentation, especially with respect to linking to the journal article and its supplementary information.

Also simplify the setup and package installation in the GitHub action.

Full Changelog: v1.3.2...v1.3.3

v1.3.2

28 Oct 23:31
6d7cf82
Compare
Choose a tag to compare

Add Python 3.11 testing and support

Full Changelog: v1.3.1...v1.3.2

v1.3.1

01 Oct 11:45
50b7049
Compare
Choose a tag to compare

Improve performance of multi-layer Leiden iteration and optimization.

For small numbers of layers, this is significantly faster than using the deprecated modularitypruning.louvain_utilities.

Full Changelog: v1.3.0...v1.3.1

v1.3.0

30 Sep 22:17
6b8acef
Compare
Choose a tag to compare

Add Leiden modularity optimization

  1. Replace Louvain modularity optimization (from the deprecated louvain-igraph) with Leiden (from leidenalg).
  2. Update documentation and resolve deprecated uses of scipy, matplotlib, and random.sample.
  3. Drop support for Python 3.7, matching much of the Python scientific community.

Overall, this should make the single-layer functions faster and multi-layer functions faster when the number of layers is small. As the number of layers grows, the inefficiencies of the leidenalg implementation will eventually make the algorithm extremely slow. As such, we keep the legacy Louvain multi-layer functionality in modularitypruning.louvain_utilities.

By dropping support for Python 3.7, the dependency lists are greatly simplified (many of our dependencies, including numpy and scipy, stopped supporting 3.7 last year).

Full Changelog: v1.2.3...v1.3.0

v1.2.3

24 Sep 22:23
420574e
Compare
Choose a tag to compare

Update preprint link to published journal article, resolve various linting errors, and improve dependency checks for louvain/leidenalg.

v1.2.2

05 Aug 01:36
493cbc6
Compare
Choose a tag to compare

Add clarification on the implication of bounds choices in the main pruning functions.