Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
tmp_err = err_func(start, tmp_bkp)
tmp = dynamic_prog(
err_func, d - 1, tmp_bkp, end, jump, min_size)
tmp_min = sum(tmp.values()) + tmp_err
if current_min is None:
current_min = tmp_min
current_breaks = tmp.copy()
current_breaks.update({(start, tmp_bkp): tmp_err})
elif tmp_min < current_min:
current_min = tmp_min
current_breaks = tmp.copy()
current_breaks.update({(start, tmp_bkp): tmp_err})
return current_breaks
class dynp(BaseEstimator):
"""Wrapper qui sera utilisé pour appeler la fonction dynamic_prog.
Tous les paramètres sont définis dans __init__ et la méthode fit
calcule la segmentation et renvoie les temps de ruptures."""
def __init__(self, error_func, n, n_regimes, min_size=2, jump=1):
self.error_func = error_func
assert isinstance(n, int)
assert n > n_regimes # at least three points
self.n = n
self.n_regimes = n_regimes
assert min_size > 0
self.min_size = min_size
self.jump = jump
self.chg = list() # will contain the changepoint indexes.
def fit(self):
Code explanation
----------------------------------------------------------------------------------------------------
.. autoclass:: ruptures.detection.Dynp
:members:
:special-members: __init__
"""
from functools import lru_cache
from ruptures.utils import sanity_check
from ruptures.costs import cost_factory
from ruptures.base import BaseCost, BaseEstimator
class Dynp(BaseEstimator):
""" Find optimal change points using dynamic programming.
Given a segment model, it computes the best partition for which the sum of errors is minimum.
"""
def __init__(self, model="l2", custom_cost=None, min_size=2, jump=5, 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.
.. bibliography:: ../biblio.bib
:style: alpha
:cited:
:labelprefix: BU
:keyprefix: bu-
"""
from functools import lru_cache
from ruptures.base import BaseCost, BaseEstimator
from ruptures.costs import cost_factory
from ruptures.utils import Bnode, pairwise
class BottomUp(BaseEstimator):
"""Bottom-up segmentation."""
def __init__(self, model="l2", custom_cost=None, min_size=2, jump=5, params=None):
"""Initialize a BottomUp 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
Orthogonal matching pursuit for changepoint detection.
Fast but approximate.
Euclidean norm.
"""
import numpy as np
from numpy.linalg import norm
from ruptures.utils import pairwise
from ruptures.base import BaseEstimator
class Omp(BaseEstimator):
"""Contient l'algorithme de parcours des partitions."""
def __init__(self, min_size=2, jump=5):
"""Initialize an Omp instance
Args:
min_size (int, optional): minimum segment length. Defaults to 2 samples.
jump (int, optional): subsample (one every "jump" points). Defaults to 5 samples.
Returns:
self
"""
self.min_size = min_size # not used
self.jump = jump # not used
self.n_samples = None
.. autoclass:: ruptures.detection.Window
:members:
:special-members: __init__
"""
import numpy as np
from scipy.signal import argrelmax
from ruptures.base import BaseCost, BaseEstimator
from ruptures.costs import cost_factory
from ruptures.utils import unzip
class Window(BaseEstimator):
"""Window sliding method."""
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:
.. rubric:: References
.. bibliography:: ../biblio.bib
:style: alpha
:cited:
:labelprefix: BS
:keyprefix: bs-
"""
from functools import lru_cache
from ruptures.base import BaseCost, BaseEstimator
from ruptures.costs import cost_factory
from ruptures.utils import pairwise
class Binseg(BaseEstimator):
"""Binary segmentation."""
def __init__(self, model="l2", custom_cost=None, min_size=2, jump=5, 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
.. rubric:: References
.. bibliography:: ../biblio.bib
:style: alpha
:cited:
:labelprefix: B
:keyprefix: b-
"""
from math import floor
from ruptures.costs import cost_factory
from ruptures.base import BaseCost, BaseEstimator
class Pelt(BaseEstimator):
"""Penalized change point detection.
For a given model and penalty level, computes the segmentation which minimizes the constrained
sum of approximation errors.
"""
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).