def __init__(self, model="l2", custom_cost=None, min_size=2, jump=5, ensembling=1, params=None): """Initialize a Binseg instance. Args: model (str, optional): segment model, ["l1", "l2", "rbf",...]. Not used if ``'custom_cost'`` is not None. custom_cost (BaseCost, optional): custom cost function. Defaults to None. min_size (int, optional): minimum segment length. Defaults to 2 samples. jump (int, optional): subsample (one every *jump* points). Defaults to 5 samples. params (dict, optional): a dictionary of parameters for the cost instance. Returns: self """ if custom_cost is not None and isinstance(custom_cost, BaseCost): self.cost = custom_cost else: if params is None: self.cost = cost_factory(model=model) else: self.cost = cost_factory(model=model, **params) self.min_size = max(min_size, self.cost.min_size) self.jump = jump self.n_samples = None self.signal = None # cache for intermediate results self.single_bkp = lru_cache(maxsize=None)(self._single_bkp) self.ensembling = ensembling
def __init__(self, kernel="linear", min_size=2, jump=1, params=None): r"""Creates a KernelCPD instance. Available kernels: - `linear`: $k(x,y) = x^T y$. - `rbf`: $k(x, y) = exp(\gamma \|x-y\|^2)$ where $\gamma>0$ (`gamma`) is a user-defined parameter. - `cosine`: $k(x,y)= (x^T y)/(\|x\|\|y\|)$. Args: kernel (str, optional): name of the kernel, ["linear", "rbf", "cosine"] min_size (int, optional): minimum segment length. jump (int, optional): not considered, set to 1. params (dict, optional): a dictionary of parameters for the kernel instance Raises: AssertionError: if the kernel is not implemented. """ self.kernel_name = kernel err_msg = "Kernel not found: {}.".format(self.kernel_name) assert self.kernel_name in ["linear", "rbf", "cosine"], err_msg self.model_name = "l2" if self.kernel_name == "linear" else self.kernel_name self.params = params # load the associated cost function if self.params is None: self.cost = cost_factory(model=self.model_name) else: self.cost = cost_factory(model=self.model_name, **self.params) self.min_size = max(min_size, self.cost.min_size) self.jump = 1 # set to 1 self.n_samples = None self.segmentations_dict = dict() # {n_bkps: bkps_list}
def __init__(self, model="l2", custom_cost=None, min_size=2, jump=5, params=None): """Initialize a Pelt instance. Args: model (str, optional): segment model, ["l1", "l2", "rbf"]. Not used if ``'custom_cost'`` is not None. custom_cost (BaseCost, optional): custom cost function. Defaults to None. min_size (int, optional): minimum segment length. jump (int, optional): subsample (one every *jump* points). params (dict, optional): a dictionary of parameters for the cost instance. """ if custom_cost is not None and isinstance(custom_cost, BaseCost): self.cost = custom_cost else: if params is None: self.cost = cost_factory(model=model) else: self.cost = cost_factory(model=model, **params) self.min_size = max(min_size, self.cost.min_size) self.jump = jump self.n_samples = None
def __init__(self, model="l2", custom_cost=None, min_size=2, jump=5, ensembling=1, params=None): """Creates a Dynp instance. Args: model (str, optional): segment model, ["l1", "l2", "rbf"]. Not used if ``'custom_cost'`` is not None. custom_cost (BaseCost, optional): custom cost function. Defaults to None. min_size (int, optional): minimum segment length. jump (int, optional): subsample (one every *jump* points). params (dict, optional): a dictionary of parameters for the cost instance. Returns: self """ self.seg = lru_cache(maxsize=None)(self._seg) # dynamic programming if custom_cost is not None and isinstance(custom_cost, BaseCost): self.cost = custom_cost else: if params is None: self.cost = cost_factory(model=model) else: self.cost = cost_factory(model=model, **params) self.min_size = max(min_size, self.cost.min_size) self.jump = jump self.n_samples = None self.ensembling = ensembling
def __init__(self, width=100, model="l2", custom_cost=None, min_size=2, jump=5, params=None): """Instanciate with window length. Args: width (int, optional): window length. Defaults to 100 samples. model (str, optional): segment model, ["l1", "l2", "rbf"]. Not used if ``'custom_cost'`` is not None. custom_cost (BaseCost, optional): custom cost function. Defaults to None. min_size (int, optional): minimum segment length. jump (int, optional): subsample (one every *jump* points). params (dict, optional): a dictionary of parameters for the cost instance. Returns: self """ self.min_size = min_size self.jump = jump self.width = 2 * (width // 2) self.n_samples = None self.signal = None self.inds = None if custom_cost is not None and isinstance(custom_cost, BaseCost): self.cost = custom_cost else: if params is None: self.cost = cost_factory(model=model) else: self.cost = cost_factory(model=model, **params) self.score = list()
def test_costs_5D_noisy(signal_bkps_5D_noisy, cost_name): signal, bkps = signal_bkps_5D_noisy cost = cost_factory(cost_name) cost.fit(signal) cost.error(0, 100) cost.error(100, signal.shape[0]) cost.error(10, 50) cost.sum_of_costs(bkps) with pytest.raises(NotEnoughPoints): cost.error(1, 2)
def test_costs_5D_noisy_names(signal_bkps_5D_noisy, cost_name): signal, bkps = signal_bkps_5D_noisy cost = cost_factory(cost_name) cost.fit(signal) cost.error(0, 100) cost.error(100, signal.shape[0]) cost.error(10, 50) cost.sum_of_costs(bkps) with pytest.raises(NotEnoughPoints): if cost_name == "cosine": cost.min_size = 4 cost.error(1, 2) else: cost.error(1, 2)
def test_factory_exception(): with pytest.raises(ValueError): cost_factory("bkd;s")