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