Release notes#
Version 0.9#
0.9.2 the future#
Bugfix
Views of
awkward.Arrays now work withawkward>=2.3#1040 @ivirshupFix ufuncs of views like
adata.X[:10].cov(axis=0)returning views #1043 @flying-sheepFix instantiating AnnData where
.Xis aDataFramewith an integer valued index #1002 @flying-sheepFix
read_zarr()when used onzarr.Group#1057 @ivirshup
0.9.1 2023-04-11#
Bugfix
0.9.0 2023-04-11#
Features
Added experimental support for dask arrays #813 @syelman @rahulbshrestha
obsm,varmandunscan now hold AwkwardArrays #647 @giovp, @grst, @ivirshupAdded experimental functions
anndata.experimental.read_dispatched()andanndata.experimental.write_dispatched()which allow customizing IO with a callback #873 @ilan-gold @ivirshupBetter error messages during IO #734 @flying-sheep, @ivirshup
Unordered categorical columns are no longer cast to object during
anndata.concat()#763 @ivirshup
Documentation
New tutorials for experimental features
File format description now includes a more formal specification #882 @ivirshup
Interoperability: new page on interoperability with other packages #831 @ivirshup
Expanded docstring more documentation for
backedargument ofanndata.read_h5ad()#812 @jeskowagnerDocumented how to use alternative compression methods for the
h5adfile format, seeAnnData.write_h5ad()#857 @nigeil
Breaking changes
The
AnnDatadtypeargument no longer defaults tofloat32#854 @ivirshupPreviously deprecated
force_densearugmentAnnData.write_h5ad()has been removed. #855 @ivirshupPreviously deprecated behaviour around storing adjacency matrices in
unshas been removed #866 @ivirshup
Other updates
Deprecations
AnnData.concatenate()is now deprecated in favour ofanndata.concat()#845 @ivirshup
Bug fixes
Fixed order dependent outer concatenation bug #904 @ivirshup, reported by @szalata
Fixed bug in renaming categories #790 @ivirshup, reported by @perrin-isir
Fixed IO bug when keys in
unsended in_categories#806 @ivirshup, reported by @HrovatinFixed
raw.to_adatanot populatingobsaligned values whenrawwas assigned through the setter #939 @ivirshup
Version 0.8#
0.8.1 the future#
Bug fixes
Fix warning from
rename_categories#790 I VirshupRemove backwards compat checks for categories in
unswhen we can tell the file is new enough #790 I VirshupCategorical arrays are now created with a python
boolinstead of anumpy.bool_#856
Documentation
0.8.0 14th March, 2022#
IO Specification
Warning
The on disk format of AnnData objects has been updated with this release.
Previous releases of anndata will not be able to read all files written by this version.
For discussion of possible future solutions to this issue, see #698
Internal handling of IO has been overhauled.
This should make it much easier to support new datatypes, use partial access, and use AnnData internally in other formats.
Each element should be tagged with an
encoding_typeandencoding_version. See updated docs on the file formatSupport for nullable integer and boolean data arrays. More data types to come!
Experimental support for low level access to the IO API via
read_elem()andwrite_elem()
Features
Added PyTorch dataloader
AnnLoaderand lazy concatenation objectAnnCollection. See the tutorials #416 S RybakovCompatibility with
h5adfiles written from Julia #569 I KatsMany logging messages that should have been warnings are now warnings #650 I Virshup
Significantly more efficient
anndata.read_umi_tools()#661 I VirshupFixed deepcopy of a copy of a view retaining sparse matrix view mixin type #670 M Klein
In many cases
Xcan now beNone#463 R Cannoodt #677 I Virshup. Remaining work is documented in #467.Removed hard
xlrddependency I Virshupobsandvardataframes are no longer copied by default onAnnDatainstantiation #371 I Virshup
Bug fixes
Fixed issue where
.copywas creating sparse matrices views when copying #670 michalk8Fixed issue where
.Xmatrix read in fromzarrwould always havefloat32values #701 I VirshupRaw.to_adata`now includesobspin the output #404 G Eraslan
Dependencies
xlrddropped as a hard dependencyNow requires
h5pyv3.0.0or newer
Version 0.7#
0.7.8 9 November, 2021#
Bug fixes
Re-include test helpers #641 I Virshup
0.7.7 9 November, 2021#
Bug fixes
Fixed propagation of import error when importing
write_zarrbut not all dependencies are installed #579 R HilljeFixed issue with
.unssub-dictionaries being referenced by copies #576 I VirshupFixed out-of-bounds integer indices not raising
IndexError#630 M KleinFixed backed
SparseDatasetindexing with scipy 1.7.2 #638 I Virshup
Development processes
Use PEPs 621 (standardized project metadata), 631 (standardized dependencies), and 660 (standardized editable installs) #639 I Virshup
0.7.6 11 April, 2021#
New features
Added
anndata.AnnData.to_memory()for returning an in memory object from a backed one #470 #542 V Bergen I Virshupanndata.AnnData.write_loom()now writesobs_namesandvar_namesusing theIndex’s.nameattribute, if set #538 I Virshup
Bug fixes
Fixed bug where
np.str_column names errored at write time #457 I VirshupFixed “value.index does not match parent’s axis 0/1 names” error triggered when a data frame is stored in obsm/varm after obs_names/var_names is updated #461 G Eraslan
Fixed
adata.write_csvswhenadatais a view #462 I VirshupFixed null values being converted to strings when strings are converted to categorical #529 I Virshup
Fixed handling of compression key word arguments #536 I Virshup
Fixed copying a backed
AnnDatafrom changing which file the original object points at #533 ilia-katsFixed a bug where calling
AnnData.concatenateanAnnDatawith no variables would error #537 I Virshup
Deprecations
Passing positional arguments to
anndata.read_loom()besides the path is now deprecated #538 I Virshupanndata.read_loom()argumentsobsm_namesandvarm_namesare now deprecated in favour ofobsm_mappingandvarm_mapping#538 I Virshup
0.7.5 12 November, 2020#
Functionality
Added ipython tab completion and a useful return from
.keystoadata.uns#415 I Virshup
Bug fixes
0.7.4 10 July, 2020#
Concatenation overhaul #378 I Virshup
New function
anndata.concat()for concatenatingAnnDataobjects along either observations or variablesNew documentation section: Concatenation
Functionality
AnnData object created from dataframes with sparse values will have sparse
.X#395 I Virshup
Bug fixes
0.7.3 20 May, 2020#
Bug fixes
Fixed bug where graphs used too much memory when copying #381 I Virshup
0.7.2 15 May, 2020#
Concatenation overhaul I Virshup
Elements of
unscan now be merged, see #350Outer joins now work for
layersandobsm, see #352Fill value for outer joins can now be specified
Expect improvments in performance, see #303
Functionality
obs_names_make_unique()is now better at making values unique, and will warn if ambiguities arise #345 M Weidenobspis now preferred for storing pairwise relationships between observations. In practice, this means there will be deprecation warnings and reformatting applied to objects which stored connectivities underuns["neighbors"]. Square matrices inunswill no longer be sliced (use.{obs,var}pinstead). #337 I VirshupImplicitModificationWarningis now exported #315 P AngererBetter support for
ndarraysubclasses stored inAnnDataobjects #335 michalk8
Bug fixes
Fixed inplace modification of
Indexobjects by the make unique function #348 I VirshupPassing ambiguous keys to
obs_vector()andvar_vector()now throws errors #340 I VirshupFix instantiating
AnnDataobjects fromDataFrame#316 P AngererFixed indexing into
AnnDataobjects with arrays likeadata[adata[:, gene].X > 0]#332 I VirshupFixed type of version #315 P Angerer
0.7.0 22 January, 2020#
Warning
Breaking changes introduced between 0.6.22.post1 and 0.7:
Elements of
AnnDatas don’t have their dimensionality reduced when the main object is subset. This is to maintain consistency when subsetting. See discussion in #145.Internal modules like
anndata.coreare private and their contents are not stable: See #174.The old deprecated attributes
.smp*..addand.datahave been removed.
View overhaul #164
Indexing into a view no longer keeps a reference to intermediate view, see #62.
Views are now lazy. Elements of view of AnnData are not indexed until they’re accessed.
Indexing with scalars no longer reduces dimensionality of contained arrays, see #145.
All elements of AnnData should now follow the same rules about how they’re subset, see #145.
Can now index by observations and variables at the same time.
IO overhaul #167
Reading and writing has been overhauled for simplification and speed.
Time and memory usage can be half of previous in typical use cases
Zarr backend now supports sparse arrays, and generally is closer to having the same features as HDF5.
Backed mode should see significant speed and memory improvements for access along compressed dimensions and IO. PR #241.
Categoricals can now be ordered (PR #230) and written to disk with a large number of categories (PR #217).
Mapping attributes overhaul (obsm, varm, layers, …)
New attributes
obspandvarphave been added for two dimensional arrays where each axis corresponds to a single axis of the AnnData object. PR #207.These are intended to store values like cell-by-cell graphs, which are currently stored in
uns.Sparse arrays are now allowed as values in all mapping attributes.
All mapping attributes now share an implementation and will have the same behaviour. PR #164.
Miscellaneous improvements
Version 0.6#
0.6.* 2019-*-*#
better support for aligned mappings (obsm, varm, layers)
0.6.22#155 I Virshupconvenience accesors
obs_vector(),var_vector()for 1d arrays.0.6.21#144 I Virshupcompatibility with Scipy >=1.3 by removing
IndexMixindependency.0.6.20#151 P Angererbug fix for second-indexing into views.
0.6.19P Angererbug fix for reading excel files.
0.6.19A Wolfchanged default compression to
Noneinwrite_h5ad()to speed up read and write, disk space use is usually less critical.0.6.16A Wolfmaintain dtype upon copy.
0.6.13A Wolflayersinspired by .loom files allows their information lossless reading viaread_loom().0.6.7–0.6.9#46 & #48 S Rybakovsupport for reading zarr files:
read_zarr()0.6.7#38 T Whiteinitialization from pandas DataFrames
0.6.A Wolfiteration over chunks
chunked_X()andchunk_X()0.6.1#20 S Rybakov
0.6.0 1 May, 2018#
compatibility with Seurat converter
tremendous speedup for
concatenate()bug fix for deep copy of unstructured annotation after slicing
bug fix for reading HDF5 stored single-category annotations
'outer join'concatenation: adds zeros for concatenation of sparse data and nans for dense databetter memory efficiency in loom exports
Version 0.5#
0.5.0 9 February, 2018#
inform about duplicates in
var_namesand resolve them usingvar_names_make_unique()automatically remove unused categories after slicing
read/write .loom files using loompy 2
fixed read/write for a few text file formats
read UMI tools files:
read_umi_tools()
Version 0.4#
0.4.0 23 December, 2017#
read/write .loom files
scalability beyond dataset sizes that fit into memory: see this blog post
AnnDatahas arawattribute, which simplifies storing the data matrix when you consider it raw: see the clustering tutorial