- Classes extend
BiocObjectfrom biocutils. validateparam in the constructor is renamed to_validate.
- Implement
CompressedIRangesListextending the base compressed-lists class
- Switch to the nearest implementation from LTLA/nclist-cpp (v0.3.0).
- Improved worksharing across threads for
find_overlaps_groupsandnearest_groups. The idea is to ensure that all threads are occupied, even when the groups are of different sizes. This is done with some more fine-grained parallelization during both index building and overlap identification.
- Switch to LTLA/nclist-cpp for overlap and intersection operations.
- Update Github template and setup.py to support editable builds.
- Improving performance of search operations - nearest, follow and precede.
- Method to delete cached nclist index, automatically remove as needed when properties are modified (starts, widths).
- Add a method to get exclusive end positions.
- Fixes edge cases for overlap and search methods.
- Add tile and sliding window operations.
- Updates tests to capture most scenarios.
- Update docstrings and edit tutorials.
This is a major rewrite of the package partly driven by performance and for better consistency with the IRanges R/Bioconductor package.
- Using pybind11, reimplement inter-range methods to a cpp implementation using code derived from the R package.
- Better Start/End/Width resolver that is similar to the R implementation.
- Overhaul of many of the find overlaps and search methods to better align with R's expectations of how these methods work.
- Update docstrings, more tests.
- chore: Remove Python 3.8 (EOL)
- precommit: Replace docformatter with ruff's formatter
- Added a numpy vectorized version of finding gaps (tldr: not fast compared to the traditional version). May be needs a better implementation
- Added NCLS based intersection operation (based on what pyranges does in their internals)
- Added tests for intersection operations.
- Fixed and issue when coercing
IRangescontaining mcols.
Optimizing a couple of methods in IRanges:
- Update
gapsandreduceto slightly faster NumPy based operations. - Switch
np.arraytonp.asarray
Changes to be compatible with NumPy's 2.0 release:
If using
np.array(obj, copy=False)replace it withnp.asarray(obj)to allow a copy when needed (no behavior change in NumPy 1.x). For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
- Support coercion from
IRangesto Polars and vice-versa - Setting up
myst_nbto execute snippets in tutorial/documentation markdown files
- Feature complete implementation of IRanges from Bioconductor
