예제 #1
0
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
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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))
예제 #8
0
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]
예제 #9
0
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]
예제 #10
0
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)
예제 #11
0
def test_data_types(dtype, expected):
    x = get_vectors(dtype=dtype)
    distance_matrix = pairwise_distance(x)
    assert distance_matrix.dtype.name == expected
예제 #12
0
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