|
| 1 | +(v1.12.0)= |
| 2 | +### 1.12.0 {small}`2026-01-23` |
| 3 | + |
| 4 | +Release candidates: |
| 5 | + |
| 6 | +- (v1.12.0rc1)= |
| 7 | + {guilabel}`rc1` 2025-11-10 |
| 8 | + |
| 9 | +#### Breaking changes |
| 10 | + |
| 11 | +- {guilabel}`rc1` Adopt the Scientific Python [deprecation schedule](https://scientific-python.org/specs/spec-0000/): |
| 12 | + remove Python ≤3.11 support and officially add Python 3.13 and 3.14 support, require anndata≥0.10 {smaller}`P Angerer` ({pr}`3485`, {pr}`3874`) |
| 13 | + |
| 14 | +#### Features |
| 15 | + |
| 16 | +- {guilabel}`rc1` Added `n_components` parameter to {func}`~scanpy.tl.tsne` {smaller}`Kitsune` ({pr}`2803`) |
| 17 | +- {guilabel}`rc1` {func}`scanpy.pp.highly_variable_genes` flavors `seurat_v3` and `seurat_v3_paper` are now `dask`-compatible {smaller}`I Gold` ({pr}`3340`) |
| 18 | +- {guilabel}`rc1` Add {mod}`zarr` support and `convert_strings_to_categoricals` parameter to {func}`scanpy.write` {smaller}`P Angerer` ({pr}`3498`) |
| 19 | +- {guilabel}`rc1` Add support for {class}`scipy.sparse.csr_array` and {class}`scipy.sparse.csc_array` {smaller}`P Angerer` ({pr}`3563`) |
| 20 | +- {guilabel}`rc1` Added a new `compressed` parameter to {func}`~scanpy.read_10x_mtx` to support reading uncompressed matrix files produced by tools like STARsolo {smaller}`T Kuthuru` ({pr}`3564`) |
| 21 | +- {guilabel}`rc1` Make {func}`scanpy.get.aggregate` {doc}`dask:index` compatible with all aggregations except median {smaller}`I Gold` ({pr}`3700`) |
| 22 | +- {guilabel}`rc1` Add `filter_unexpressed_genes` parameter to {func}`scanpy.pp.highly_variable_genes` {smaller}`M Mueller` ({pr}`3767`) |
| 23 | +- {guilabel}`rc1` Add column `"n_obs_aggregated"` to {func}`scanpy.get.aggregate` output to show the total number of observations aggregated per group {smaller}`R Disa` ({pr}`3824`) |
| 24 | +- {guilabel}`rc1` Add `method='jaccard'` for generating connectivities in {func}`scanpy.pp.neighbors` {smaller}`J Pintar` ({pr}`3831`) |
| 25 | +- {guilabel}`rc1` Add in `csc`-in-{doc}`dask:index` support for {func}`scanpy.get.aggregate` {smaller}`I Gold` ({pr}`3872`) |
| 26 | +- {guilabel}`rc1` Raised warnings now always point at user code, not internal scanpy code {smaller}`P Angerer` ({pr}`3876`) |
| 27 | +- Add modularity scoring via {func}`scanpy.metrics.modularity` with support for directed/undirected graphs {smaller}`A. Karesh` ({pr}`3613`) |
| 28 | +- Added `distances` parameter to {func}`scanpy.pp.neighbors`, allowing to compute graphs from a precomputed distance matrix {smaller}`A. Karesh` ({pr}`3627`) |
| 29 | +- {func}`scanpy.pl.dotplot` now supports a `group_colors` parameter for custom per-group coloring with perceptually uniform color gradients via OKLab interpolation. {smaller}`R Baber` ({pr}`3764`) |
| 30 | +- Allow specifying graphs in {mod}`scanpy.metrics` functions {smaller}`P Angerer` ({pr}`3898`) |
| 31 | + |
| 32 | +#### Miscellaneous changes |
| 33 | + |
| 34 | +- {guilabel}`rc1` Replaced several internal utilities with their {mod}`fast_array_utils` counterparts {smaller}`P Angerer` ({pr}`3598`) |
| 35 | +- {guilabel}`rc1` Deprecate {func}`scanpy.tl.louvain` {smaller}`P Angerer` ({pr}`3658`) |
| 36 | +- {guilabel}`rc1` Deprecate `save` parameter of plotting functions. {smaller}`zethson` ({pr}`3675`) |
| 37 | +- {guilabel}`rc1` Remove support for the experimental and unmaintained `zappy` library {smaller}`P Angerer` ({pr}`3884`) |
| 38 | +- Remove development extras (`scanpy[test,dev]`) in favor of dependency groups {smaller}`P Angerer` ({pr}`3905`) |
| 39 | + |
| 40 | +#### Documentation |
| 41 | + |
| 42 | +- {guilabel}`rc1` Update tutorial {doc}`/tutorials/experimental/dask` for {mod}`anndata` 0.12 (see {pr}`scverse/scanpy-tutorials#186`) {smaller}`I Gold` ({pr}`3675`) |
| 43 | +- {guilabel}`rc1` Add a warning message to {func}`~scanpy.tl.rank_genes_groups` that it is not appropriate for most use-cases {smaller}`G Sturm` ({pr}`3792`) |
| 44 | +- Remove a few falsely advertised parameters from {func}`scanpy.pl.scatter` {smaller}`P Angerer` ({pr}`3894`) |
| 45 | +- Document array type support for most functions in {mod}`~scanpy.pp` and {mod}`~scanpy.tl` {smaller}`P Angerer` ({pr}`3895`) |
| 46 | +- Add cruft config & update authors {smaller}`zethson` ({pr}`3896`) |
| 47 | + |
| 48 | +#### Bug fixes |
| 49 | + |
| 50 | +- {guilabel}`rc1` Raise fewer redundant warnings, mainly in {mod}`scanpy.pl` and {mod}`scanpy.datasets` functions {smaller}`P Angerer` ({pr}`3724`) |
| 51 | +- {guilabel}`rc1` Fix `swap_axes` argument used with `standard_scale` in {func}`scanpy.pl.dotplot` {smaller}`I Gold` ({pr}`3851`) |
| 52 | +- {guilabel}`rc1` Allow operating on {attr}`~anndata.AnnData.obsm` arrays in {func}`scanpy.pp.normalize_total` and {func}`scanpy.pp.pca` {smaller}`P Angerer` ({pr}`3863`) |
| 53 | +- {guilabel}`rc1` Fix {func}`~scanpy.pl.dpt_groups_pseudotime` {smaller}`P Angerer` ({pr}`3864`) |
| 54 | +- Fix {func}`scanpy.get.aggregate` when a `by` column misses data {smaller}`P Angerer` ({pr}`3906`) |
| 55 | +- Fix compatibility with pandas 3.0 {smaller}`P Angerer` ({pr}`3929`) |
| 56 | +- Allow {func}`scanpy.read_10x_mtx` to read numeric gene IDs {smaller}`P Angerer` ({pr}`3932`) |
| 57 | +- Ensure {func}`scanpy.pp.scrublet` preserves (categorical) data types within `.obs` {smaller}`etlioglu` ({pr}`3939`) |
0 commit comments