Example #1
0
def generate_subset_weights_and_err(spectra, eigvals):
    K, L = spectra.shape

    all_weights, _ = utils.adaptive_weights_cython(
        spectra, eigvals, L
        )

    # the K delete-one adaptive weightings
    jackknifed_weights = np.empty( (K, K-1, L) )
    # the K RMS errors between original w{k != i} and delete-one w{k != i}
    rms_err = np.empty( (K, L) )
    
    full_set = set(range(K))
    for i in full_set:
        sub = list( full_set.difference(set([i])) )
        
        ts_i = np.take(spectra, sub, axis=0)
        eigs_i = np.take(eigvals, sub)
        jackknifed_weights[i], _ = utils.adaptive_weights_cython(
            ts_i, eigs_i, L
            )
        orig_weights = np.take(all_weights, sub, axis=0)
        err = orig_weights - jackknifed_weights[i]
        rms_err[i] = (err**2).mean(axis=0)**0.5

    return rms_err, jackknifed_weights, all_weights
Example #2
0
def compare_weight_methods(spectra, eigvals):
    L = spectra.shape[-1]
    fxf_weights, _ = utils.adaptive_weights_cython(spectra, eigvals, L)
    vec_weights, _ = utils.adaptive_weights(spectra, eigvals, L)
    err = np.abs(fxf_weights - vec_weights)
    return err
Example #3
0
NW = 5
K = 2*NW-1
tapers, eigs = alg.DPSS_windows(n_samples, NW, 2*NW-1)

tdata = tapers[None,:,:] * pdata[:,None,:]

tspectra = np.fft.fft(tdata)
mag_sqr_spectra = np.abs(tspectra)
np.power(mag_sqr_spectra, 2, mag_sqr_spectra)
# Only compute half the spectrum.. coherence for real sequences is symmetric
L = n_samples/2 + 1
#L = n_samples
w = np.empty( (nseq, K, L) )
for i in xrange(nseq):
   w[i], _ = utils.adaptive_weights_cython(mag_sqr_spectra[i], eigs, L)

# calculate the coherence
csd_mat = np.zeros((nseq, nseq, L), 'D')
psd_mat = np.zeros((2, nseq, nseq, L), 'd')
coh_mat = np.zeros((nseq, nseq, L), 'd')
coh_var = np.zeros_like(coh_mat)
for i in xrange(nseq):
   for j in xrange(i):
      sxy = alg.mtm_cross_spectrum(
         tspectra[i], tspectra[j], (w[i], w[j]), sides='onesided'
         )
      sxx = alg.mtm_cross_spectrum(
         tspectra[i], tspectra[i], (w[i], w[i]), sides='onesided'
         ).real
      syy = alg.mtm_cross_spectrum(