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)
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]
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)
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)
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 #