def test_data_types( metric: MetricTypes, dtype: str, expected: str, device: DeviceTypes ) -> None: skip_gpu_tests_if_no_gpu(device) x = get_vectors(dtype=dtype) distance_matrix = pairwise_distance(x, metric=metric, device=device).compute() assert distance_matrix.dtype.name == expected
def test_distance_euclidean( size: typing.Tuple[int, int], chunk: typing.Tuple[int, int] ) -> None: x = get_vectors(size=size, chunk=chunk) distance_matrix = pairwise_distance(x, metric="euclidean") expected_matrix = squareform(pdist(x)) np.testing.assert_almost_equal(distance_matrix, expected_matrix)
def test_distance_correlation(size: typing.Tuple[int, int], chunk: typing.Tuple[int, int]) -> None: x = get_vectors(size=size, chunk=chunk) distance_matrix = pairwise_distance(x, metric="correlation") distance_array = pdist(x, metric="correlation") expected_matrix = squareform(distance_array) np.testing.assert_almost_equal(distance_matrix, expected_matrix)
def test_pairwise_split_every( size: typing.Tuple[int, int], chunk: typing.Tuple[int, int], split_every: int, metric: MetricTypes, ) -> None: x = get_vectors(size=size, chunk=chunk) distance_matrix = pairwise_distance(x, metric=metric, split_every=split_every) expected_matrix = squareform(pdist(x, metric=metric)) np.testing.assert_almost_equal(distance_matrix, expected_matrix)
def test_pairwise( size: typing.Tuple[int, int], chunk: typing.Tuple[int, int], device: DeviceTypes, metric: MetricTypes, ) -> None: skip_gpu_tests_if_no_gpu(device) x = get_vectors(size=size, chunk=chunk) distance_matrix = pairwise_distance(x, metric=metric, device=device) distance_array = pdist(x, metric=metric) expected_matrix = squareform(distance_array) np.testing.assert_almost_equal(distance_matrix, expected_matrix)
def test_missing_values( metric: str, metric_func: typing.Callable[[ArrayLike, ArrayLike], np.float64], dtype: str, ) -> None: x = get_vectors(array_type="np", dtype=dtype) ri_times = np.random.randint(5, 20) m, n = x.shape for i in range(ri_times): if dtype == "f8": x[np.random.randint(0, m)][np.random.randint(0, m)] = np.nan x[np.random.randint(0, m)][np.random.randint(0, m)] = np.random.randint( -100, -1 ) distance_matrix = pairwise_distance(x, metric=metric) expected_matrix = create_distance_matrix(x, metric_func) np.testing.assert_almost_equal(distance_matrix, expected_matrix)
def test_wrong_dimension_array() -> None: with pytest.raises(ValueError): pairwise_distance(da.arange(6).reshape(1, 2, 3)) with pytest.raises(ValueError): pairwise_distance(da.arange(10))
def test_invalid_device() -> None: x = get_vectors(array_type="np") with pytest.raises(ValueError): pairwise_distance(x, device="invalid-device") # type: ignore[arg-type]
def test_undefined_metric() -> None: x = get_vectors(array_type="np") with pytest.raises(NotImplementedError): pairwise_distance(x, metric="not-implemented-metric") # type: ignore[arg-type]
def test_distance_ndarray() -> None: x = get_vectors(array_type="np") distance_matrix = pairwise_distance(x, metric="euclidean") expected_matrix = squareform(pdist(x)) np.testing.assert_almost_equal(distance_matrix, expected_matrix)
def test_data_types(dtype, expected): x = get_vectors(dtype=dtype) distance_matrix = pairwise_distance(x) assert distance_matrix.dtype.name == expected
def test_data_types(metric: MetricTypes, dtype: str, expected: str) -> None: x = get_vectors(dtype=dtype) distance_matrix = pairwise_distance(x, metric=metric).compute() assert distance_matrix.dtype.name == expected