summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2020-04-11 18:18:14 +0200
committerMarc Glisse <marc.glisse@inria.fr>2020-04-11 18:18:14 +0200
commitf9a933862050ca95b3a96d7a8572d62f7f2205a9 (patch)
tree65b1a3df0d67ea0323942cbf4bc15e6371665793 /src
parent0a404547afec2e43dd5edf9410ff079d156d691a (diff)
Use longer names
Diffstat (limited to 'src')
-rw-r--r--src/python/gudhi/point_cloud/dtm.py10
-rw-r--r--src/python/gudhi/point_cloud/knn.py2
-rwxr-xr-xsrc/python/test/test_dtm.py18
-rwxr-xr-xsrc/python/test/test_knn.py76
4 files changed, 71 insertions, 35 deletions
diff --git a/src/python/gudhi/point_cloud/dtm.py b/src/python/gudhi/point_cloud/dtm.py
index 23c36b88..38368f29 100644
--- a/src/python/gudhi/point_cloud/dtm.py
+++ b/src/python/gudhi/point_cloud/dtm.py
@@ -7,10 +7,10 @@
# Modification(s):
# - YYYY/MM Author: Description of the modification
-from .knn import KNN
+from .knn import KNearestNeighbors
-class DTM:
+class DistanceToMeasure:
"""
Class to compute the distance to the empirical measure defined by a point set, as introduced in :cite:`dtm`.
"""
@@ -20,7 +20,7 @@ class DTM:
Args:
k (int): number of neighbors (possibly including the point itself).
q (float): order used to compute the distance to measure. Defaults to 2.
- kwargs: same parameters as :class:`~gudhi.point_cloud.knn.KNN`, except that metric="neighbors" means that :func:`transform` expects an array with the distances to the k nearest neighbors.
+ kwargs: same parameters as :class:`~gudhi.point_cloud.knn.KNearestNeighbors`, except that metric="neighbors" means that :func:`transform` expects an array with the distances to the k nearest neighbors.
"""
self.k = k
self.q = q
@@ -35,7 +35,9 @@ class DTM:
X (numpy.array): coordinates for mass points.
"""
if self.params.setdefault("metric", "euclidean") != "neighbors":
- self.knn = KNN(self.k, return_index=False, return_distance=True, sort_results=False, **self.params)
+ self.knn = KNearestNeighbors(
+ self.k, return_index=False, return_distance=True, sort_results=False, **self.params
+ )
self.knn.fit(X)
return self
diff --git a/src/python/gudhi/point_cloud/knn.py b/src/python/gudhi/point_cloud/knn.py
index 8369f1f8..6642a3c2 100644
--- a/src/python/gudhi/point_cloud/knn.py
+++ b/src/python/gudhi/point_cloud/knn.py
@@ -10,7 +10,7 @@
import numpy
-class KNN:
+class KNearestNeighbors:
"""
Class wrapping several implementations for computing the k nearest neighbors in a point set.
"""
diff --git a/src/python/test/test_dtm.py b/src/python/test/test_dtm.py
index 93b13e1a..37934fdb 100755
--- a/src/python/test/test_dtm.py
+++ b/src/python/test/test_dtm.py
@@ -8,7 +8,7 @@
- YYYY/MM Author: Description of the modification
"""
-from gudhi.point_cloud.dtm import DTM
+from gudhi.point_cloud.dtm import DistanceToMeasure
import numpy
import pytest
@@ -16,35 +16,35 @@ import pytest
def test_dtm_compare_euclidean():
pts = numpy.random.rand(1000, 4)
k = 3
- dtm = DTM(k, implementation="ckdtree")
+ dtm = DistanceToMeasure(k, implementation="ckdtree")
r0 = dtm.fit_transform(pts)
- dtm = DTM(k, implementation="sklearn")
+ dtm = DistanceToMeasure(k, implementation="sklearn")
r1 = dtm.fit_transform(pts)
assert r1 == pytest.approx(r0)
- dtm = DTM(k, implementation="sklearn", algorithm="brute")
+ dtm = DistanceToMeasure(k, implementation="sklearn", algorithm="brute")
r2 = dtm.fit_transform(pts)
assert r2 == pytest.approx(r0)
- dtm = DTM(k, implementation="hnsw")
+ dtm = DistanceToMeasure(k, implementation="hnsw")
r3 = dtm.fit_transform(pts)
assert r3 == pytest.approx(r0)
from scipy.spatial.distance import cdist
d = cdist(pts, pts)
- dtm = DTM(k, metric="precomputed")
+ dtm = DistanceToMeasure(k, metric="precomputed")
r4 = dtm.fit_transform(d)
assert r4 == pytest.approx(r0)
- dtm = DTM(k, implementation="keops")
+ dtm = DistanceToMeasure(k, implementation="keops")
r5 = dtm.fit_transform(pts)
assert r5 == pytest.approx(r0)
def test_dtm_precomputed():
dist = numpy.array([[1.0, 3, 8], [1, 5, 5], [0, 2, 3]])
- dtm = DTM(2, q=1, metric="neighbors")
+ dtm = DistanceToMeasure(2, q=1, metric="neighbors")
r = dtm.fit_transform(dist)
assert r == pytest.approx([2.0, 3, 1])
dist = numpy.array([[2.0, 2], [0, 1], [3, 4]])
- dtm = DTM(2, q=2, metric="neighbors")
+ dtm = DistanceToMeasure(2, q=2, metric="neighbors")
r = dtm.fit_transform(dist)
assert r == pytest.approx([2.0, 0.707, 3.5355], rel=0.01)
diff --git a/src/python/test/test_knn.py b/src/python/test/test_knn.py
index e455fb48..6aac2006 100755
--- a/src/python/test/test_knn.py
+++ b/src/python/test/test_knn.py
@@ -8,7 +8,7 @@
- YYYY/MM Author: Description of the modification
"""
-from gudhi.point_cloud.knn import KNN
+from gudhi.point_cloud.knn import KNearestNeighbors
import numpy as np
import pytest
@@ -16,39 +16,39 @@ import pytest
def test_knn_explicit():
base = np.array([[1.0, 1], [1, 2], [4, 2], [4, 3]])
query = np.array([[1.0, 1], [2, 2], [4, 4]])
- knn = KNN(2, metric="manhattan", return_distance=True, return_index=True)
+ knn = KNearestNeighbors(2, metric="manhattan", return_distance=True, return_index=True)
knn.fit(base)
r = knn.transform(query)
assert r[0] == pytest.approx(np.array([[0, 1], [1, 0], [3, 2]]))
assert r[1] == pytest.approx(np.array([[0.0, 1], [1, 2], [1, 2]]))
- knn = KNN(2, metric="chebyshev", return_distance=True, return_index=False)
+ knn = KNearestNeighbors(2, metric="chebyshev", return_distance=True, return_index=False)
knn.fit(base)
r = knn.transform(query)
assert r == pytest.approx(np.array([[0.0, 1], [1, 1], [1, 2]]))
r = (
- KNN(2, metric="chebyshev", return_distance=True, return_index=False, implementation="keops")
+ KNearestNeighbors(2, metric="chebyshev", return_distance=True, return_index=False, implementation="keops")
.fit(base)
.transform(query)
)
assert r == pytest.approx(np.array([[0.0, 1], [1, 1], [1, 2]]))
- knn = KNN(2, metric="minkowski", p=3, return_distance=False, return_index=True)
+ knn = KNearestNeighbors(2, metric="minkowski", p=3, return_distance=False, return_index=True)
knn.fit(base)
r = knn.transform(query)
assert np.array_equal(r, [[0, 1], [1, 0], [3, 2]])
r = (
- KNN(2, metric="minkowski", p=3, return_distance=False, return_index=True, implementation="keops")
+ KNearestNeighbors(2, metric="minkowski", p=3, return_distance=False, return_index=True, implementation="keops")
.fit(base)
.transform(query)
)
assert np.array_equal(r, [[0, 1], [1, 0], [3, 2]])
dist = np.array([[0.0, 3, 8], [1, 0, 5], [1, 2, 0]])
- knn = KNN(2, metric="precomputed", return_index=True, return_distance=False)
+ knn = KNearestNeighbors(2, metric="precomputed", return_index=True, return_distance=False)
r = knn.fit_transform(dist)
assert np.array_equal(r, [[0, 1], [1, 0], [2, 0]])
- knn = KNN(2, metric="precomputed", return_index=True, return_distance=True)
+ knn = KNearestNeighbors(2, metric="precomputed", return_index=True, return_distance=True)
r = knn.fit_transform(dist)
assert np.array_equal(r[0], [[0, 1], [1, 0], [2, 0]])
assert np.array_equal(r[1], [[0, 3], [0, 1], [0, 1]])
@@ -57,16 +57,40 @@ def test_knn_explicit():
def test_knn_compare():
base = np.array([[1.0, 1], [1, 2], [4, 2], [4, 3]])
query = np.array([[1.0, 1], [2, 2], [4, 4]])
- r0 = KNN(2, implementation="ckdtree", return_index=True, return_distance=False).fit(base).transform(query)
- r1 = KNN(2, implementation="sklearn", return_index=True, return_distance=False).fit(base).transform(query)
- r2 = KNN(2, implementation="hnsw", return_index=True, return_distance=False).fit(base).transform(query)
- r3 = KNN(2, implementation="keops", return_index=True, return_distance=False).fit(base).transform(query)
+ r0 = (
+ KNearestNeighbors(2, implementation="ckdtree", return_index=True, return_distance=False)
+ .fit(base)
+ .transform(query)
+ )
+ r1 = (
+ KNearestNeighbors(2, implementation="sklearn", return_index=True, return_distance=False)
+ .fit(base)
+ .transform(query)
+ )
+ r2 = (
+ KNearestNeighbors(2, implementation="hnsw", return_index=True, return_distance=False).fit(base).transform(query)
+ )
+ r3 = (
+ KNearestNeighbors(2, implementation="keops", return_index=True, return_distance=False)
+ .fit(base)
+ .transform(query)
+ )
assert np.array_equal(r0, r1) and np.array_equal(r0, r2) and np.array_equal(r0, r3)
- r0 = KNN(2, implementation="ckdtree", return_index=True, return_distance=True).fit(base).transform(query)
- r1 = KNN(2, implementation="sklearn", return_index=True, return_distance=True).fit(base).transform(query)
- r2 = KNN(2, implementation="hnsw", return_index=True, return_distance=True).fit(base).transform(query)
- r3 = KNN(2, implementation="keops", return_index=True, return_distance=True).fit(base).transform(query)
+ r0 = (
+ KNearestNeighbors(2, implementation="ckdtree", return_index=True, return_distance=True)
+ .fit(base)
+ .transform(query)
+ )
+ r1 = (
+ KNearestNeighbors(2, implementation="sklearn", return_index=True, return_distance=True)
+ .fit(base)
+ .transform(query)
+ )
+ r2 = KNearestNeighbors(2, implementation="hnsw", return_index=True, return_distance=True).fit(base).transform(query)
+ r3 = (
+ KNearestNeighbors(2, implementation="keops", return_index=True, return_distance=True).fit(base).transform(query)
+ )
assert np.array_equal(r0[0], r1[0]) and np.array_equal(r0[0], r2[0]) and np.array_equal(r0[0], r3[0])
d0 = pytest.approx(r0[1])
assert r1[1] == d0 and r2[1] == d0 and r3[1] == d0
@@ -75,8 +99,18 @@ def test_knn_compare():
def test_knn_nop():
# This doesn't look super useful...
p = np.array([[0.0]])
- assert None is KNN(k=1, return_index=False, return_distance=False, implementation="sklearn").fit_transform(p)
- assert None is KNN(k=1, return_index=False, return_distance=False, implementation="ckdtree").fit_transform(p)
- assert None is KNN(k=1, return_index=False, return_distance=False, implementation="hnsw", ef=5).fit_transform(p)
- assert None is KNN(k=1, return_index=False, return_distance=False, implementation="keops").fit_transform(p)
- assert None is KNN(k=1, return_index=False, return_distance=False, metric="precomputed").fit_transform(p)
+ assert None is KNearestNeighbors(
+ k=1, return_index=False, return_distance=False, implementation="sklearn"
+ ).fit_transform(p)
+ assert None is KNearestNeighbors(
+ k=1, return_index=False, return_distance=False, implementation="ckdtree"
+ ).fit_transform(p)
+ assert None is KNearestNeighbors(
+ k=1, return_index=False, return_distance=False, implementation="hnsw", ef=5
+ ).fit_transform(p)
+ assert None is KNearestNeighbors(
+ k=1, return_index=False, return_distance=False, implementation="keops"
+ ).fit_transform(p)
+ assert None is KNearestNeighbors(
+ k=1, return_index=False, return_distance=False, metric="precomputed"
+ ).fit_transform(p)