def test_read_analogs( usecols, shape_val, first_last_val, mean_val, median_val, sum_val, nans_val, extension, ): if extension == "csv": data = Analogs.from_csv(**analogs_csv_kwargs, usecols=usecols) decimal = 0 elif extension == "c3d": data = Analogs.from_c3d(MARKERS_ANALOGS_C3D, prefix_delimiter=".", usecols=usecols) decimal = 4 else: raise ValueError("wrong extension provided") if usecols and isinstance(usecols[0], str): np.testing.assert_array_equal(x=data.channel, y=usecols) is_expected_array( data, shape_val, first_last_val, mean_val, median_val, sum_val, nans_val, decimal=decimal, )
def test_proc_center(): is_expected_array(MARKERS_DATA.meca.center(), **EXPECTED_VALUES[5]) is_expected_array(MARKERS_DATA.meca.center(MARKERS_DATA.isel(time=0)), **EXPECTED_VALUES[6]) is_expected_array(ANALOGS_DATA.meca.center(), **EXPECTED_VALUES[7]) is_expected_array(ANALOGS_DATA.meca.center(mu=2), **EXPECTED_VALUES[8]) is_expected_array(ANALOGS_DATA.meca.center(ANALOGS_DATA.isel(time=0)), **EXPECTED_VALUES[9])
def test_csv_without_header(): is_expected_array( Analogs.from_csv(ANALOGS_CSV, first_row=5, first_column=2), **EXPECTED_VALUES[59], ) is_expected_array( Markers.from_csv(MARKERS_CSV_WITHOUT_HEADER, first_column=2), **EXPECTED_VALUES[58], )
def test_read_xlsx(): is_expected_array( Markers.from_excel(**{ **markers_csv_kwargs, **dict(filename=MARKERS_XLSX) }), **EXPECTED_VALUES[60], ) is_expected_array( Analogs.from_excel(**{ **analogs_csv_kwargs, **dict(filename=ANALOGS_XLSX) }), **EXPECTED_VALUES[61], )
def test_proc_detect_outliers(): is_expected_array(MARKERS_DATA.meca.detect_outliers(threshold=3), **EXPECTED_VALUES[51]) is_expected_array(MARKERS_DATA.meca.detect_outliers(threshold=1), **EXPECTED_VALUES[52]) is_expected_array(ANALOGS_DATA.meca.detect_outliers(threshold=3), **EXPECTED_VALUES[53]) is_expected_array(ANALOGS_DATA.meca.detect_outliers(threshold=1), **EXPECTED_VALUES[54])
def test_proc_fft(): is_expected_array(ANALOGS_DATA.meca.fft(freq=ANALOGS_DATA.rate), **EXPECTED_VALUES[40]) is_expected_array( ANALOGS_DATA.meca.fft(freq=ANALOGS_DATA.rate, only_positive=False), **EXPECTED_VALUES[41]) is_expected_array(MARKERS_DATA.meca.fft(freq=ANALOGS_DATA.rate), **EXPECTED_VALUES[42]) is_expected_array( MARKERS_DATA.meca.fft(freq=ANALOGS_DATA.rate, only_positive=False), **EXPECTED_VALUES[43])
def test_proc_detect_onset(): m = MARKERS_DATA[0, 0, :] r = xr.DataArray(m.meca.detect_onset(threshold=m.mean() + m.std())) is_expected_array(r, **EXPECTED_VALUES[49]) r = xr.DataArray( m.meca.detect_onset(threshold=m.mean(), n_below=10, threshold2=m.mean() + m.std())) is_expected_array(r, **EXPECTED_VALUES[50]) np.testing.assert_array_equal(x=m.meca.detect_onset(threshold=m.mean() * 10), y=0) with pytest.raises(ValueError): MARKERS_DATA[0, :, :].meca.detect_onset(threshold=0) with pytest.raises(ValueError): MARKERS_DATA[:, :, :].meca.detect_onset(threshold=0)
def test_proc_norm(): n_frames = 100 n_markers = 10 m = Markers(np.random.rand(3, n_markers, n_frames)) # norm by hand expected_norm = np.linalg.norm(m[:3, ...], axis=0) # norm with pyomeca computed_norm = m.meca.norm(dim="axis") np.testing.assert_almost_equal(computed_norm, expected_norm, decimal=10) is_expected_array(MARKERS_DATA.meca.norm(dim="axis"), **EXPECTED_VALUES[44]) is_expected_array(MARKERS_DATA.meca.norm(dim="channel"), **EXPECTED_VALUES[45]) is_expected_array(MARKERS_DATA.meca.norm(dim="time"), **EXPECTED_VALUES[46]) is_expected_array(ANALOGS_DATA.meca.norm(dim="channel"), **EXPECTED_VALUES[47]) is_expected_array(ANALOGS_DATA.meca.norm(dim="time"), **EXPECTED_VALUES[48])
def test_proc_time_normalize(): is_expected_array(MARKERS_DATA.meca.time_normalize(), **EXPECTED_VALUES[26]) is_expected_array(MARKERS_DATA.meca.time_normalize(n_frames=1000), **EXPECTED_VALUES[27]) time_vector = np.linspace(MARKERS_DATA.time[0], MARKERS_DATA.time[100], 100) is_expected_array( MARKERS_DATA.meca.time_normalize(time_vector=time_vector), **EXPECTED_VALUES[28]) is_expected_array( MARKERS_DATA.meca.time_normalize(norm_time=True).time, **EXPECTED_VALUES[55]) is_expected_array(ANALOGS_DATA.meca.time_normalize(), **EXPECTED_VALUES[29]) is_expected_array(ANALOGS_DATA.meca.time_normalize(n_frames=1000), **EXPECTED_VALUES[30]) time_vector = np.linspace(ANALOGS_DATA.time[0], ANALOGS_DATA.time[100], 100) is_expected_array( ANALOGS_DATA.meca.time_normalize(time_vector=time_vector), **EXPECTED_VALUES[31])
def test_proc_filters(): freq = ANALOGS_DATA.rate order = 2 is_expected_array( ANALOGS_DATA.meca.low_pass(order=order, cutoff=5, freq=freq), **EXPECTED_VALUES[32], ) is_expected_array( ANALOGS_DATA.meca.low_pass(order=order, cutoff=5), **EXPECTED_VALUES[32], ) is_expected_array( ANALOGS_DATA.meca.high_pass(order=order, cutoff=100), **EXPECTED_VALUES[33], ) is_expected_array( ANALOGS_DATA.meca.band_pass(order=order, cutoff=[10, 200]), **EXPECTED_VALUES[34], ) is_expected_array( ANALOGS_DATA.meca.band_stop(order=order, cutoff=[40, 60]), **EXPECTED_VALUES[35], ) freq = MARKERS_DATA.rate is_expected_array( MARKERS_DATA.meca.low_pass(freq=freq, order=order, cutoff=5), **EXPECTED_VALUES[36], ) is_expected_array( MARKERS_DATA.meca.low_pass(order=order, cutoff=5), **EXPECTED_VALUES[36], ) is_expected_array( MARKERS_DATA.meca.high_pass(order=order, cutoff=10), **EXPECTED_VALUES[37], ) is_expected_array( MARKERS_DATA.meca.band_pass(order=order, cutoff=[1, 10]), **EXPECTED_VALUES[38], ) is_expected_array( MARKERS_DATA.meca.band_stop(order=order, cutoff=[5, 6]), **EXPECTED_VALUES[39], ) with pytest.raises(ValueError): Analogs.from_random_data().meca.band_stop(order=order, cutoff=[5, 6])
def test_proc_filters(): freq = ANALOGS_DATA.rate order = 2 is_expected_array( ANALOGS_DATA.meca.low_pass(freq=freq, order=order, cutoff=5), **EXPECTED_VALUES[32], ) is_expected_array( ANALOGS_DATA.meca.high_pass(freq=freq, order=order, cutoff=100), **EXPECTED_VALUES[33], ) is_expected_array( ANALOGS_DATA.meca.band_pass(freq=freq, order=order, cutoff=[10, 200]), **EXPECTED_VALUES[34], ) is_expected_array( ANALOGS_DATA.meca.band_stop(freq=freq, order=order, cutoff=[40, 60]), **EXPECTED_VALUES[35], ) freq = MARKERS_DATA.rate is_expected_array( MARKERS_DATA.meca.low_pass(freq=freq, order=order, cutoff=5), **EXPECTED_VALUES[36], ) is_expected_array( MARKERS_DATA.meca.high_pass(freq=freq, order=order, cutoff=10), **EXPECTED_VALUES[37], ) is_expected_array( MARKERS_DATA.meca.band_pass(freq=freq, order=order, cutoff=[1, 10]), **EXPECTED_VALUES[38], ) is_expected_array( MARKERS_DATA.meca.band_stop(freq=freq, order=order, cutoff=[5, 6]), **EXPECTED_VALUES[39], )
def test_proc_normalize(): is_expected_array(MARKERS_DATA.meca.normalize(), **EXPECTED_VALUES[20]) is_expected_array(MARKERS_DATA.meca.normalize(scale=1), **EXPECTED_VALUES[21]) is_expected_array( MARKERS_DATA.meca.normalize(ref=MARKERS_DATA.sel(time=5.76)), **EXPECTED_VALUES[22]) is_expected_array(ANALOGS_DATA.meca.normalize(), **EXPECTED_VALUES[23]) is_expected_array(ANALOGS_DATA.meca.normalize(scale=1), **EXPECTED_VALUES[24]) is_expected_array( ANALOGS_DATA.meca.normalize(ref=ANALOGS_DATA.sel(time=5.76)), **EXPECTED_VALUES[25])
def test_proc_abs(): is_expected_array(ANALOGS_DATA.meca.abs(), **EXPECTED_VALUES[1]) is_expected_array(MARKERS_DATA.meca.abs(), **EXPECTED_VALUES[2])
def test_proc_square_sqrt(): is_expected_array(MARKERS_DATA.meca.square().meca.sqrt(), **EXPECTED_VALUES[3]) is_expected_array(ANALOGS_DATA.meca.square().meca.sqrt(), **EXPECTED_VALUES[4])