Skip to content

TileDB-SOMA 1.15.0

Latest
Compare
Choose a tag to compare
@johnkerl johnkerl released this 17 Dec 16:17
· 2 commits to release-1.15 since this release
e5d19d0

Summary

This release contains several important developments:

New features added

Spatial transcriptomics

  • [python] Add to_spatial_data method to ExperimentAxisQuery #3431
  • [python] Export full experiment to SpatialData #3409
  • [python] Fix typos and import order in the spatial outgest #3381
  • [python] Fix output type when exporting PointCloudDataFrame to SpatialData points #3408
  • [python] Update Scene create method in the Python API #3356
  • [python] Change import experimental -> io.spatial in test #3394
  • [python] Add support for exporting to SpatialData without transform #3392
  • [python] Rename to_spatial_data -> to_spatialdata #3449
  • [python] Move experimental module to io.spatial #3384
  • [python] Add export for MultiscaleImage to SpatialData by @jp-dark in #3355
  • [python] Add PointCloudDataFrame to SpatialData points model by @jp-dark in #3357
  • [python] Add MultiscaleImage level SpatialData exporter by @jp-dark in #3342
  • [python] Spatial changes required for somacore 1.0.24 by @jp-dark in #3333
  • [python] Fix and test SpatialData transformation exporter by @jp-dark in #3330
  • [python] Rewrite Xarray support to use dask arrays by @jp-dark in #3325
  • [python] Return identity for MultiscaleImage transform to/from level 0 by @jp-dark in #3323
  • [python] Add MultiscaleImage methods to access level URI by @jp-dark in #3322
  • [python] Add export for PointCloudDataFrame to SpatialData shapes by @jp-dark in #3298
  • [python] Create xarray backend for DataArray types by @jp-dark in #3243
  • [python] Update spatial API to match somacore 1.0.23 by @jp-dark in #3274
  • [c++] Cast vertex list to WKB by @XanthosXanthopoulos in #3222
  • [c++] Geometry Dataframe by @XanthosXanthopoulos in #3212

Performance improvements

  • [python] Remove double open For SOMAArray reads #3293
  • [python,c++] Improve error handling in IntIndexer #3441
  • [python] Some memory-reduction for append mode #3404
  • [python] Extend #3354 to categoricals of arbitrary value type #3415
  • [python] Protect against huge enum-of-strings input #3354
  • [python] Optimization of ExperimentAxisQuery to_anndata by @bkmartinjr in #3359
  • [python] Fix incorrect type handling in ExperimentAxisQuery sparse reader by @bkmartinjr in #3375
  • [python/C++] Release GIL in IntIndexer C++ code by @bkmartinjr in #3344
  • [python] Partition sparse matrix reads in tiledbsoma.io.to_anndata by @bkmartinjr in #3328
  • [python/c++] COO to CSX conversion optimization by @bkmartinjr in #3304
  • [python] Performance improvement for experiment-level resize by @johnkerl in #3308
  • [python] Add ManagedQuery bindings by @nguyenv in #3281
  • [python] Ingest somacore classes by @ryan-williams in #3307
  • [c++] Fix heap management in fastercsx by @johnkerl in #3365
  • [c++] Add ManagedQuery constructor that takes SOMAArray by @nguyenv in #3279
  • [c++] Add ManagedQuery::set_layout by @nguyenv in #3278
  • [c++] Use schema from tiledb::Array instead of ManagedQuery by @nguyenv in #3277
  • [c++] Move casting from SOMAArray to ManagedQuery by @nguyenv in #3275

Seurat I/O

  • [r] Add initial support for ragged array writing for Seurat v5 by @mojaveazure in #2523

New shape

  • [c++] Some use_current_domain unit-test/feature-flag teardown, part 4/n #3372
  • [c++] Some use_current_domain unit-test/feature-flag teardown, part 3 of 4 #3371
  • [c++] Some use_current_domain unit-test/feature-flag teardown, part 2/n #3370
  • [c++] Some use_current_domain unit-test/feature-flag teardown, part 1 of 4 #3369
  • [c++] Use valid ASCII for wide-as-possible string current domain #3367
  • [c++] Match zero-basing for old/new sparse-array shapes #3439
  • [r] Add check_only support for domain/shape updates #3400
  • [python/r] Update docstrings for domain argument to create #3396
  • [r] Vignette for new-shape feature #3302
  • [c++] Fix upgrade-soma-joinid-shape for dataframes having non-standard dimensions #3416
  • [python/r] Docstring audit for new shape #3399
  • [c++] Some use_current_domain unit-test/feature-flag teardown, part 4 of 4 by @johnkerl in #3372
  • [c++] Some use_current_domain unit-test/feature-flag teardown, part 3 of 4 by @johnkerl in #3371
  • [c++] Some use_current_domain unit-test/feature-flag teardown, part 2 of 4 by @johnkerl in #3370
  • [python/r] Remove 2.27-related feature flag by @johnkerl in #3368
  • [r/python] Revert #3300 by @johnkerl in #3358
  • [python/r] Enforce dataframe domain lower bound == 0 by @johnkerl in #3300
  • [c++] Use valid ASCII for wide-as-possible string current domain by @johnkerl in #3367
  • [python] Use new shape in one more spot by @johnkerl in #3321
  • [python] Fix bad merge of soma-shapes notebook by @johnkerl in #3309
  • [python] Tutorial notebook for the new-shape feature by @johnkerl in #3294
  • [r] Data refresh for new shapes by @johnkerl in #3303
  • [python/r] Move beyond the new-shape feature flag by @johnkerl in #3301
  • [python] Fix dense example data for core 2.27 by @johnkerl in #3296
  • [python/docs] Replace experiment directories with .tgz files in source control by @johnkerl in #3295
  • [python] Doc updates for new-shape feature by @johnkerl in #3285
  • [python] Run upgrade-shapes on notebook example experiments by @johnkerl in #3289
  • [python] Include tiledbsoma_upgrade_shape for DenseNDArray by @johnkerl in #3288
  • [python] More auto-detect of function_name_for_messages by @johnkerl in #3286
  • [r] More fixes for unit-test cases with dense + core 2.27 by @johnkerl in #3280
  • [python] Fix last 2.27+Python+dense failing test case by @johnkerl in #3269
  • [r] Fixes for dense+2.27 by @johnkerl in #3270
  • [python] Fix 3D/4D cases with core 2.27 by @johnkerl in #3268
  • [c++] Apply subarrays for dense reads and writes by @johnkerl in #3263
  • [python] Fix some dense+2.27 failing test cases by @johnkerl in #3265
  • [python] Centralize sparse/dense pybind11 shape methods by @johnkerl in #3261
  • [python] Re-run, and update, example notebooks with new shape feature by @johnkerl in #3290

Upcoming deprecation notices

  • The .used_shape accessor for SparseNDArray and DenseNDArray is scheduled for removal in 1.16: as of 1.15 the .shape accessor replaces it.

Bug fixes

  • [python] ExperimentAxisQuery: to_anndata obsp/varp as sparse matrices #3387
  • [python] Fix conditional fall-through in SOMAObject.open #3446
  • [c++] Fix bug with sliced Arrow-table writes, with string columns #3433
  • [python, c++] Fix misleading DoesNotExistErrors in open factory #3402
  • [c++] ManagedQuery::set_condition should not reset entire instance state #3418
  • [r] Update changelog and develop version for #3395 #3401
  • [r] Adjust blockwise + re-indexer to return condensed matrix, not full domain #3395
  • [python] Re-introduce tiledb_ctx for SOMATileDBContext #3335

Minor changes

Documentation infastructure

Packaging and CI

  • [python] Pin dask version 2024.11.2 to unblock CI #3403
  • [python] Pre-emptively avoid SciPy 1.15, pending a bugfix #3445
  • [c++] Use core 2.27.0 #3421
  • [c++] Use core 2.27.0.rc5 #3410
  • [c++/python/r] Use core 2.27.0-rc3 by @johnkerl in #3366
  • [packaging] More failure info in update-tiledb-versions.py by @johnkerl in #3363
  • [python] Run pre-commit autoupdate by @johnkerl in #3326
  • [r/python] Note on dev installs and spdlog failures by @johnkerl in #3324
  • [r/ci] Remove tiledb-r specific install by @mojaveazure in #3319
  • [r/ci] Try to unbreak r-valgrind CI by @johnkerl in #3318
  • [r/ci] Avoid log truncation with "Last 13 lines of output" by @johnkerl in #3313
  • [r] Run tests in closer to internal-dependency order by @johnkerl in #3311
  • [python] Unbreak CI with anndata==0.11 by @johnkerl in #3305
  • [python] Fix some warnings at anndata==0.11 by @johnkerl in #3306

Remove TileDB-Py as a required dependency

  • [python] Update README.md to remove tiledb-py by @nguyenv in #3346

Other internals

  • [python] Remove use of deprecated schema-display function #3380
  • [r] Use standard name zzz.R for init code by @johnkerl in #3332
  • [r] Address two more compiler warnings by @johnkerl in #3320
  • [c++] Fix a compiler warning by @johnkerl in #3310
  • [python] Consolidate all _set_coords methods into single _util function by @nguyenv in #3292
  • [python] Rename set_reader_coords to set_coords by @johnkerl in #3253
  • [python] Use somacore 1.0.26 #3460
  • [python] Use somacore 1.0.25 #3455
  • [c++] Add ASAN run of CI to weekly CI job #3434