def container_factory(self, container: SigContainer, a: int, b: int, splitter_id: str) -> SigContainer: c = SigContainer( container.d.deepcopy(empty_folders=["meta", "annotations"])) c.d["signals/data"] = c.d["signals/data"][:, a:b] newlog = list(c.d["log"]) newlog.append(f"{splitter_id}@{a}-{b}") c.d["log"] = newlog if "annotations" in container.d: c.d["annotations"].update( SigContainer.cut_annots(container.d["annotations"], a, b)) return c
def apply(self, container: SigContainer) -> SigContainer: container = self.prepare_container(container) fs = container.d["signals/fs"] lag = container.lag start = TimeUnit.to_sample(self.start, fs, TimeUnit.time_unit_mapper(self.start), lag) end = TimeUnit.to_sample(self.end, fs, TimeUnit.time_unit_mapper(self.end), lag) container.d["signals/data"] = container.d["signals/data"][:, start:end] container.d["signals/lag"] = lag - start if "annotations" in container.d: adict = container.d["annotations"] newdict = SigContainer.cut_annots(adict, start, end) adict.update(newdict) return container