Skip to content

Release v1.0 Updates#5

Merged
lsetiawan merged 74 commits intomainfrom
dev
Apr 25, 2025
Merged

Release v1.0 Updates#5
lsetiawan merged 74 commits intomainfrom
dev

Conversation

@lsetiawan
Copy link
Contributor

Phylo2vec Project Development Summary

Over the past development cycle, our team has made significant strides in evolving the phylo2vec library, focusing on performance optimization, cross-language support, and improved developer experience.

Key Achievements

We've successfully implemented a high-performance O(n log n) algorithm for ordering cherries, replacing the previous less efficient implementation. The core library now benefits from AVL tree and Fenwick tree data structures that have substantially improved algorithmic performance.

The codebase has been extensively restructured to support a Rust core with Python bindings, allowing us to leverage Rust's performance benefits while maintaining Python's accessibility. We've also expanded our language support by creating a dedicated R package, opening our tools to the broader bioinformatics community.

Documentation and Quality Assurance

We've prioritized user experience by creating demo notebooks and comprehensive documentation through JupyterBook. For contributors, we've implemented a robust CI/CD pipeline that supports multiple Python versions, integrated benchmarking suites, and added community health files to encourage open-source participation.

@lsetiawan lsetiawan changed the title Release v2.0 Updates Release v1.0 Updates Apr 25, 2025
lsetiawan and others added 29 commits April 25, 2025 14:07
* feat: Add sample() functions

* fix: update sample ranges

* fix: update max vector capacity

* feat: Use default params for sample()

Co-authored-by: Don Setiawan <landungs@uw.edu>

* fix: remove extra function from API

Co-authored-by: Don Setiawan <landungs@uw.edu>

* feat: add sample() tests, check_v(), and docs

* test: use rtest for sample()

* test: rstest check_v()

---------

Co-authored-by: Don Setiawan <landungs@uw.edu>
* feat: add WIP AVL tree implementation

* fix: Fix issues with avl rotations

* chore: Clean up to_newick

* chore: Clean up some commented out code

---------

Co-authored-by: Landung 'Don' Setiawan <landungs@uw.edu>
* ci: Add CD for python builds with maturin

* ci: Tweak some triggers

* ci: Update default run working directory
* fix: Attempt to fix the CD for working-directory

* ci: Fix to use maturin manifest path

* fix: Add full path to Cargo.toml

* fix: Remove leftover defaults

* chore: Update package metadata files

* chore: Add updated root cargo metadata

* chore(deps): Add openssl to root cargo deps

* chore: Add LICENSE symlink and update manifest

* chore(deps): Remove openssl and git2 rust dependency
* chore: Add benchmarking for rust get_pairs

* chore: Add benchmark task to pixi
* ci: Add CI for Rust

* style: Perform linting

* style: Fix missed linting

* ci: Comment out the beta and nightly builds for now
* feat: Add is_unordered function and modify max validator

* style: Lint code
* fix: Fix python version to sync with Rust version

* chore: Remove notes about dynamic version
* feat: add get_common_ancestor between two nodes

Co-authored-by: molkjar <molkjara@gmail.com>

* bump numpy version; add integer conversion in get_common_ancestor for numba

* chore: Update dependencies to reflect main

---------

Co-authored-by: Neclow <neilclow24@gmail.com>
Co-authored-by: molkjar <molkjara@gmail.com>
…of arrays

* chore: setup ancestry_dtype comparison

* refactor: change Ancestry type to nested Vec

* style: format benchmarks
* initial implementation

* refactor: update ancestry dtype and add_leaf experiment

* fix: Fix bugs within add_leaf functions

* refactor: Update order cherries no parents to not clone

* fix: Fix remove_leaf implementation

* style: Run formatting

* docs: add initial docs

* style: Fix formatting

---------

Co-authored-by: Landung 'Don' Setiawan <landungs@uw.edu>
* docs: Add a small readme for rust directory

* Update phylo2vec/README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update phylo2vec/README.md

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: Add pre-commit configuration file

* chore: Add codespell words whitelists

* chore: Add pre-commit deps and bump down jupyterlab

* refactor: Skip prettier for yaml

* style: Perform style fixes with pre-commit

* chore: Remove R-CMD-check action for now

* ci: Change cargo-fmt to have language of rust
* feat: Add from_newick function to parse newick string

* refactor: Revert back order_cherries to use simple vector, not hashmap

* refactor: Renamed v_res to v

* refactor: Revert back build_vector to use idxs temp array
* feat: Add newick string operation functions

* docs: Add docstrings for functions
Madeline and others added 25 commits April 25, 2025 14:07
* preliminary tests added

* merge

* tests

* clarified insert function names

* more tests

* style: pre-commit fixes

* revert renaming insert

* merge

* style: pre-commit fixes

* accidental comment

* corrected tests

---------

Co-authored-by: Madeline <madgord@Madelines-MacBook-Pro.local>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* chore: Update docs for R and fix binding

* chore: Run build

* test: Add R tests with testthat

* chore: Add easy R install

* ci: Add R ci test

* ci: Update to have args input for r tasks

* docs: Update phylo2vec misspelling

* Apply suggestions from code review

Co-authored-by: Maddie Gordon <50681653+madelinegordon@users.noreply.github.com>

---------

Co-authored-by: Maddie Gordon <50681653+madelinegordon@users.noreply.github.com>
* test: add initial benchmarking suite for rust bindings

* test: add python benchmark workflow

* test: update benchmark name
* refactor addleaf and removeleaf

* rust format

* decoupling

* style: pre-commit fixes

* python bindings

* remove using

* added pyo3 apis

* format nits

---------

Co-authored-by: Madeline <madgord@Madelines-MacBook-Pro.local>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* feat: io modules draft

* fix: update python API with correct function names

* docs: add docstrings and update API reference

* style: make io names clearer

* docs: update API reference

* fix: added file suffix validation on reading files

* style: rename supported file extension constants
* added matrix & parse newick with bls

* binding

* updates

* get cherries tests pass

* added sample_matrix

* added sample_matrix changes to the python side

* updates

* test cases

* rust analyzer fixes

* account for sample_vector name change in benchmarks

* rust formatting

* duplicate line

* python benchmarks sample_vector rename

* docstring and unused variable

---------

Co-authored-by: Madeline <madgord@Madelines-MacBook-Pro.local>
Co-authored-by: Madeline <madgord@Madelines-MacBook-Pro.local>
* ci: Add python version update script and update CD config

* feat: Enhance versioning logic in CI workflow for releases and test releases
* feat: Update version determination action and integrate into CI workflow

* feat: Use commit hash for version and fix semver

* feat: Modify the version to be distance from latest tag

* feat: Add fetch-depth 0 to get tags

* chore: Uncomment publish action

* fix: Fix return type hint

* feat: Remove unused import

* chore: Skip git cli call error
* refactor: added iterative get_cherries

* refactor: clean up newick API

* fix: use private stoi_substr
* ci: Add R CD workflow

* chore: Remove set version for now

* fix: Try to get r dependencies ahead of time

* fix: Fix argument variable for devtools build

* fix: Add dist mkdir step

* fix: Remove r deps to phylo2vec dir for build

* fix: Remove r-deps step

* fix: Make binary build instead of source code

* fix: Change macOS path to be .tgz

* feat: Add R version determination and update functionality

* fix: Set up Python environment with specified version in CI workflows

* fix: Update Python setup action to v5 and refine version regex patterns in update_r_version.py

* fix: Update R version determination to read from DESCRIPTION file in action.yml

* fix: Update Python version to 3.11 in CI workflows

* fix: Ensure pip is installed before installing dependencies in action.yml

* fix: Ensure bash shell is explicitly set for the 'Ensure pip is installed' step in action.yml

* fix: Update Python version to '3.x' in CI workflows and remove container image for build-linux

* fix: Set R version to 'release' in setup-r action for consistency

* fix: Remove macos-13 runner

* fix: Remove 'test-r-build' branch from workflow triggers

* refactor: Consolidate version update logic into a single script and remove obsolete files
* added to_newick_from_matrix and check_m

* style: pre-commit fixes

* comments

* style: pre-commit fixes

* rust linter

* rust test correction

* remove unnecessary doctest

* renamed existing to_newick for clarity

* style: pre-commit fixes

* name update

* missed naming updates

* r data structure

* input type

* typo

* fixed R datatype conversion

* deepsource ignore

* style: pre-commit fixes

* Update lib.rs

* style: pre-commit fixes

* deepsource comment

* chore: Ignore some anti-pattern and fix some

* chore: Remove comment, ignored in deepsource as intentional

---------

Co-authored-by: Madeline <madgord@Madelines-MacBook-Pro.local>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Landung 'Don' Setiawan <landungs@uw.edu>
* docs: add demo notebooks

* style: pre-commit fixes

* docs: add development guide

* docs: add profiling and benchmark sections

* style: pre-commit fixes

* docs: remove demo_matrix.ipynb for refactoring

* style: pre-commit fixes

* docs: remove demo_matrix from TOC

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* test: add code profiling

* chore: add rust profiling to workflow

* fix: update rust ci steps order

* fix: add checkout step to rust ci

* fix: add samply install to pixi workflow

* fix: add elevated perf_event permissions

* fix: no server start on samply record

* refactor: add rust benchmarks and profiling pixi task

* style: pre-commit fixes

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* chore: update profiling imports for CI

* refactor: switch to to_newick_from_vector
* Create CODE_OF_CONDUCT.md

* Create CONTRIBUTING.md

* style: pre-commit fixes

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* refactor: Update README and remove setup.py

* chore: Add badges and update couple of things
@lsetiawan lsetiawan merged commit de796ed into main Apr 25, 2025
35 checks passed
@lsetiawan lsetiawan deleted the dev branch April 25, 2025 21:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants