示例#1
0
def test_cross_correlation():
    coup_ana = CouplingAnalysis(CouplingAnalysis.test_data())
    similarity_matrix, lag_matrix = coup_ana.cross_correlation(tau_max=5,
                                                               lag_mode='max')
    res = (similarity_matrix, lag_matrix)
    exp = (np.array([[1., 0.757, 0.779, 0.7536], [0.4847, 1., 0.4502, 0.5197],
                     [0.6219, 0.5844, 1., 0.5992],
                     [0.4827, 0.5509, 0.4996, 1.]]),
           np.array([[0, 4, 1, 2], [0, 0, 0, 0], [0, 3, 0, 1], [0, 2, 0, 0]]))
    assert np.allclose(res, exp, atol=1e-04)
示例#2
0
def testSymmetrizeByAbsmax():
    tdata = create_test_data()
    n_index, n_times = tdata.shape
    coup_ana = CouplingAnalysis(tdata)
    similarity_matrix = np.random.rand(n_index, n_times).astype('float32')
    lag_matrix = np.random.rand(n_index, n_times).astype(np.int8)
    sm_new = coup_ana.symmetrize_by_absmax(similarity_matrix, lag_matrix)[0]
    for i in range(n_index):
        for j in range(n_times):
            assert sm_new[i, j] >= similarity_matrix[i, j]
def testSymmetrizeByAbsmax():
    tdata = create_test_data()
    n_index, n_times = tdata.shape
    coup_ana = CouplingAnalysis(tdata)
    similarity_matrix = np.random.rand(n_index, n_times).astype('float32')
    lag_matrix = np.random.rand(n_index, n_times).astype(np.int8)
    sm_new = coup_ana.symmetrize_by_absmax(similarity_matrix, lag_matrix)[0]
    for i in range(n_index):
        for j in range(n_times):
            assert sm_new[i,j] >= similarity_matrix[i,j]
示例#4
0
def test_information_transfer():
    coup_ana = CouplingAnalysis(CouplingAnalysis.test_data())
    similarity_matrix, lag_matrix = coup_ana.information_transfer(
        tau_max=5, estimator='knn', knn=10)
    res = (similarity_matrix, lag_matrix)
    exp = (np.array([[0., 0.1544, 0.3261,
                      0.3047], [0.0218, 0., 0.0394, 0.0976],
                     [0.0134, 0.0663, 0., 0.1502],
                     [0.0066, 0.0694, 0.0401, 0.]]),
           np.array([[0, 2, 1, 2], [5, 0, 0, 0], [5, 1, 0, 1], [5, 0, 0, 0]]))
    assert np.allclose(res, exp, atol=1e-04)
示例#5
0
def test_mutual_information():
    coup_ana = CouplingAnalysis(CouplingAnalysis.test_data())
    similarity_matrix, lag_matrix = coup_ana.mutual_information(
        tau_max=5, knn=10, estimator='knn')
    res = (similarity_matrix, lag_matrix)
    exp = (np.array([[4.6505, 0.4387, 0.4652, 0.4126],
                     [0.147, 4.6505, 0.1065, 0.1639],
                     [0.2483, 0.2126, 4.6505, 0.2204],
                     [0.1209, 0.199, 0.1453, 4.6505]]),
           np.array([[0, 4, 1, 2], [0, 0, 0, 0], [0, 2, 0, 1], [0, 2, 0, 0]],
                    dtype=np.int8))
    assert np.allclose(res, exp, atol=1e-04)
示例#6
0
def test_symmetrize_by_absmax():
    # Test example
    ca = CouplingAnalysis(CouplingAnalysis.test_data())
    similarity_matrix, lag_matrix = ca.cross_correlation(tau_max=2)

    res = (similarity_matrix, lag_matrix)
    exp = (np.array([[1., 0.698, 0.7788, 0.7535], [0.4848, 1., 0.4507, 0.52],
                     [0.6219, 0.5704, 1., 0.5996],
                     [0.4833, 0.5503, 0.5002, 1.]]),
           np.array([[0, 2, 1, 2], [0, 0, 0, 0], [0, 2, 0, 1], [0, 2, 0, 0]]))
    assert np.allclose(res, exp, atol=1e-04)

    res = ca.symmetrize_by_absmax(similarity_matrix, lag_matrix)
    exp = (np.array([[1., 0.698, 0.7788, 0.7535], [0.698, 1., 0.5704, 0.5503],
                     [0.7788, 0.5704, 1., 0.5996],
                     [0.7535, 0.5503, 0.5996, 1.]]),
           np.array([[0, 2, 1, 2], [-2, 0, -2, -2], [-1, 2, 0, 1],
                     [-2, 2, -1, 0]]))
    assert np.allclose(res, exp, atol=1e-04)

    # Random consistency test
    tdata = create_test_data()
    n_index, n_times = tdata.shape
    coup_ana = CouplingAnalysis(tdata)
    similarity_matrix = np.random.rand(n_index, n_times).astype('float32')
    lag_matrix = np.random.rand(n_index, n_times).astype(np.int8)
    sm_new = coup_ana.symmetrize_by_absmax(similarity_matrix, lag_matrix)[0]
    for i in range(n_index):
        for j in range(n_times):
            assert sm_new[i, j] >= similarity_matrix[i, j]
#  Initialize
acf = np.zeros((n_realizations, DELAY_MAX + 1))

print "Computing auto-correlation functions..."

#  Initialize progress bar
progress = progressbar.ProgressBar().start()

#  Compute autocorrelation functions
for i in xrange(n_realizations):
    #  Reshape
    series = values[i, :].copy()
    series.shape = (-1, 1)

    #  Initialize instance of CouplingAnalysis class
    ca = CouplingAnalysis(data=series)

    #  Calculate auto correlation function
    acf[i, :] = ca.cross_correlation(tau_max=DELAY_MAX,
                                     lag_mode="all").flatten()

    #  Update progress bar every step
    progress.update(int(100 * i / float(n_realizations)))

#  Terminate progress bar
progress.finish()

#
#  Plot
#