Exemplo n.º 1
0
def freqz(sosmat, nsamples=44100, sample_rate=44100, plot=True):
    """Plots Frequency response of sosmat."""
    from pylab import np, plt, fft, fftfreq
    x = np.zeros(nsamples)
    x[nsamples/2] = 0.999
    y, states = sosfilter_double_c(x, sosmat)
    Y = fft(y)
    f = fftfreq(len(x), 1.0/sample_rate)
    if plot:
        plt.grid(True)
        plt.axis([0, sample_rate / 2, -100, 5])
        L = 20*np.log10(np.abs(Y[:len(x)/2]) + 1e-17)
        plt.semilogx(f[:len(x)/2], L, lw=0.5)
        plt.hold(True)
        plt.title('freqz sos filter')
        plt.xlabel('Frequency / Hz')
        plt.ylabel('Damping /dB(FS)')
        plt.xlim((10, sample_rate/2))
        plt.hold(False)
    return x, y, f, Y
Exemplo n.º 2
0
def freqz(sosmat, nsamples=44100, sample_rate=44100, plot=True):
    """Plots Frequency response of sosmat."""
    from pylab import np, plt, fft, fftfreq
    x = np.zeros(nsamples)
    x[int(nsamples/2)] = 0.999
    y, states = sosfilter_double_c(x, sosmat)
    Y = fft(y)
    f = fftfreq(len(x), 1.0/sample_rate)
    if plot:
        plt.grid(True)
        plt.axis([0, sample_rate / 2, -100, 5])
        L = 20*np.log10(np.abs(Y[:int(len(x)/2)]) + 1e-17)
        plt.semilogx(f[:int(len(x)/2)], L, lw=0.5)
        plt.hold(True)
        plt.title(u'freqz sos filter')
        plt.xlabel('Frequency / Hz')
        plt.ylabel(u'Damping /dB(FS)')
        plt.xlim((10, sample_rate/2))
        plt.hold(False)
    return x, y, f, Y
Exemplo n.º 3
0
def plot_L_curve(
    files,
    nlin_pars=['log10_He_', 'log10_visM_', 'rake'],
    nlin_pars_ylabels=[r'$log_{10}(He)$', r'$log_{10}(visM)$', 'rake'],
):
    nreses = collect_from_result_files(files, 'residual_norm_weighted')
    nroughs = collect_from_result_files(files, 'roughening_norm')
    num_subplots = 1 + len(nlin_pars)

    x1 = amin(nreses)
    x2 = amax(nreses)
    dx = x2 - x1
    xlim = (x1 - dx * 0.02, x2 + dx * 0.2)
    xticks = range(int(x1), int(x2), 5)

    plt.subplot(num_subplots, 1, 1)
    plt.loglog(nreses, nroughs, 'o-')
    plt.xlim(xlim)
    plt.gca().set_xticks(xticks)
    plt.gca().get_xaxis().set_major_formatter(
        matplotlib.ticker.ScalarFormatter())
    plt.ylabel('roughening')
    plt.xlabel('Residual Norm')
    plt.grid('on')

    nth = 2
    for par, par_label in zip(nlin_pars, nlin_pars_ylabels):
        y = collect_from_result_files(files, par)
        plt.subplot(num_subplots, 1, nth)
        plt.semilogx(nreses, y, 'o-')
        plt.xlim(xlim)
        plt.gca().set_xticks(xticks)
        plt.gca().get_xaxis().set_major_formatter(
            matplotlib.ticker.ScalarFormatter())
        plt.ylabel(par_label)
        plt.xlabel('Residual Norm')
        plt.grid('on')
        nth += 1
Exemplo n.º 4
0
def plot_L_curve(files,
                 nlin_pars = ['log10_He_','log10_visM_','rake'],
                 nlin_pars_ylabels = [r'$log_{10}(He)$',
                                      r'$log_{10}(visM)$',
                                      'rake'],
                 ):
    nreses = collect_from_result_files(files, 'residual_norm_weighted')
    nroughs = collect_from_result_files(files, 'roughening_norm')
    num_subplots = 1 + len(nlin_pars)

    x1 = amin(nreses)
    x2 = amax(nreses)
    dx = x2 - x1
    xlim = (x1-dx*0.02, x2+dx*0.2)
    xticks = range(int(x1), int(x2),5)

    plt.subplot(num_subplots,1,1)
    plt.loglog(nreses, nroughs,'o-')
    plt.xlim(xlim)
    plt.gca().set_xticks(xticks)
    plt.gca().get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
    plt.ylabel('roughening')
    plt.xlabel('Residual Norm')
    plt.grid('on')

    nth = 2
    for par, par_label in zip(nlin_pars, nlin_pars_ylabels):
        y = collect_from_result_files(files, par)
        plt.subplot(num_subplots,1,nth)
        plt.semilogx(nreses, y,'o-')
        plt.xlim(xlim)
        plt.gca().set_xticks(xticks)
        plt.gca().get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
        plt.ylabel(par_label)
        plt.xlabel('Residual Norm')
        plt.grid('on')
        nth += 1
Exemplo n.º 5
0
import h5py

from pylab import plt

nreses = []
rakes = []

for ano in range(30):
    with h5py.File('outs/ano_%02d.h5' % ano, 'r') as fid:
        nres = fid['residual_norm_weighted'][...]
        nreses.append(nres)

        m = fid['m'][...]
        rakes.append(m[-1])

plt.semilogx(nreses, rakes, 'o')
plt.show()
Exemplo n.º 6
0
        nreses.append(nres)

        m = fid['m'][...]
        visMs.append(m[-3])
        Hes.append(m[-2])
        rakes.append(m[-1])

        nrough = fid['regularization/roughening/norm'][...]
        nroughs.append(nrough)

xlim = (7, 22)
xlim = None
xticks = range(7,22)

plt.subplot(411)    
plt.semilogx(nreses, visMs,'o')
plt.xlim(xlim)
plt.gca().set_xticks(xticks)
plt.grid('on')
plt.ylabel('log10(visM/(Pa.s))')

plt.subplot(412)    
plt.semilogx(nreses, Hes,'o')
plt.xlim(xlim)
plt.gca().set_xticks(xticks)
plt.grid('on')
plt.ylabel('He/km')

plt.subplot(413)    
plt.semilogx(nreses, rakes,'o')
plt.xlim(xlim)
Exemplo n.º 7
0
def freqz(ofb, length_sec=6, ffilt=False, plot=True):
    """Computes the IR and FRF of a digital filter.

    Parameters
    ----------
    ofb : FractionalOctaveFilterbank object
    length_sec : scalar
        Length of the impulse response test signal.
    ffilt : bool
        Backard forward filtering. Effectiv order is doubled then.
    plot : bool
        Create Plots or not.

    Returns
    -------
    x : ndarray
        Impulse test signal.
    y : ndarray
        Impules responses signal of the filters.
    f : ndarray
        Frequency vector for the FRF.
    Y : Frequency response (FRF) of the summed filters.

    """
    from pylab import np, plt, fft, fftfreq
    x = np.zeros(length_sec * ofb.sample_rate)
    x[int(length_sec * ofb.sample_rate / 2)] = 0.9999

    if not ffilt:
        y, states = ofb.filter_mimo_c(x)
        y = y[:, :, 0]
    else:
        y, states = ofb.filter(x, ffilt=ffilt)
    s = np.zeros(len(x))
    len_x_2 = int(len(x) / 2)
    for i in range(y.shape[1]):
        s += y[:, i]
        X = fft(y[:, i])  # sampled frequency response
        f = fftfreq(len(x), 1.0 / ofb.sample_rate)
        if plot:
            fig = plt.figure('freqz filter bank')
            plt.grid(True)
            plt.axis([0, ofb.sample_rate / 2, -100, 5])

            L = 20 * np.log10(np.abs(X[:len_x_2]) + 1e-17)
            plt.semilogx(f[:len_x_2], L, lw=0.5)

    Y = fft(s)
    if plot:
        plt.title(u'freqz() Filter Bank')
        plt.xlabel('Frequency / Hz')
        plt.ylabel(u'Damping /dB(FS)')
        plt.xlim((10, ofb.sample_rate / 2))
        plt.figure('sum')
        L = 20 * np.log10(np.abs(Y[:len_x_2]) + 1e-17)
        plt.semilogx(f[:len_x_2], L, lw=0.5)

        level_input = 10 * np.log10(np.sum(x**2))
        level_output = 10 * np.log10(np.sum(s**2))
        plt.axis([5, ofb.sample_rate / 1.8, -50, 5])
        plt.grid(True)
        plt.title('Sum of filter bands')
        plt.xlabel('Frequency / Hz')
        plt.ylabel(u'Damping /dB(FS)')

        print('sum level', level_output, level_input)

    return x, y, f, Y
Exemplo n.º 8
0
        visMs.append(m[-3])
        Hes.append(m[-2])
        print(Hes)
        rakes.append(m[-1])

        nrough = fid['regularization/roughening/norm'][...]
        nroughs.append(nrough)

x1 = amin(nreses)
x2 = amax(nreses)
dx = x2 - x1
xlim = (x1 - dx * 0.02, x2 + dx * 0.2)
xticks = range(int(x1), int(x2), 5)

plt.subplot(411)
plt.semilogx(nreses, visMs, 'o')
plt.xlim(xlim)
plt.gca().set_xticks(xticks)
plt.axhline(18.8, color='red')
plt.grid('on')
plt.ylabel('log10(visM/(Pa.s))')

plt.subplot(412)
plt.semilogx(nreses, Hes, 'o')
#plt.xlim(xlim)
plt.gca().set_xticks(xticks)
#plt.axhline(40, color='red')
plt.grid('on')
plt.ylabel('He/km')

plt.subplot(413)
Exemplo n.º 9
0
    return outs


com = vj.MomentCalculator('../../../fault_model/fault_bott60km.h5',
                          '../earth.model_He63km_VisM1.0E19')

files = sorted(glob.glob('../outs/ano_??.h5'))
Bm1 = collect_results(files, 'Bm')
slip1 = [ii[:-1, :] for ii in Bm1]
mo1 = [com.moment(ii)[0] for ii in slip1]

nres1 = collect_results(files, 'misfit/norm_weighted')

files = sorted(glob.glob('../../run0/outs/ano_??.h5'))
Bm0 = collect_results(files, 'Bm')
slip0 = [ii[:-1, :] for ii in Bm0]
mo0 = [com.moment(ii)[0] for ii in slip0]

nres0 = collect_results(files, 'misfit/norm_weighted')

plt.semilogx(nres0, mo0, '.', label='Result0')
plt.semilogx(nres1, mo1, '.', label='Result1')
plt.grid('on')
plt.xlabel('norm of weighted residual')
plt.ylabel('Mo')
plt.xlim([.7, 5])
plt.legend()

plt.savefig('compare_mo.png')
plt.show()
Exemplo n.º 10
0
def freqz(ofb, length_sec=6, ffilt=False, plot=True):
    """Computes the IR and FRF of a digital filter.

    Parameters
    ----------
    ofb : FractionalOctaveFilterbank object
    length_sec : scalar
        Length of the impulse response test signal.
    ffilt : bool
        Backard forward filtering. Effectiv order is doubled then.
    plot : bool
        Create Plots or not.

    Returns
    -------
    x : ndarray
        Impulse test signal.
    y : ndarray
        Impules responses signal of the filters.
    f : ndarray
        Frequency vector for the FRF.
    Y : Frequency response (FRF) of the summed filters.

    """
    from pylab import np, plt, fft, fftfreq
    x = np.zeros(length_sec*ofb.sample_rate)
    x[length_sec*ofb.sample_rate/2] = 0.9999
    if not ffilt:
        y, states = ofb.filter_mimo_c(x)
        y = y[:, :, 0]
    else:
        y, states = ofb.filter(x, ffilt=ffilt)
    s = np.zeros(len(x))
    for i in range(y.shape[1]):
        s += y[:, i]
        X = fft(y[:, i])  # sampled frequency response
        f = fftfreq(len(x), 1.0/ofb.sample_rate)
        if plot:
            fig = plt.figure('freqz filter bank')
            plt.grid(True)
            plt.axis([0, ofb.sample_rate / 2, -100, 5])
            L = 20*np.log10(np.abs(X[:len(x)/2]) + 1e-17)
            plt.semilogx(f[:len(x)/2], L, lw=0.5)
            plt.hold(True)

    Y = fft(s)
    if plot:
        plt.title('freqz() Filter Bank')
        plt.xlabel('Frequency / Hz')
        plt.ylabel('Damping /dB(FS)')
        plt.xlim((10, ofb.sample_rate/2))
        plt.hold(False)


        plt.figure('sum')
        L = 20*np.log10(np.abs(Y[:len(x)/2]) + 1e-17)
        plt.semilogx(f[:len(x)/2], L, lw=0.5)
        level_input = 10*np.log10(np.sum(x**2))
        level_output = 10*np.log10(np.sum(s**2))
        plt.axis([5, ofb.sample_rate/1.8, -50, 5])
        plt.grid(True)
        plt.title('Sum of filter bands')
        plt.xlabel('Frequency / Hz')
        plt.ylabel('Damping /dB(FS)')

        print('sum level', level_output, level_input)

    return x, y, f, Y
Exemplo n.º 11
0
nres = vj.collect_from_result_files(files, 'residual_norm_weighted')
log10_He_ = vj.collect_from_result_files(files, 'log10_He_')
log10_visM_ = vj.collect_from_result_files(files, 'log10_visM_')
rakes = vj.collect_from_result_files(files, 'rake')
nroughs = vj.collect_from_result_files(files, 'roughening_norm')


x1 = amin(nres)
x2 = amax(nres)
dx = x2 - x1
xlim = (x1-dx*0.02, x2+dx*0.2)
xticks = range(int(x1), int(x2),5)

plt.subplot(411)    
plt.semilogx(nres, log10_visM_,'o')
plt.xlim(xlim)
plt.gca().set_xticks(xticks)
plt.axhline(18.8, color='red')
plt.grid('on')
plt.ylabel('log10(visM/(Pa.s))')

plt.subplot(412)    
plt.semilogx(nres, log10_He_,'o')
plt.xlim(xlim)
plt.gca().set_xticks(xticks)
#plt.axhline(40, color='red')
plt.grid('on')
plt.ylabel('He/km')

plt.subplot(413)    
Exemplo n.º 12
0
        nres = fid['misfit/norm_weighted'][...]
        nreses.append(nres)

        m = fid['m'][...]
        visMs.append(m[-3])
        Hes.append(m[-2])
        rakes.append(m[-1])

        nrough = fid['regularization/roughening/norm'][...]
        nroughs.append(nrough)

xlim = (4, 7)
xticks = range(4, 7)

plt.subplot(411)
plt.semilogx(nreses, visMs, 'o')
plt.xlim(xlim)
plt.gca().set_xticks(xticks)
plt.grid('on')
plt.ylabel('log10(visM/(Pa.s))')

plt.subplot(412)
plt.semilogx(nreses, 10**(np.asarray(Hes)), 'o')
plt.xlim(xlim)
plt.gca().set_xticks(xticks)
plt.grid('on')
plt.ylabel('He/km')

plt.subplot(413)
plt.semilogx(nreses, rakes, 'o')
plt.xlim(xlim)
Exemplo n.º 13
0
com  = vj.MomentCalculator('../../../fault_model/fault_bott60km.h5',
                        '../earth.model_He63km_VisM1.0E19'
                        )

files = sorted(glob.glob('../outs/ano_??.h5'))
Bm1 = collect_results(files, 'Bm')
slip1 = [ii[:-1, :] for ii in Bm1]
mo1 = [com.moment(ii)[1] for ii in slip1]

nres1 = collect_results(files, 'misfit/norm_weighted')


files = sorted(glob.glob('../../run0/outs/ano_??.h5'))
Bm0 = collect_results(files, 'Bm')
slip0 = [ii[:-1, :] for ii in Bm0]
mo0 = [com.moment(ii)[1] for ii in slip0]

nres0 = collect_results(files, 'misfit/norm_weighted')

plt.semilogx(nres0, mo0, '.', label='Result0')
plt.semilogx(nres1, mo1, '.', label='Result1')
plt.grid('on')
plt.xlabel('norm of weighted residual')
plt.ylabel('Mw')
plt.xlim([.7,5])
plt.legend()

plt.savefig('compare_mw.png')
plt.show()
Exemplo n.º 14
0
        nres = fid['misfit/norm_weighted'][...]
        nreses.append(nres)

        m = fid['m'][...]
        visMs.append(m[-3])
        Hes.append(m[-2])
        rakes.append(m[-1])

        nrough = fid['regularization/roughening/norm'][...]
        nroughs.append(nrough)

xlim = (4,7)
xticks = range(4,7)

plt.subplot(411)    
plt.semilogx(nreses, visMs,'o')
plt.xlim(xlim)
plt.gca().set_xticks(xticks)
plt.grid('on')
plt.ylabel('log10(visM/(Pa.s))')

plt.subplot(412)    
plt.semilogx(nreses, 10**(np.asarray(Hes)),'o')
plt.xlim(xlim)
plt.gca().set_xticks(xticks)
plt.grid('on')
plt.ylabel('He/km')

plt.subplot(413)    
plt.semilogx(nreses, rakes,'o')
plt.xlim(xlim)
Exemplo n.º 15
0
marker = itertools.cycle(('+', 'o', '*'))


class Newton(Experimento):
    metodo = 'newton'
    funcion = 'f'
    criterio = 'relativo'
    limite = 0.0001


plt.figure(1)
plt.xlabel('x0')
plt.ylabel('iteraciones')
#plt.xscale('semilog')
plt.semilogx()

# codigo
# voy iterando por cada alpha
resultados = {}
for alpha in alphas:

    resultado_real = sqrt(alpha)

    new_x0s = deepcopy(x0s)
    mi_newton = Newton(entradas=[alpha] * len(new_x0s), x0s=new_x0s)
    mi_newton.run()
    resultados[alpha] = mi_newton.resultados

for alpha in alphas:
    resultado = resultados[alpha]
Exemplo n.º 16
0
import h5py

from pylab import plt

nreses =[]
rakes = []

for ano in range(30):
    with h5py.File('outs/ano_%02d.h5'%ano,'r') as fid:
        nres = fid['residual_norm_weighted'][...]
        nreses.append(nres)

        m = fid['m'][...]
        rakes.append(m[-1])
    
plt.semilogx(nreses, rakes,'o')
plt.show()
Exemplo n.º 17
0
from pylab import plt


def collect_results(outs_files, key):
    outs = []
    for file in outs_files:
        with h5py.File(file, 'r') as fid:
            out = fid[key][...]
            outs.append(out)
    return outs


files = sorted(glob.glob('../outs/ano_??.h5'))
rake1 = collect_results(files, 'nlin_pars/rake')
nres1 = collect_results(files, 'misfit/norm_weighted')

files = sorted(glob.glob('../../run0/outs/ano_??.h5'))
rake0 = collect_results(files, 'nlin_pars/rake')
nres0 = collect_results(files, 'misfit/norm_weighted')

plt.semilogx(nres0, rake0, '.', label='Result0')
plt.semilogx(nres1, rake1, '.', label='Result1')
plt.grid('on')
plt.xlabel('weighted residual norm')
plt.ylabel('rake')
plt.xlim([.7, 5])
plt.legend()

plt.savefig('compare_rake.png')
plt.show()