Exemple #1
0
def interpolate_complex_frequency(series,
                                  delta_f,
                                  zeros_offset=0,
                                  side='right'):
    """Interpolate complex frequency series to desired delta_f.

    Return a new complex frequency series that has been interpolated to the
    desired delta_f.

    Parameters
    ----------
    series : FrequencySeries
        Frequency series to be interpolated.
    delta_f : float
        The desired delta_f of the output
    zeros_offset : optional, {0, int}
        Number of sample to delay the start of the zero padding
    side : optional, {'right', str}
        The side of the vector to zero pad
        
    Returns
    -------
    interpolated series : FrequencySeries
        A new FrequencySeries that has been interpolated.
    """
    new_n = int((len(series) - 1) * series.delta_f / delta_f + 1)
    old_N = int((len(series) - 1) * 2)
    new_N = int((new_n - 1) * 2)
    time_series = TimeSeries(zeros(old_N),
                             delta_t=1.0 / (series.delta_f * old_N),
                             dtype=real_same_precision_as(series))

    ifft(series, time_series)

    time_series.roll(-zeros_offset)
    time_series.resize(new_N)

    if side == 'left':
        time_series.roll(zeros_offset + new_N - old_N)
    elif side == 'right':
        time_series.roll(zeros_offset)

    out_series = FrequencySeries(zeros(new_n),
                                 epoch=series.epoch,
                                 delta_f=delta_f,
                                 dtype=series.dtype)
    fft(time_series, out_series)

    return out_series
Exemple #2
0
def interpolate_complex_frequency(series, delta_f, zeros_offset=0, side='right'):
    """Interpolate complex frequency series to desired delta_f.

    Return a new complex frequency series that has been interpolated to the
    desired delta_f.

    Parameters
    ----------
    series : FrequencySeries
        Frequency series to be interpolated.
    delta_f : float
        The desired delta_f of the output
    zeros_offset : optional, {0, int}
        Number of sample to delay the start of the zero padding
    side : optional, {'right', str}
        The side of the vector to zero pad
        
    Returns
    -------
    interpolated series : FrequencySeries
        A new FrequencySeries that has been interpolated.
    """
    new_n = int( (len(series)-1) * series.delta_f / delta_f + 1)
    samples = numpy.arange(0, new_n) * delta_f
    old_N = int( (len(series)-1) * 2 )
    new_N = int( (new_n - 1) * 2 )
    time_series = TimeSeries(zeros(old_N), delta_t =1.0/(series.delta_f*old_N),
                             dtype=real_same_precision_as(series))
                             
    ifft(series, time_series)

    time_series.roll(-zeros_offset)
    time_series.resize(new_N)
    
    if side == 'left':
        time_series.roll(zeros_offset + new_N - old_N)
    elif side == 'right':
        time_series.roll(zeros_offset)

    out_series = FrequencySeries(zeros(new_n), epoch=series.epoch,
                           delta_f=delta_f, dtype=series.dtype)
    fft(time_series, out_series)

    return out_series
Exemple #3
0
    
                outname = outdir + '/' + cname + "_t_realh" + ".dat"
                np.savetxt(outname, list(zip(mk1.times, np.real(mk1.h))))

            print("match between {} and the mk1:".format(approximant))
            wf_dt = wf_t[1] - wf_t[0]
            
            mk1_t = mk1.times
            mk1_dt = mk1_t[1] - mk1_t[0]
            
            #f_lower_int = phenom.HztoMf(sys['f_lower'], sys['mtot'])
            
            ts1 = TimeSeries(np.real(wf_h), delta_t=wf_dt)
            ts2 = TimeSeries(np.real(mk1.h), delta_t=mk1_dt)
            tlen = max(len(ts1), len(ts2))
            ts1.resize(tlen)
            ts2.resize(tlen)
            #ma, _  = pycbc.filter.match(ts1, ts2, low_frequency_cutoff=f_lower_int)
            ma, _  = pycbc.filter.match(ts1, ts2)
            print("\t {}".format(ma))


            print('plotting aligned waveform')
            #ts1, ts2 = pycbc.waveform.utils.coalign_waveforms(ts1, ts2, low_frequency_cutoff=f_lower_int)
            ts1, ts2 = pycbc.waveform.utils.coalign_waveforms(ts1, ts2)
            
            _, mk1_idx = ts2.abs_max_loc()
            mk1_shift = ts2.sample_times[mk1_idx]

            figname = outdir + '/' + "{}-vs-mk1".format(sys['name']) + '.png'