File: access.py

package info (click to toggle)
python-anndata 0.7.5%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 628 kB
  • sloc: python: 7,779; makefile: 8
file content (30 lines) | stat: -rw-r--r-- 818 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from functools import reduce
from typing import NamedTuple, Tuple

from . import anndata


class ElementRef(NamedTuple):
    parent: "anndata.AnnData"
    attrname: str
    keys: Tuple[str, ...] = ()

    def __str__(self) -> str:
        return f".{self.attrname}" + "".join(map(lambda x: f"['{x}']", self.keys))

    @property
    def _parent_el(self):
        return reduce(
            lambda d, k: d[k], self.keys[:-1], getattr(self.parent, self.attrname)
        )

    def get(self):
        """Get referenced value in self.parent."""
        return reduce(lambda d, k: d[k], self.keys, getattr(self.parent, self.attrname))

    def set(self, val):
        """Set referenced value in self.parent."""
        self._parent_el[self.keys[-1]] = val

    def delete(self):
        del self._parent_el[self.keys[-1]]