Recent Releases of banditpam
banditpam - BanditPAM v6.0.2
BanditPAM v6.0.2 contains several bugfixes:
- Gets all GHA to work correctly
- Fixes the R Bindings
- Bumps the MacOS deployment target to 15
- Contains style cleanups
- Pins armadillo to 14.6.3 on Mac
- C++
Published by motiwari 6 months ago
banditpam - BanditPAM v.6.0.1
BanditPAM v.6.0.1 fixes the previously broken BanditPAM v.5.0.0 by:
- Updating the Mac wheels to be built on an m1 macos-latest instead of an intel macos-13
- Statically linking OpenMP
- C++
Published by motiwari 9 months ago
banditpam - BanditPAM `v5.0.1`
The previous release contained several bugs.
This release:
- Gets all GHA to work correctly
- Cleans up a lot of unnecessary things in the builds
- Updates carma and all the GHA
- Updates the supported python versions
- C++
Published by motiwari 9 months ago
banditpam - BanditPAM v5.0.0
BanditPAM v5.0.0 contains several major changes:
Organization and Functionality:
- Updates all GHA dependencies
- Fixes all GHA on Linux and Mac, including source C++ builds, local builds, and wheel builds
- Updates supported Python versions to Python 3.10 - 3.13
- Separates GHA by platform
- Forces LLVM's
clangusage on Mac for compilation - Updates
setup.py
Tests: No changes.
Style: No changes.
Documentation: No Changes.
- C++
Published by motiwari 9 months ago
banditpam - BanditPAM v4.0.4
BanditPAM v4.0.4 contains the following changes:
Organization and Functionality:
- Added a new GHA to build the package and run tests on Windows.
- Added a configuration file v2 for our Read the Docs documentation.
- Added a convenience script retrieve_windows_python_files.sh to retrieve clang_rt.asan_dynamic-x86_64.dll automatically for the Windows Python build.
Tests:
- Updated tests/test_smaller.py to use different data types on different platforms when loading data/scrna_reformat.csv.gz to adjust memory usage.
Documentation:
- Updated the Windows installation instructions to use the convenience script retrieve_windows_python_files.sh.
Full Changelog: https://github.com/motiwari/BanditPAM/compare/v4.0.3...v4.0.4
- C++
Published by Adarsh321123 over 2 years ago
banditpam - BanditPAM v4.0.3
BanditPAM v4.0.3 contains the following changes:
Organization and Functionality:
- Ensure GHAs don't run on a tag push.
- Automatically upload wheels to TestPyPI on a PR update and PyPI on release in GHAs (fixes #256)
- Add tests/test_initialization to the GHAs that build and test the package.
- Loss issues are resolved in all versions of BanditPAM
- The clustering results are now identical to scikit-learn's implementation. This was achieved by increasing the batch size for accurate estimation of the standard deviation of the arm parameters and by fixing the bug that drops arms whose lower confidence bounds equal the lowest upper confidence bounds (fixes #252).
- Add complexity to scripts/comparison_utils.py, such as printing cache writes.
- Update cache calculations in src/algorithms/kmedoids_algorithm.cpp and add an assertion for better error handling.
- Turn VERSION_INFO into a string in src/python_bindings/kmedoids_pywrapper.cpp.
- Update build_confidence in src/python/kmedoids_pywrapper.cpp to avoid stochasticity issue in tests/test_larger.py.
Tests:
- Update assertion in tests/test_initialization to match with new build_confidence in src/python/kmedoids_pywrapper.cpp.
- Use NumPy and Armadillo seeds for reproducibility.
- Update some tests in tests/test_larger.py to count the proportion of passing cases instead of immediately failing.
Style:
- Ran black, docformatter, flake8, and clang-format.
Documentation:
- Slightly updated the documentation on the CMake build on Windows to clarify how to use retrieve_windows_cmake_files.sh.
Full Changelog: https://github.com/motiwari/BanditPAM/compare/v4.0.2...v4.0.3
- C++
Published by Adarsh321123 over 2 years ago
banditpam - BanditPAM v4.0.2
BanditPAM v4.0.2 contains the following changes:
Organization and Functionality:
- We include the files, edits, and instructions to succeed in the CMake and Python builds on Windows, Mac, and Linux.
- Note that carma has now bumped to version v0.6.7.
- Does not require LLVM's clang when running pip install . (Fixes #242)
- Swaps are only performed in banditpam.cpp, banditpam_orig.cpp, fastpam1.cpp, and pam.cpp if k=1 (Fixes #227)
- Uses bool data type when necessary (Fixes #232)
- Implements the buildLoss functionality (Fixes #234)
- Modifies the FastPAM1 implementation such that the runtime is significantly reduced while resulting in the same medoids (Fixes #228)
- Ensures Linux GHA error does not appear anymore (Fixes #250)
- Update GHAs to use python -m pip throughout instead of just pip
- Mac GHAs now run on macos-latest as macos-10.15 is now unsupported.
- Fixes failing GHAs that activated on PR.
Tests:
- Updated incorrect assertion in tests/test_initialization.py
Style:
- Ran black, flake8, a combination of clang-format and cpplint, and our own style definitions over codebase (such as using 2 spaces instead of 4 in C++ code).
Documentation: - Documented functional CMake and Python builds on Windows.
Full Changelog: https://github.com/motiwari/BanditPAM/compare/v4.0.1...v4.0.2
- C++
Published by Adarsh321123 over 2 years ago
banditpam - BanditPAM v4.0.1
BanditPAM v4.0.1 contains a few minor changes:
Organization and Functionality:
- Makes cibuildwheel more verbose
- For CMake builds, checks out the current branch (not main) in GHA
- Changes the CMake build to Release mode to avoid running sanitizers in GHA
- Adds status badges (Fixes #224)
- Fixes the GHA builds by including the proper directory for armadillo (the locally installed version)
Tests: No changes.
Style: No changes.
Documentation:
- Updates README.md and other docs
- C++
Published by motiwari almost 3 years ago
banditpam - BanditPAM v4.0.0
BanditPAM v4.0.0 contains many big changes:
Organization and Functionality:
- We now rely on C++17 for std::optional
- We implement a new version of BanditPAM that considers only $n$ non-medoids as arms in the SWAP step, each of which has $k$ values. This leads to a significant speedup. The old BanditPAM is still available as BanditPAM_orig
- Update the GHA to use newer machine images and update the dependencies on Ubuntu 22.04
- Split the cmake build into a separate GHA
- Added Python 3.11 to GHA where possible, removed Python 3.6
- Restores the ability to call OpenMP functions omp_get_max_threads and omp_set_num_threads, which should resolve the remaining issues on M1 Macs
- We allow users to pass in a distance matrix (Fixes #164 )
- Now uses buildConfidence and swapConfidence in log (ln) space
- Allows users to retrieve the sample complexities and caching statistics
- Adds scripts/cache_measurements.py, scripts/compare_banditpam_versions.py, scripts/comparison_utils.py, scripts/comparison_with_fasterpam.py, scripts/dist_mat_test.py, scripts/timing_dist_mat.py, scripts/sample_complexity_with_k.py, and scripts/scaling_with_k.py
- Properly builds Mac wheels using Apple Clang and enabling OpenMP. Tested across both Intel and M1 Macs for gcc- and clang- compiled Python.
- Adding parallelize flag that only uses OpenMP parallelization if set to true, i.e., replacing all #pragma omp parallel for with #pragma omp parallel for if (this->parallelize)
- Fixing an issue with the python bindings where variable orderings didn't match so they were getting intialized with each other's values
- Changes max_iter to 100
- Added tests/test_initialization.py, but this is not run by GHA
- Implements caching of distance computations. Also allows for retrieving cache statistics (hits, misses, writes)
- Allows setting cache parameters (useCache, usePerm, etc.) from Python
- Allows setting parallelize from Python
Tests:
- Added tests/test_initialization.py, but this is not run by GHA
Style:
- Ran black over codebase.
Documentation: - Documented new capabilities.
Full Changelog: https://github.com/motiwari/BanditPAM/compare/v3.0.4...v4.0.0
- C++
Published by motiwari about 3 years ago
banditpam - BanditPAM v3.0.4
BanditPAM v3.0.4 contains a few hotfixes:
Organization and Functionality:
- Fixes the computation of cosine distance (Fixes #182)
- Removes the ability to call OpenMP functions omp_get_max_threads and omp_set_num_threads, which should resolve the remaining issues on M1 Macs (Fixes #167)
Tests: No changes.
Style: No changes.
Documentation: No changes.
Full Changelog: https://github.com/ThrunGroup/BanditPAM/compare/v3.0.3...v3.0.4
- C++
Published by motiwari almost 4 years ago
banditpam - BanditPAM v3.0.3
This contains BanditPAM v3.0.3. This update will be largely invisible to users, but allows for building the Linux and Mac (including Apple Silicon/M1) wheels to upload to PyPi.
Organization and Functionality:
- Building wheels automatically for Linux, Intel Mac, and M1 Mac and uploading them to PyPI via Github actions
Tests:
- None, other than verifying the changes in
Organization and Functionalitywork via Github Actions
Style:
- Including newlines between steps of Github Actions
Documentation:
None
Full Changelog: https://github.com/ThrunGroup/BanditPAM/compare/v3.0.2...v3.0.3
- C++
Published by motiwari about 4 years ago
banditpam - BanditPAM v3.0.2
BanditPAM v3.0.2 contains several bugfixes:
Organization and Functionality:
- We now allow the user to set a seed for reproducible results (must be called with banditpam.set_num_threads(1) for deterministic reproducibility) (Fixes #176)
- We have added the KMedoids.average_loss attribute to contain the final average clustering loss after fitting (Fixes #174)
- We throw an std::invalid_argument error properly when specifying an invalid loss function (Fixes #173, Fixes #141)
Tests:
- We now also test PAM in tests/test_smaller.py
Style:
- We change PAM and FastPAM1 to use this->*lossFn instead of KMedoids::cachedLoss to avoid resetting the cache for them; they do not benefit much from a cache anyway
- Nits
Documentation: - Created documentation for new functions
Full Changelog: https://github.com/ThrunGroup/BanditPAM/compare/v3.0.1...v3.0.2
- C++
Published by motiwari about 4 years ago
banditpam - BanditPAM v3.0.1
BanditPAM v3.0.1 contains a hotfix to ensure it can be installed on Paperspace Gradient and Google Colab.
For Paperspace Gradient:
- allows users to install
banditpam==3.0.1on Paperspace Gradient instances by installing the necessary dependencies and armadillo 10.8 automatically in setup.py - Builds a recent (>=10.8) armadillo from source
For Google Colab: - Installs the necessary Ubuntu dependencies - Fixes a missing space that was conjoining the repo name with the local installation path - Replaces the MANIFEST.in so the headers are properly included in the source distribution
Full Changelog: https://github.com/ThrunGroup/BanditPAM/compare/v3.0.0...v3.0.1
- C++
Published by motiwari about 4 years ago
banditpam - BanditPAM v3.0.0
BanditPAM v3.0.0 contains several changes:
Organization and Functionality: - doubles are changed to floats throughout
Tests: - Python3.10 has been added to the list of python versions to check - We now verify the package can be built on MacOS - We separate the different tests into different files
Style: - We use the appropriate armadillo types throughout for floats
Documentation: - We have updated the documentation through - We updated the favicon on readthedocs - We have updated the installation guides throughout](https://github.com/ThrunGroup/BanditPAM/releases/new)
Full Changelog: https://github.com/ThrunGroup/BanditPAM/compare/v2.0.0...v3.0.0
- C++
Published by motiwari about 4 years ago
banditpam - BanditPAM v2.0.0
BanditPAM v2.0.0 PR. Contains many changes:
Organization and Functionality:
- Everything has been migrated to the namespace km for better encapsulation (Fixes #135)
- We now allow for <100 datapoints by setting the batchSize to min(dataset_size, 100) (Fixes #158)
- We now return ints for the medoid indices instead of floats, including a list of a single int if k=1 (Fixes #152)
- We reformatted the functions in each .cpp file to appear in the same order they appear in the corresponding .hpp
- The code has been refactored for better organization
- The code in setup.py is now encapsulated (Fixes #131)
- The check for LLVM clang is now back in setup.py (Fixes #79)
- Attempting to set the build or swap confidences when not using the BanditPAM algorithm results in an error
Tests: - The code's accuracy is now automatically checked by running test cases via Github actions (Fixes #52) - An error is now thrown if an empty dataset is passed - We now use FastPAM1 instead of PAM for the tests, which significantly speeds them up - We added additional functionality to the tests to error quickly on failures - The code is now tested on Python3.9 via Github actions (Fixes #46)
Style:
- We have changed variable names to camelCase for C++ variables (Fixes #140)
- The code is now automatically checked for style compliance via Github actions
- The python code now contains typehints
- const qualifiers have been added where possible
Documentation:
- We now publicly host the documentation on ReadTheDocs, via an integration with Sphinx (Fixes #165, Fixes #124)
- We have updated the README with links to the ReadTheDocs and SAIL blog post
- We have deleted duplicate docstrings in the .cpp files, moved all docstrings to the .hpp files, updated the docstrings, and added the necessary @throws and @returns (Fixes #127)
Full Changelog: https://github.com/ThrunGroup/BanditPAM/compare/v1.0.5...v2.0.0
- C++
Published by motiwari about 4 years ago
banditpam - BanditPAM v1.0.5
BanditPAM v1.0.5 Release Notes:
- Removes all logging and the
verbosityflag, which were unnecessary - Enables users to install the package via
pipon Google Colab (by using prebuiltarmadillolibraries and copying them over to the correct places) - Bumps the version to
v1.0.5 - Cleans up some nits
- C++
Published by motiwari about 4 years ago
banditpam - Implementing tags for release
Creating the first tag, v1.0.2 to keep track of releases.
Tag created by @motiwari .
- C++
Published by motiwari about 4 years ago