Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ dependencies = [
"legacy-api-wrap",
"zarr >=3.1",
"typing-extensions; python_version<'3.13'",
"scverse-misc>=0.0.3",
]
dynamic = [ "version" ]

Expand Down
4 changes: 2 additions & 2 deletions src/anndata/_core/aligned_mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@

import numpy as np
import pandas as pd
from scverse_misc import Deprecation, deprecated

from .._warnings import ExperimentalFeatureWarning, ImplicitModificationWarning
from ..compat import AwkArray, CSArray, CSMatrix, CupyArray, XDataset
from ..utils import (
axis_len,
convert_to_dict,
deprecated,
deprecation_msg,
raise_value_error_if_multiindex_columns,
warn,
Expand Down Expand Up @@ -126,7 +126,7 @@ def _view(self, parent: AnnData, subset_idx: I) -> AlignedView[Self, I]:
"""Returns a subset copy-on-write view of the object."""
return self._view_class(self, parent, subset_idx)

@deprecated(deprecation_msg("as_dict", "dict(obj)"))
@deprecated(Deprecation("0.10.2", deprecation_msg("as_dict", "dict(obj)")))
def as_dict(self) -> dict:
return dict(self)

Expand Down
85 changes: 54 additions & 31 deletions src/anndata/_core/anndata.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from numpy import ma
from pandas.api.types import infer_dtype
from scipy.sparse import issparse
from scverse_misc import Deprecation, deprecated

from anndata._warnings import ImplicitModificationWarning

Expand All @@ -36,7 +37,6 @@
from ..logging import anndata_logger as logger
from ..utils import (
axis_len,
deprecated,
deprecation_msg,
ensure_df_homogeneous,
raise_value_error_if_multiindex_columns,
Expand Down Expand Up @@ -69,7 +69,7 @@


@set_module("anndata")
class AnnData(metaclass=utils.DeprecationMixinMeta): # noqa: PLW1641
class AnnData: # noqa: PLW1641
"""\
An annotated data matrix.

Expand Down Expand Up @@ -906,48 +906,63 @@ def uns(self):
"""

@deprecated(
deprecation_msg(
*("obs_keys", "obs"),
"(e.g. `k in adata.obs` or `str(adata.obs.columns.tolist())`)",
Deprecation(
"0.12.3",
deprecation_msg(
*("obs_keys", "obs"),
"(e.g. `k in adata.obs` or `str(adata.obs.columns.tolist())`)",
),
)
)
def obs_keys(self) -> list[str]:
"""List keys of observation annotation :attr:`obs`."""
return self._obs.keys().tolist()

@deprecated(
deprecation_msg(
*("var_keys", "var"),
"(e.g. `k in adata.var` or `str(adata.var.columns.tolist())`)",
Deprecation(
"0.12.3",
deprecation_msg(
*("var_keys", "var"),
"(e.g. `k in adata.var` or `str(adata.var.columns.tolist())`)",
),
)
)
def var_keys(self) -> list[str]:
"""List keys of variable annotation :attr:`var`."""
return self._var.keys().tolist()

@deprecated(
deprecation_msg(
*("obsm_keys", "obsm"),
"(e.g. `k in adata.obsm` or `adata.obsm.keys() | {'u'}`)",
Deprecation(
"0.12.3",
deprecation_msg(
*("obsm_keys", "obsm"),
"(e.g. `k in adata.obsm` or `adata.obsm.keys() | {'u'}`)",
),
)
)
def obsm_keys(self) -> list[str]:
"""List keys of observation annotation :attr:`obsm`."""
return list(self.obsm.keys())

@deprecated(
deprecation_msg(
*("varm_keys", "varm"),
"(e.g. `k in adata.varm` or `adata.varm.keys() | {'u'}`)",
Deprecation(
"0.12.3",
deprecation_msg(
*("varm_keys", "varm"),
"(e.g. `k in adata.varm` or `adata.varm.keys() | {'u'}`)",
),
)
)
def varm_keys(self) -> list[str]:
"""List keys of variable annotation :attr:`varm`."""
return list(self.varm.keys())

@deprecated(
deprecation_msg(
"uns_keys", "uns", "(e.g. `k in adata.uns` or `sorted(adata.uns)`)"
Deprecation(
"0.13",
deprecation_msg(
"uns_keys", "uns", "(e.g. `k in adata.uns` or `sorted(adata.uns)`)"
),
)
)
def uns_keys(self) -> list[str]:
Expand Down Expand Up @@ -1257,16 +1272,18 @@ def to_df(self, layer: str | None = None) -> pd.DataFrame:
return pd.DataFrame(X, index=self.obs_names, columns=self.var_names)

@deprecated(
deprecation_msg(
"obs_vector",
"anndata.acc.A",
"E.g. `vec = adata[A.obs['foo']]` or `vec = adata[A.layers['l']['bar', :]]`",
Deprecation(
"0.13",
deprecation_msg(
"obs_vector",
"anndata.acc.A",
"E.g. `vec = adata[A.obs['foo']]` or `vec = adata[A.layers['l']['bar', :]]`",
),
)
)
def obs_vector(self, k: str, /, *, layer: str | None = None) -> np.ndarray:
"""\
Convenience function for returning a 1 dimensional ndarray of values
from :attr:`X`, :attr:`layers`\\ `[k]`, or :attr:`obs`.
Convenience function for returning a 1 dimensional ndarray of values from :attr:`X`, :attr:`layers`\\ `[k]`, or :attr:`obs`.

Made for convenience, not performance.
Intentionally permissive about arguments, for easy iterative use.
Expand All @@ -1286,16 +1303,18 @@ def obs_vector(self, k: str, /, *, layer: str | None = None) -> np.ndarray:
return _get_vector_ambiguous(self, k, "obs", layer=layer)

@deprecated(
deprecation_msg(
"var_vector",
"anndata.acc.A",
"E.g. `vec = adata[A.var['foo']]` or `vec = adata[A.layers['l'][:, 'bar']]`",
Deprecation(
"0.13",
deprecation_msg(
"var_vector",
"anndata.acc.A",
"E.g. `vec = adata[A.var['foo']]` or `vec = adata[A.layers['l'][:, 'bar']]`",
),
)
)
def var_vector(self, k: str, /, *, layer: str | None = None) -> np.ndarray:
"""\
Convenience function for returning a 1 dimensional ndarray of values
from :attr:`X`, :attr:`layers`\\ `[k]`, or :attr:`obs`.
Convenience function for returning a 1 dimensional ndarray of values from :attr:`X`, :attr:`layers`\\ `[k]`, or :attr:`obs`.

Made for convenience, not performance. Intentionally permissive about
arguments, for easy iterative use.
Expand Down Expand Up @@ -1603,8 +1622,11 @@ def write_csvs(
write_csvs(dirname, self, skip_data=skip_data, sep=sep)

@deprecated(
"Deprecated in favor of other formats, e.g. `write_h5ad`. "
"Loom isn’t well-maintained and supports only a subset of anndata features."
Deprecation(
"0.13",
"Deprecated in favor of other formats, e.g. `write_h5ad`. "
"Loom isn’t well-maintained and supports only a subset of anndata features.",
)
)
@old_positionals("write_obsm_varm")
def write_loom(
Expand Down Expand Up @@ -1742,8 +1764,9 @@ def _has_X(self) -> bool:
# --------------------------------------------------------------------------

@property
@deprecated(deprecation_msg("isview", "is_view"))
@deprecated(Deprecation("0.7.2", deprecation_msg("isview", "is_view")))
def isview(self) -> bool:
"""Whether or not this object is a view."""
return self.is_view

def _clean_up_old_format(self, uns):
Expand Down
Loading
Loading