コード例 #1
0
def wave_decomposition(data_chunk: FileParserWindow,
                       *params_list: str,
                       sampling: int = 1) -> Tuple[array, array, array]:
    value = data_chunk.get(*params_list, transposed=True)
    rough_trend = moving_average(data_chunk, *params_list, window_size=701)
    wave = value - rough_trend
    gw, lf_trend, noise = ideal_signal_filter(wave, sampling)
    return gw, rough_trend + lf_trend, noise
コード例 #2
0
def test_no_gaps_large_window() -> None:
    x = array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
    avg_assert = array([
        1, 2, 3, 4, 5, 5.818181818, 6.076923077, 6, 5.705882353, 5.263157895,
        5.705882353, 6, 6.076923077, 5.818181818, 5, 4, 3, 2, 1
    ])
    avg_result = moving_average(x, window_len=25)
    assert all(
        around(avg_result, decimals=3) == around(avg_assert, decimals=3))
コード例 #3
0
def test_gaps_large_window() -> None:
    x = array(
        [1, 2, 3, nan, nan, nan, nan, 8, 9, 10, 9, 8, nan, 6, 5, nan, 3, 2, 1])
    avg_assert = array([
        1, 2, 2, 2, 4.6, 6, 6.25, 6.1, 5.818181818, 5.153846154, 5.818181818,
        6.1, 6.1, 5.888888889, 4.857142857, 3.4, 2.75, 2, 1
    ])
    avg_result = moving_average(x, window_len=25)
    assert all(
        around(avg_result, decimals=3) == around(avg_assert, decimals=3))
コード例 #4
0
def test_no_gaps_small_window() -> None:
    x = array([
        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
        19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
    ])
    avg_assert = array([
        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17.71428571,
        18.14285714, 18.28571429, 18.14285714, 17.71428571, 17, 16, 15, 14, 13,
        12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
    ])
    avg_result = moving_average(x, window_len=7)
    assert all(
        around(avg_result, decimals=3) == around(avg_assert, decimals=3))
コード例 #5
0
def test_edge_gaps() -> None:
    x = array(
        [nan, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, nan, nan, nan])
    avg_assert = array([
        nan, 2.5, 3.5, 4.5, 5.5, 6.3, 6.5, 6.357142857, 6.2, 6.2, 6.5, 7, 7.3,
        7.25, 6.5, 5.5, 4.5, nan, nan
    ])
    avg_result = moving_average(x, window_len=25)

    # nan != nan... So we need to cheat
    avg_assert[isnan(avg_assert)] = -1
    avg_result[isnan(avg_result)] = -1
    assert all(
        around(avg_result, decimals=3) == around(avg_assert, decimals=3))
コード例 #6
0
def test_gaps_small_window() -> None:
    x = array([
        1, 2, 3, 4, 5, nan, 7, 8, 9, 10, 11, nan, nan, 14, 15, 16, 17, 18, nan,
        20, nan, 18, nan, 16, nan, 14, nan, 12, 11, 10, 9, 8, 7, 6, 5, 4, nan,
        2, 1
    ])
    avg_assert = array([
        1, 2, 3, 3.666666667, 4.833333333, 6, 7.166666667, 8.333333333, 9, 9,
        10.4, 11.8, 13.2, 14.6, 16, 16, 16.66666667, 17.2, 17.8, 18.25, 18, 18,
        17, 16, 15, 13.25, 12.6, 11.2, 10.66666667, 9.5, 9, 8, 7, 6.5,
        5.333333333, 4.166666667, 3, 1.5, 1
    ])
    avg_result = moving_average(x, window_len=7)
    assert all(
        around(avg_result, decimals=3) == around(avg_assert, decimals=3))