- Fix issue coercing
SummarizedExperiments
toAnnData
objects and vice-versa. - Handling coercions when matrices are delayed arrays (for SE/RSE) or backed (for
AnnData
). - Update sphinx configuration to run snippets in the documentation.
This is a complete rewrite of the package, following the functional paradigm from our developer notes.
- Implements functional paradigm to access and set attributes on SE/RSE
- Can initialize SE/RSE without assays, also initialize an empty SE/RSE
row_data
andcolumn_data
are expected to beBiocFrame
objects and will be converted if a pandasDataFrame
is provided. This allows us to reduce complexity and implement consistent downstream operations. If these are not provided, an emptyBiocFrame
is set as default.- On RSE, if
row_ranges
is not provided, an emptyGenomicRangesList
is set as default. - SE/RSE now contain
row_names
andcolumn_names
that are separate from row_data's and column_data's row names, also helps in simplifying subset operations. - Printing SE/RSE objects now looks almost similar to R/Bioc's printing of these objects.
- Support combine operations, both strict and a flexible combine option when rows or columns do not exactly match between multiple objects.
- Streamlines subset operation for SE/RSE and probably downstream derivates; they only need to update the
slice
method.
In addition the following rules are set to access or update row_names
and column_names
either from the SE or the row_data
or column_data
slots.
- On construction, if
row_names
orcolumn_names
are not provided, these are automatically inferred fromrow_data
andcolumn_data
objects. - On extraction of these objects, the
row_names
inrow_data
andcolumn_data
are replaced by the equivalents from the SE level. - On setting these objects, especially with the functional style (
set_row_data
andset_column_data
methods), additional options are available to replace the names in the SE object.
Other changes
- Reduce dependency on a number of external packages.
- Update docstrings, tests and docs.
This release migrates the package to a more palatable Google's Python style guide. A major modification to the package is with casing, all camelCase
methods, functions and parameters are now snake_case
.
With respect to the classes, BaseSE
is an intenal-only class. RangedSummarizedExperiment
now extends SummarizedExperiment
and so do all derivates. Typehints have been updated to reflect these changes.
In addition, docstrings and documentation has been updated to use sphinx's features of linking objects to their types. Sphinx now also documents private and special dunder methods (e.g. __getitem__
, __copy__
etc). Intersphinx has been updated to link to references from dependent packages.
Configuration for flake8, ruff and black has been added to pyproject.toml and setup.cfg to be less annoying.
Finally, pyscaffold has been updated to use "myst-parser" as the markdown compiler instead of recommonmark. As part of the pyscaffold setup, one may use pre-commits to run some of the routine tasks of linting and formatting before every commit. While this is sometimes annoying and can be ignored with --no-verify
, it brings some consistency to the code base.
- rewriting Base classes, SE and RSE
- implement range methods specific to RSE
- tests
- docs
- more accessors to assays
- fix bug with defining shape of an experiment
- tests
- docs
- row/col data can be empty/None
- update tests and documentation
- Add subset, shape and custom print for the class
- Tests for subset
- Documentation update
- Initial creation of SE and RSE classes
- Tests
- Documentation