示例#1
0
def svd_tolerance():
    # matrix = np.load('../data/converted_matrix.npy')
    matrix = ca_data_utils.load_vid()
    print('done loading data')
    U, s, V = randomized_svd(matrix, n_components=500)
    n_oversamples = [50, 100, 150, 200]  # from 5 - 20
    n_iters = [40, 70, 100]  # from 4, 7,

    norms = []
    for n in n_oversamples:
        print('start doing n_oversample = ', n)
        norm = check_n_oversamples(matrix, n)
        norms.append(norm)
        print('done doing n_oversample = ', n)
    # plt.plot(n_oversamples, norms)
    # plt.savefig('n_oversamples')
    np.save('n_oversamples', norms)

    norms = []
    for n in n_iters:
        print('starting doing n_iters = ', n)
        norm = check_n_iters(matrix, n)
        norms.append(norm)
        print('done doing n_iters = ', n)
    # plt.plot(n_iters, norms)
    # plt.savefig('n_iters')
    np.save('n_iters', norms)
示例#2
0
def make_svd_matrices():
    matrix = ca_data_utils.load_vid()
    print('done loading data')
    U, s, V = randomized_svd(matrix,
                             n_oversamples=10,
                             n_iter=20,
                             n_components=1000)
    np.save('umat', U)
    np.save('svmat', np.dot(np.diag(s), V))
示例#3
0
def main():
    flatten = ca_data_utils.load_vid()
    X1 = flatten[:,:-1]
    X2 = flatten[:,1:]

    eigenvectors_high, omega, eigenvalues_high, b, Xdmd = dmd(X1, X2, 10, 1)

    # plot_utils.plot_eigenvalues(eigenvalues_high)
    # plot_utils.plot_modes(eigenvectors_high, vid[0].shape, eigenvalues_high)

    print(Xdmd.shape)
    np.save('reconstructed', Xdmd)
    np.save('eigenvalue_high', eigenvalues_high)
    np.save('eigenvectors_high', eigenvectors_high)
示例#4
0
def svd_tune_rank():
    matrix = ca_data_utils.load_vid()
    print('done loading data')
    ranks = np.linspace(500, 1000, 5)
    ranks = ranks.astype(int)
    norms = []
    for r in ranks:
        print('starting rank = ', r)
        U, s, V = randomized_svd(matrix,
                                 n_oversamples=150,
                                 n_iter=30,
                                 n_components=r)
        diff = matrix - np.dot(U, np.dot(np.diag(s), V))
        norms.append(np.linalg.norm(diff))
        print('done rank = ', r)
    norms = np.array(norms) / 15452.521
    np.save('ranks', norms)
示例#5
0
def main():
    # when on cylon to test on full vid fdir = '../data/vid.tif'
    # when local test use 'short_vid.tif'
    vid = ca_data_utils.load_vid()
    X1 = flatten[:, :-1]
    X2 = flatten[:, 1:]

    print('start dmd')
    dmd = DMD(svd_rank=10)
    dmd.fit(flatten.T)
    print('finished fitting data')

    for eig in dmd.eigs:
        print('Eigenvalue {}: distance from unit circle {}'.format(
            eig, np.abs(eig.imag**2 + eig.real**2 - 1)))
    dmd.plot_eigs(show_axes=True, show_unit_circle=True)

    self_re = np.load('reconstructed.npy')
    diff = dmd.reconstructed_data.T - self_re

    print(len(np.where(np.abs(diff) > 1e-3)[0]))
    print(diff.max())
    print(diff.min())
import scipy.io
import numpy as np
import skimage.io

import ca_data_utils


def trunk_data_by_states(vid, labels):
    state_1 = np.where(labels == 1)
    state_2 = np.where(labels == 2)
    state_3 = np.where(labels == 3)
    print(state_1[0].shape)
    print(state_2[0].shape)
    print(state_3[0].shape)
    sleep = vid[:, state_1[0]]
    wake_1 = vid[:, state_2[0]]
    wake_2 = vid[:, state_3[0]]
    print(sleep.shape)
    np.save('../data/byState/sleep', sleep)
    np.save('../data/byState/wake_1', wake_1)
    np.save('../data/byState/wake_2', wake_2)


if __name__ == '__main__':
    labels = ca_data_utils.load_labels()
    vid = ca_data_utils.load_vid()
    print(vid.shape)
    trunk_data_by_states(vid, labels)