Esempio n. 1
0
                             (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],
Esempio n. 3
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()