Source code for loompy.view_manager
import numpy as np
import loompy
from typing import *
[docs]class ViewManager:
"""
Create views by slicing an underlying LoomConnection or LoomView
"""
def __init__(self, ds: Any) -> None:
self.ds = ds
def __getitem__(self, slice_: Tuple[Union[slice, np.ndarray, int], Union[slice, np.ndarray, int]]) -> loompy.LoomView:
"""
Create a new view by slicing through the loom file or view
Args:
slice_ (2-tuple of slice, int or np.ndarray): How to slice the file or view
Returns:
A LoomView object, an in-memory representation of the sliced file
"""
if type(slice_) is not tuple or len(slice_) is not 2:
raise ValueError("Views require slices along two dimensions")
rows = slice_[0]
cols = slice_[1]
ra = self.ds.ra[rows]
row_graphs = self.ds.row_graphs[rows]
ca = self.ds.ca[cols]
col_graphs = self.ds.col_graphs[cols]
layers = self.ds.layer[rows, cols]
return loompy.LoomView(layers, ra, ca, row_graphs, col_graphs, filename=self.ds.filename, file_attrs=self.ds.attrs)