Source code for loompy.loom_view

from typing import *
import loompy
import numpy as np


[docs]class LoomView: """ An in-memory loom dataset """
[docs] def __init__(self, layers: loompy.LayerManager, row_attrs: loompy.AttributeManager, col_attrs: loompy.AttributeManager, row_graphs: loompy.GraphManager, col_graphs: loompy.GraphManager, *, filename: str = "", file_attrs: loompy.GlobalAttributeManager = None) -> None: self.filename = filename self.view = loompy.ViewManager(self) self.layers = layers self.shape = [layer.shape for (name, layer) in layers.items()][0] self.ra = row_attrs self.ca = col_attrs self.row_graphs = row_graphs self.col_graphs = col_graphs self.attrs = file_attrs # Compatibility with loompy v1.x self.layer = layers self.row_attrs = row_attrs self.col_attrs = col_attrs
def __getitem__(self, slice_: Union[str, Tuple[Union[int, np.ndarray, slice], Union[int, np.ndarray, slice]]]) -> np.ndarray: """ Get a slice of the main matrix. Args: slice: A 2D slice object (see http://docs.h5py.org/en/latest/high/dataset.html) or np.ndarrays or ints Returns: A numpy matrix """ if type(slice_) is str: return self.layers[slice_] else: return self.layers[""][slice_] def _repr_html_(self) -> str: """ Return an HTML representation of the loom view, showing the upper-left 10x10 corner. """ return loompy.to_html(self)
[docs] def permute(self, ordering: np.ndarray, *, axis: int) -> None: """ Permute the view, by permuting its layers, attributes and graphs Args: ordering (np.ndarray): The desired ordering along the axis axis (int): 0, permute rows; 1, permute columns """ if axis not in (0, 1): raise ValueError("Axis must be 0 (rows) or 1 (columns)") for layer in self.layers.values(): layer._permute(ordering, axis=axis) if axis == 0: if self.row_graphs is not None: for g in self.row_graphs.values(): g._permute(ordering) for a in self.row_attrs.values(): a._permute(ordering) elif axis == 1: if self.col_graphs is not None: for g in self.col_graphs.values(): g._permute(ordering) for a in self.col_attrs.values(): a._permute(ordering)