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