Source code for rubin_sim.maf.slicers.lcl_slicer
from functools import wraps
from itertools import batched
import numpy as np
from .base_slicer import BaseSlicer
[docs]
class LynxBaseSlicer(BaseSlicer):
def __init__(self, batch_size=1, *args, **kwargs):
super().__init__(*args, **kwargs)
self.ra_col = "ra"
self.dec_col = "dec"
self.batch_size = batch_size
[docs]
def setup_slicer(self, sim_data, maps=None):
"""Set up the slicer using the provided simulation data.
Parameters
----------
sim_data : `numpy.ndarray`
The simulation data to be sliced.
maps : `dict`, optional
Optional maps to be used in the slicing process.
"""
indicies = range(len(sim_data))
self.batches = list(batched(indicies, self.batch_size))
self.shape = (len(sim_data),)
self.nslice = self.shape[0]
self.islice = 0
@wraps(self._slice_sim_data)
def _slice_sim_data(islice):
slice_point = {"sid": islice}
indices = np.array(self.batches[islice])
return {"idxs": indices, "slice_point": slice_point}
setattr(self, "_slice_sim_data", _slice_sim_data)