コード例 #1
0
def test_dataset_1d_frequencies(nt_dataset_pinchoff, tmp_path):
    ds = Dataset(1, db_name="temp.db", db_folder=str(tmp_path))

    ds.compute_power_spectrum()
    assert len(ds.power_spectrum) == 2

    assert len(ds.power_spectrum) == len(ds.data)
    with pytest.raises(KeyError):
        ds.power_spectrum['freq_y']

    ds_vx = ds.data['dc_current'][default_coord_names['voltage'][0]].values
    ds_sig = ds.data['dc_current'].values

    xv = np.unique(ds_vx)
    signal = ds_sig.copy()
    signal = sg.detrend(signal, axis=0)

    frequencies_res = fp.fft(signal)
    frequencies_res = np.abs(fp.fftshift(frequencies_res))**2

    fx = fp.fftshift(fp.fftfreq(frequencies_res.shape[0], d=xv[1] - xv[0]))
    coord_name = default_coord_names['frequency'][0]
    ds_fx = ds.power_spectrum['dc_current'][coord_name].values
    ds_freq = ds.power_spectrum['dc_current'].values

    assert np.allclose(ds_fx, fx)
    assert np.allclose(ds_freq, frequencies_res)
コード例 #2
0
def test_dataset_2d_frequencies(nt_dataset_doubledot, tmp_path):
    ds = Dataset(1, db_name="temp.db", db_folder=str(tmp_path))

    ds.compute_power_spectrum()
    assert len(ds.power_spectrum) == 2

    ds_vx = ds.data['dc_current'][default_coord_names['voltage'][0]].values
    ds_vy = ds.data['dc_current'][default_coord_names['voltage'][1]].values
    ds_curr = ds.data['dc_current'].values.copy()

    xv = np.unique(ds_vx)
    yv = np.unique(ds_vy)

    ds_curr = sg.detrend(ds_curr, axis=0)
    ds_curr = sg.detrend(ds_curr, axis=1)

    frequencies_res = fp.fft2(ds_curr)
    frequencies_res = np.abs(fp.fftshift(frequencies_res))**2

    fx_1d = fp.fftshift(fp.fftfreq(frequencies_res.shape[0], d=xv[1] - xv[0]))
    fy_1d = fp.fftshift(fp.fftfreq(frequencies_res.shape[1], d=yv[1] - yv[0]))

    # fx, fy = np.meshgrid(fx_1d, fy_1d, indexing="ij")
    # frequencies_res = np.abs(frequencies_res)
    coord_name = default_coord_names['frequency'][0]
    ds_fx = ds.power_spectrum['dc_current'][coord_name].values
    coord_name = default_coord_names['frequency'][1]
    ds_fy = ds.power_spectrum['dc_current'][coord_name].values
    ds_freq = ds.power_spectrum['dc_current'].values

    assert np.allclose(ds_fx, fx_1d)
    assert np.allclose(ds_fy, fy_1d)
    assert np.allclose(ds_freq, frequencies_res)