There are a number of separate improvements in this release.
- Improved memory usage and performance of parallel Leiden algorithm optimization (see https://github.com/ragibson/ModularityPruning/issues/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 https://github.com/ragibson/ModularityPruning/issues/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 https://github.com/ragibson/ModularityPruning/issues/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 https://github.com/ragibson/ModularityPruning/issues/12).
**Full Changelog**: https://github.com/ragibson/ModularityPruning/compare/v1.3.6...v1.4.0