Source code for dance.transforms.interface
from dance.transforms.base import BaseTransform
from dance.typing import Any
[docs]class AnnDataTransform(BaseTransform):
"""AnnData transformation interface object.
This object provides an interface with any function that apply in-place transformation to an AnnData object.
Example
-------
Any one of the :mod:`scanpy.pp` functions should be supported. For example, we can use the
:func:`scanpy.pp.normalize_total` function on the dance data object as follows
>>> AnnDataTransform(scanpy.pp.normalize_total, target_sum=10000)(data)
where ``data`` is a dance data object, e.g., :class:`dance.data.Data`. Calling the above function is effectively
equivalent to calling
>>> scanpy.pp.normalize_total(data.data, target_sum=10000)
"""
_DISPLAY_ATTRS = ("func", "func_kwargs")
[docs] def __init__(self, func: Any, **kwargs):
"""Initialize the AnnDataTransform object.
Parameters
----------
func
In-place AnnData transformation function, e.g., any one of the :mod:`scanpy.pp` functions.
**kwargs
Keyword arguments for the transformation function.
"""
super().__init__()
self.func = func
self.func_kwargs = kwargs
def __repr__(self):
func_name = f"{self.func.__module__}.{self.func.__name__}"
return f"{self.name}(func={func_name}, func_kwargs={self.func_kwargs})"
def __call__(self, data):
self.func(data.data, **self.func_kwargs)