def test_edm_percent(self): ret_list = detect_breakout(self.data, min_size=24, method='multi', percent=0.1, degree=1) self.assertEqual([26, 51, 106], ret_list)
def test_constant(self): ret_list = detect_breakout([10] * 100, min_size=24, method='multi', beta=0.001, degree=1) self.assertEqual([], ret_list)
def test_empty(self): ret_list = detect_breakout([], min_size=24, method='multi', beta=0.001, degree=1) self.assertEqual([], ret_list)
def test_edm_multi(self): ret_list = detect_breakout(self.data, min_size=24, method='multi', beta=0.001, degree=1) self.assertEqual([47, 87], ret_list)
def test_edm_tail_nperm_no_ret(self): ret_list = detect_breakout(self.data, min_size=24, method='amoc', exact=False, sig_level=0.001, nperm=10) self.assertEqual([], ret_list)
def test_edm_x_nperm_has_ret(self): ret_list = detect_breakout(self.data, min_size=24, method='amoc', exact=True, sig_level=0.9, nperm=10) self.assertEqual([95], ret_list)
def test_int_values(self): # make sure the code still works if the values are int. z = [int(value) for value in self.data] ret_list = detect_breakout(z, min_size=24, method='multi', beta=0.001, degree=1) self.assertEqual([47, 87], ret_list)
def _get_trends_by_breakout_detection(x, kwargs): # divide the data into parts using breakout detection, using the median of each part as the trend. ret_list = detect_breakout(x, **kwargs) if logger.isEnabledFor(logging.DEBUG): logger.debug("detect_breakout result: %s" % ret_list) last_loc = len(x) if last_loc not in ret_list: ret_list.append(last_loc) prev_loc = 0 trends = [] for loc in ret_list: median = np.median(x[prev_loc:loc]) trends.extend([median] * (loc - prev_loc)) prev_loc = loc if logger.isEnabledFor(logging.DEBUG): logger.debug("detect_breakout trends: %s length=%s" % (trends, len(trends))) return trends
def _get_trends_by_breakout_detection(x, kwargs): # divide the data into parts using breakout detection, using the median of each part as the trend. ret_list = detect_breakout(x, **kwargs) if logger.isEnabledFor(logging.DEBUG): logger.debug("detect_breakout result: %s" % ret_list) last_loc = len(x) if last_loc not in ret_list: ret_list.append(last_loc) prev_loc = 0 trends = [] for loc in ret_list: median = np.median(x[prev_loc:loc]) trends.extend([median] * (loc - prev_loc)) prev_loc = loc if logger.isEnabledFor(logging.DEBUG): logger.debug("detect_breakout trends: %s length=%s" % (trends, len(trends))) return trends
def test_int_values(self): # make sure the code still works if the values are int. z = [int(value) for value in self.data] ret_list = detect_breakout(z, min_size=24, method='multi', beta=0.001, degree=1) self.assertEqual([47, 87], ret_list)
def test_constant(self): ret_list = detect_breakout([10] * 100, min_size=24, method='multi', beta=0.001, degree=1) self.assertEqual([], ret_list)
def test_empty(self): ret_list = detect_breakout([], min_size=24, method='multi', beta=0.001, degree=1) self.assertEqual([], ret_list)
def test_edm_tail_nperm_no_ret(self): ret_list = detect_breakout(self.data, min_size=24, method='amoc', exact=False, sig_level=0.001, nperm=10) self.assertEqual([], ret_list)
def test_edm_x_nperm_has_ret(self): ret_list = detect_breakout(self.data, min_size=24, method='amoc', exact=True, sig_level=0.9, nperm=10) self.assertEqual([95], ret_list)
def test_edm_percent(self): ret_list = detect_breakout(self.data, min_size=24, method='multi', percent=0.1, degree=1) self.assertEqual([26, 51, 106], ret_list)
def test_edm_multi(self): ret_list = detect_breakout(self.data, min_size=24, method='multi', beta=0.001, degree=1) self.assertEqual([47, 87], ret_list)