(214 / 2)) * u.V * np.ones(len(ref)) # [V/rtHz] _ampnoise = 6e-7 * u.V * np.ones(len(ref)) # [V/rtHz] _aanoise = 7e-8 * u.V * np.ones(len(ref)) # [V/rtHz] _adcnoise = FrequencySeries(_adcnoise, frequencies=ref.frequencies) _adcnoise2 = FrequencySeries(_adcnoise2, frequencies=ref.frequencies) _ampnoise = FrequencySeries(_ampnoise, frequencies=ref.frequencies) _aanoise = FrequencySeries(_aanoise, frequencies=ref.frequencies) amp = 10**(30 / 20.) tr120q = Trillium('120QA') tr240 = Trillium('240') v2vel = tr120q.v2vel v2vel = tr240.v2vel adcnoise = v2vel(_adcnoise) / amp ampnoise = v2vel(_ampnoise) / amp # aanoise = v2vel(_aanoise) / amp selfnoise_120q = tr120q.selfnoise() selfnoise_240 = tr240.selfnoise() # Plot if True: from gwpy.plot import Plot plot = Plot() ax = plot.gca(xscale='log', xlim=(1e-3, 10), xlabel='Frequency [Hz]', yscale='log', ylim=(1e-12, 1e-4), ylabel=r'Velocity [m/sec/\rtHz]') #ax.loglog(x1500,label='x1500 (ref. GIF data)') ax.loglog(selfnoise_120q, 'k--',
if __name__ == '__main__': unit = 'um' # tr120 = Trillium('120QA') v2vel = tr120.v2vel # h50 = percentile('H', pctl=50, unit=unit) h10 = percentile('H', pctl=10, unit=unit) h90 = percentile('H', pctl=90, unit=unit) z50 = percentile('Z', pctl=50, unit=unit) z10 = percentile('Z', pctl=10, unit=unit) z90 = percentile('Z', pctl=90, unit=unit) nlnm, nhnm = peterson_noise_model(unit=unit) selfnoise = tr120.selfnoise(unit=unit.replace('um', 'm')) * 1e6 # fig, ax = plt.subplots(1, 1, figsize=(9, 7)) ax.plot_mmm(h50, h10, h90, label='Horizontal (10,50,90 percentile)', color='blue') ax.plot_mmm(z50, z10, z90, label='Vertical (10,50,90 percentile)', color='red') ax.loglog(selfnoise, 'g--', label='Selfnoise of Seismometer', alpha=1.0) ax.loglog(nlnm[0], nlnm[1], 'k--') ax.loglog(nhnm[0],
bw = exv.df.value # Read Noise _adcnoise = 2e-6*u.V*np.ones(len(freq)) # [V/rtHz] _adcnoise2 = np.sqrt((10/2**15)**2/12/(214/2))*u.V*np.ones(len(freq)) # [V/rtHz] _ampnoise = 6e-7*u.V*np.ones(len(freq)) # [V/rtHz] _aanoise = 7e-8*u.V*np.ones(len(freq)) # [V/rtHz] _adcnoise = FrequencySeries(_adcnoise, frequencies=freq) _adcnoise2 = FrequencySeries(_adcnoise2, frequencies=freq) _ampnoise = FrequencySeries(_ampnoise, frequencies=freq) _aanoise = FrequencySeries(_aanoise, frequencies=freq) adcnoise = v2vel_120(_adcnoise)/amp ampnoise = v2vel_120(_ampnoise)/amp # aanoise = v2vel_120(_aanoise)/amp selfnoise_120q = tr120q.selfnoise(unit=unit) selfnoise_240 = tr240.selfnoise(unit=unit) # # Plot from gwpy.plot import Plot plot = Plot() ax = plot.gca(xscale='log', xlim=(1e-3, 10), xlabel='Frequency [Hz]', yscale='log', ylim=(1e-12, 1e-4), ylabel=r'Velocity [{0}/\rtHz]'.format(unit)) #ax.loglog(x1500,label='x1500 (ref. GIF data)') ax.loglog(selfnoise_120q,'k--',label='Self Noise 120Q',linewidth=1,alpha=0.7) #ax.loglog(selfnoise_240,'m--',label='Self Noise 240',linewidth=1,alpha=0.7) #ax.loglog(adcnoise,'r--',label='ADC Noise',linewidth=1,alpha=0.7) #ax.loglog(ampnoise,'g--',label='Amp Noise',linewidth=1,alpha=0.7) #ax.loglog(aanoise,'b--',label='AA Noise',linewidth=1,alpha=0.7) ax.loglog(exv,'k-',label='EXV')
def hoge(fname=None, unit='m', **kwargs): # kwargs['unit'] = unit plot_selfnoise = kwargs.pop('plot_selfnoise', True) peterson = kwargs.pop('peterson', True) prefix, suffix = fname.split('_compare_') path = prefix.split('_') dof, suffix = suffix[:-4].split('_with_') dof = dof.split('_vs_') option = suffix.split('_') dof = list(set(dof)) #print(path) if not len(set(dof) & set(['X', 'Y', 'Z', 'H', 'V'])): path = [path[0] + '_' + _dof for _dof in dof] dof = list(filter(lambda x: x in ['X', 'Y', 'Z', 'H', 'V'], option)) option = list(set(option) ^ set(dof)) data = [] for _path in path: for _dof in dof: if 'V' in _path: model = '120QA' else: model = 'compact' data += [huge(_dof, _dir=_path, model=model, **kwargs)] # Plot fig, ax = plt.subplots(1, 1, figsize=(8, 7)) colors = ['blue', 'red', 'green', 'magenta'] label = ['{0}_{1}'.format(_path, _dof) for _dof in dof for _path in path] if len(data) != len(label): raise ValueError('plot error.') for _data, _color, _label in zip(data, colors, label): asd01, asd10, asd50, asd90, asd99, asdmean = _data ax.loglog(asdmean.frequencies.value, asdmean.value, color='k') if '_V' in _label: _color = 'red' if '90' in option: ax.plot_mmm(asd50, asd10, asd90, color=_color, alpha=0.3, label=_label) if '99' in option: ax.plot_mmm(asd50, asd01, asd99, color=_color, zorder=0, alpha=0.1) if plot_selfnoise: if 'V' in path[0]: model = '120QA' else: model = 'compact' seis = Trillium(model) if 'um' in unit: selfnoise = seis.selfnoise(unit=unit.replace('um', 'm')) * 1e6 else: selfnoise = seis.selfnoise(unit=unit) ax.loglog(selfnoise, 'g--', label='Selfnoise of Trillium 120Q seismometer', alpha=1.0) if peterson: nlnm, nhnm = peterson_noise_model(unit=unit) ax.loglog(nlnm[0], nlnm[1], '--', color='black') ax.loglog(nhnm[0], nhnm[1], '--', label='Peterson Low and High Noise Models', color='black') ax.set_xscale('log') ax.set_yscale('log') ax.set_xlabel('Frequency [Hz]', fontsize=20) ax.set_xlim(1e-3, 100) if unit == 'um/sec/sec': ax.set_ylim(1e-4, 1e3) ax.set_ylabel('Acceleration [um/sec/sec/rtHz]', fontsize=20) elif unit == 'm/sec/sec': ax.set_ylim(1e-10, 1e-3) ax.set_ylabel('ASD [$\mathrm{m}/\mathrm{s}^2/ \sqrt{\mathrm{Hz}}$]', fontsize=20) if unit == 'um/sec': ax.set_ylim(1e-5, 10) ax.set_ylabel('Velocity [um/sec/rtHz]', fontsize=20) elif unit == 'um': ax.set_ylim(1e-6, 1e2) ax.set_yticks(np.logspace(-6, 2, 9)) ax.set_ylabel('Displacement [um/rtHz, or um]', fontsize=20) elif unit == 'm': ax.set_ylim(1e-13, 1e-4) ax.set_yticks(np.logspace(-13, -4, 10)) ax.set_ylabel('Displacement [m/rtHz', fontsize=20) ax.legend(fontsize=14) #,loc='lower left') ax.grid(b=True, which='major', axis='both', linestyle='-') ax.grid(b=True, which='minor', axis='both', linestyle='--') #plt.suptitle(fname[:-4],fontsize=20) print('./results/' + fname) plt.tight_layout() plt.savefig('./results/' + fname) plt.close()