(v1.10.0)=
scanpy 1.10 brings a large amount of new features, performance improvements, and improved documentation.
Some highlights:
- Improved support for out-of-core workflows via
dask. See new tutorial: {doc}/tutorials/experimental/daskdemonstrating counts-to-clusters for 1.4 million cells in <10 min. - A new {doc}
basic clustering tutorial </tutorials/basics/clustering>demonstrating an updated workflow. - Opt-in increased performance for neighbor search and clustering ({doc}
how to guide </how-to/knn-transformers>). - Ability to
maskobservations or variables from a number of methods (see {doc}/tutorials/plotting/advancedfor an example with plotting embeddings) - A new function {func}
~scanpy.get.aggregatefor computing aggregations of your data, very useful for pseudo bulking!
- {func}
~scanpy.pp.scrubletand {func}~scanpy.pp.scrublet_simulate_doubletswere moved from {mod}scanpy.external.ppto {mod}scanpy.pp. Thescrubletimplementation is now maintained as part of scanpy {pr}2703{smaller}P Angerer - {func}
scanpy.pp.pca, {func}scanpy.pp.scale, {func}scanpy.pl.embedding, and {func}scanpy.experimental.pp.normalize_pearson_residuals_pcanow support amaskparameter {pr}2272{smaller}C Bright, T Marcella, & P Angerer - Enhanced dask support for some internal utilities, paving the way for more extensive dask support {pr}
2696{smaller}P Angerer - {func}
scanpy.pp.highly_variable_genessupports dask for the defaultseuratandcell_rangerflavors {pr}2809{smaller}P Angerer - New function {func}
scanpy.get.aggregatewhich allows grouped aggregations over your data. Useful for pseudobulking! {pr}2590{smaller}Isaac Virshup{smaller}Ilan Gold{smaller}Jon Bloom - {func}
scanpy.pp.neighborsnow has atransformerargument allowing the use of different ANN/ KNN libraries {pr}2536{smaller}P Angerer - {func}
scanpy.experimental.pp.highly_variable_genesusingflavor='pearson_residuals'now uses numba for variance computation and is faster {pr}2612{smaller}S Dicks & P Angerer - {func}
scanpy.tl.leidennow offersigraph's implementation of the leiden algorithm via viaflavorwhen set toigraph.leidenalg's implementation is still default, but discouraged. {pr}2815{smaller}I Gold - {func}
scanpy.pp.highly_variable_geneshas new flavorseurat_v3_paperthat is in its implementation consistent with the paper description in Stuart et al 2018. {pr}2792{smaller}E Roellin - {func}
scanpy.datasets.blobsnow accepts arandom_stateargument {pr}2683{smaller}E Roellin - {func}
scanpy.pp.pcaand {func}scanpy.pp.regress_outnow accept a layer argument {pr}2588{smaller}S Dicks - {func}
scanpy.pp.subsamplewithcopy=Truecan now be called in backed mode {pr}2624{smaller}E Roellin - {func}
scanpy.pp.harmony_integratenow runs with 64 bit floats improving reproducibility {pr}2655{smaller}S Dicks - {func}
scanpy.tl.rank_genes_groupsno longer warns that it's default was changed from t-test_overestim_var to t-test {pr}2798{smaller}L Heumos scanpy.pp.calculate_qc_metricsnow allowsqc_varsto be passed as a string {pr}2859{smaller}N Teyssier- {func}
scanpy.tl.leidenand {func}scanpy.tl.louvainnow store clustering parameters in the key provided by thekey_addedparameter instead of always writing to (or overwriting) a default key {pr}2864{smaller}J Fan - {func}
scanpy.pp.scalenow clipsnp.ndarrayalso at- max_valuefor zero-centering {pr}2913{smaller}S Dicks - Support sparse chunks in dask {func}
~scanpy.pp.scale, {func}~scanpy.pp.normalize_totaland {func}~scanpy.pp.highly_variable_genes(seuratandcell-rangertested) {pr}2856{smaller}ilan-gold
- Doc style overhaul {pr}
2220{smaller}A Gayoso - Re-add search-as-you-type, this time via
readthedocs-sphinx-search{pr}2805{smaller}P Angerer - Fixed a lot of broken usage examples {pr}
2605{smaller}P Angerer - Improved harmonization of return field of
sc.ppandsc.tlfunctions {pr}2742{smaller}E Roellin - Improved docs for
percent_topargument of {func}~scanpy.pp.calculate_qc_metrics{pr}2849{smaller}I Virshup - New basic clustering tutorial ({doc}
/tutorials/basics/clustering), based on one from scverse-tutorials {pr}2901{smaller}I Virshup - Overhauled {doc}
/tutorials/indexpage, and added new {doc}/how-to/indexsection to docs {pr}2901{smaller}I Virshup - Added a new tutorial on working with dask ({doc}
/tutorials/experimental/dask) {pr}2901{smaller}I Gold{smaller}I Virshup
- Updated {func}
~scanpy.read_visiumsuch that it can read spaceranger 2.0 files {smaller}L Lehner - Fix {func}
~scanpy.pp.normalize_totalfor dask {pr}2466{smaller}P Angerer - Fix setting :attr:
scanpy.settings.verbosityin some cases {pr}2605{smaller}P Angerer - Fix all remaining pandas warnings {pr}
2789{smaller}P Angerer - Fix some annoying plotting warnings around violin plots {pr}
2844{smaller}P Angerer - Scanpy now has a test job which tests against the minumum versions of the dependencies. In the process of implementing this, many bugs associated with using older versions of
pandas,anndata,numpy, andmatplotlibwere fixed. {pr}2816{smaller}I Virshup - Fix warnings caused by internal usage of
pandas.DataFrame.stackwithpandas>=2.1{pr}2864{smaller}I Virshup - {func}
scanpy.get.aggregatenow always returns {class}numpy.ndarray{pr}2893{smaller}S Dicks - Removes self from array of neighbors for
use_approx_neighbors = Truein {func}~scanpy.pp.scrublet{pr}2896{smaller}S Dicks - Compatibility with scipy 1.13 {pr}
2943{smaller}I Virshup - Fix use of {func}
~scanpy.tl.dendrogramon highly correlated low precision data {pr}2928{smaller}P Angerer - Fix pytest deprecation warning {pr}
2879{smaller}P Angerer
- Scanpy is now tested against python 3.12 {pr}
2863{smaller}ivirshup - Fix testing package build {pr}
2468{smaller}P Angerer
- Dropped support for Python 3.8. More details here. {pr}
2695{smaller}P Angerer - Deprecated specifying large numbers of function parameters by position as opposed to by name/keyword in all public APIs.
e.g. prefer
sc.tl.umap(adata, min_dist=0.1, spread=0.8)oversc.tl.umap(adata, 0.1, 0.8){pr}2702{smaller}P Angerer - Dropped support for
umap<0.5for performance reasons. {pr}2870{smaller}P Angerer