New features added
Primary: enumerated types AKA categoricals AKA factors:
* [python] Support `Enumeration` in Python API by nguyenv in https://github.com/single-cell-data/TileDB-SOMA/pull/1511
* [r] Add enumeration support by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1559
* [r] Update `write_soma.data.frame()` to support categoricals by mojaveazure in https://github.com/single-cell-data/TileDB-SOMA/pull/1686
* [c++] Support `Enumeration` in C++ codebase by nguyenv in https://github.com/single-cell-data/TileDB-SOMA/pull/1519
* [c++] Depend on core 2.17.0 by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1677
As well:
* [python] Append-mode pre-check logic by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1554
* [python] Add parameters to `ExperimentAxis` query methods by ebezzi in https://github.com/single-cell-data/TileDB-SOMA/pull/1553
* [python] Improve guidance on non-ingestible NaN data in categorical-int obs/var columns by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1568
* [python] Append-mode label/ID-mapping logic by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1556
* [python] `update_obs`/`update_var` by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1586
* [python] Support H5AD ingest directly from S3 in backed mode by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1629
* [python] Append-mode I/O step by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1587
* [python] Check that `update_obs`/`update_var` do not update row counts by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1639
* [python] Port bounding-box logic from R to Python by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1648
* [python] `append_obs`/`append_var` by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1634
* [python] Support X-free AnnData files by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1672
* [r] Add SOMA Experiment Query -> SingleCellExperiment outgestor by mojaveazure in https://github.com/single-cell-data/TileDB-SOMA/pull/1279
* [r] Add SingleCellExperiment -> SOMA Ingestor by mojaveazure in https://github.com/single-cell-data/TileDB-SOMA/pull/1547
* [r] Add bounding box to arrays by mojaveazure in https://github.com/single-cell-data/TileDB-SOMA/pull/1513
* [r] Adjust bounding box to be spec compliant by mojaveazure in https://github.com/single-cell-data/TileDB-SOMA/pull/1644
* [r] Support updating obs and var by aaronwolen in https://github.com/single-cell-data/TileDB-SOMA/pull/1643
Minor changes
* [python] Add a missing log-line for uns ndarray ingest by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1551
* [python] Usability improvements to profiler by atolopko-czi in https://github.com/single-cell-data/TileDB-SOMA/pull/1516
* [python] Replace dataclasses with attrs by thetorpedodog in https://github.com/single-cell-data/TileDB-SOMA/pull/1557
* [python] Make `tiledbsoma.io._create_or_open_coll` compatible with 1.2.7 by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1592
* [python] Decouple 1587 and 1592 by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1594
* [python] Update to `_create_or_open_coll` for 1.2.7 compatibility by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1606
* [python] Don't accept lists for Python metadata entries, but on purpose by thetorpedodog in https://github.com/single-cell-data/TileDB-SOMA/pull/1645
* [python] Export `update_obs` and `update_var` from `tiledbsoma.io` by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1660
* [r] Docs and NAMESPACE cleanup by aaronwolen in https://github.com/single-cell-data/TileDB-SOMA/pull/1566
* [r] Temporarily install tiledb-r from r-universe by aaronwolen in https://github.com/single-cell-data/TileDB-SOMA/pull/1570
* [r] Experiments for r-universe dependencies on Mac by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1571
* [r] Include system prerequisites in install notes by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1580
* [r] Trivial whitespace mod on README.md by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1583
* [r] Remove workaround for tiledb-r 0.20.3 while CRAN was on break by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1581
* [r] Add ability to install BioC packages to r-ci.sh [ci skip] by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1589
* [r] Bump version in `apis/r/DESCRIPTION` file by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1596
* [r] Accomodate RedHat install path in package-internal path by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1633
* [r] Additional polish for R CMD check --as-cran by r-devel by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1641
* [r] Add a finalizer for the SOMAArray instance and assure valgrind tests pass by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1636
* [r] Add three valgrind options by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1658
* [r] Refactor iterated reader lifetime by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1657
* [r] More tweaks for tests by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1659
* [r] Use the new tiledb-r release in CI by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1663
* [c++] Addition of `SOMA{Dense,Sparse}NDArray` by nguyenv in https://github.com/single-cell-data/TileDB-SOMA/pull/1529
* [c++] Add new constructor, factor validation helper by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1560
* [c++] Addition of `SOMACollection`, `SOMAMeasurement`, `SOMAExperiment` by nguyenv in https://github.com/single-cell-data/TileDB-SOMA/pull/1541
* [c++] `SOMACollection` Takes Start and End Timestamp by nguyenv in https://github.com/single-cell-data/TileDB-SOMA/pull/1576
* [c++] Support reading member-to-uri mapping in read and write mode by nguyenv in https://github.com/single-cell-data/TileDB-SOMA/pull/1627
* [c++] `SOMAObject` Metadata Methods Should Be Virtual by nguyenv in https://github.com/single-cell-data/TileDB-SOMA/pull/1631
* Extract method for `obsm`/`varm` outgest by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1646
* [c++] Don't use Python to generate C++ test inputs by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1668
* [c++] Removed unused-variable warning by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1680
* [ci] Interop-CI update by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1679
* [ci] Trivial typofixes by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1681
* [ci] Have clang-format show version by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1682
* Pd/add output on failure by davisp in https://github.com/single-cell-data/TileDB-SOMA/pull/1688
Bug fixes
* [python] Generalize `add_X_layer` URI handling by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1548
* [python] Adding missing context in ingest uns ndarray by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1552
* [python] Fix For 1456: Invalid Result With PyArrow Array Coords by nguyenv in https://github.com/single-cell-data/TileDB-SOMA/pull/1573
* [python] Avoid unnecessary slowdown on empty sparse arrays by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1649
* [python] Typo fix in `devtools/outgestor` by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1652
* [python] Lazily initialize a default global TileDB context. by thetorpedodog in https://github.com/single-cell-data/TileDB-SOMA/pull/1661
* [python] Leverage bounding-box feature for obsm/varm outgest robustness by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1650
* [python] Restore efficiency on zero-cell `X` by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1671
* [python] Initialize TileDB Contexts extremely lazily. by thetorpedodog in https://github.com/single-cell-data/TileDB-SOMA/pull/1664
* [python] Pass user configuration/timestamp to query condition init by Shelnutt2 in https://github.com/single-cell-data/TileDB-SOMA/pull/1687
* [python] Categorical-write corner-case by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1691
* [python] Fix pandas categorical test by johnkerl in https://github.com/single-cell-data/TileDB-SOMA/pull/1693
* [r] Ensure numeric axis query coordinates are converted by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1540
* [r] Update Rd/ directory to quieten checks by eddelbuettel in https://github.com/single-cell-data/TileDB-SOMA/pull/1647
New Contributors
* davisp made their first contribution in https://github.com/single-cell-data/TileDB-SOMA/pull/1688
**Full Changelog**: https://github.com/single-cell-data/TileDB-SOMA/compare/1.3.0...1.5.0rc0