summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2021-01-11 16:25:18 +0100
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2021-01-11 16:25:18 +0100
commit60907b0104a2807667f175d9a8a328fd3f7f4ec8 (patch)
tree82ab9568e3c5fe275773fad49243f31a16e5b038
parent2a29df7cd54e9689e93bab90e3f64c84e8e8790f (diff)
Ignore doctest for atol doc. Rewrite unitary test for atol doc. To be synchronized
-rw-r--r--src/python/gudhi/representations/vector_methods.py9
-rwxr-xr-xsrc/python/test/test_representations.py26
2 files changed, 22 insertions, 13 deletions
diff --git a/src/python/gudhi/representations/vector_methods.py b/src/python/gudhi/representations/vector_methods.py
index 5ec2abd0..84bc99a2 100644
--- a/src/python/gudhi/representations/vector_methods.py
+++ b/src/python/gudhi/representations/vector_methods.py
@@ -605,18 +605,19 @@ class Atol(BaseEstimator, TransformerMixin):
>>> b = np.array([[4, 2, 0], [4, 4, 0], [4, 0, 2]])
>>> c = np.array([[3, 2, -1], [1, 2, -1]])
>>> atol_vectoriser = Atol(quantiser=KMeans(n_clusters=2, random_state=202006))
- >>> atol_vectoriser.fit(X=[a, b, c]).centers #doctest: +SKIP
+ >>> atol_vectoriser.fit(X=[a, b, c]).centers # doctest: +SKIP
>>> # array([[ 2. , 0.66666667, 3.33333333],
>>> # [ 2.6 , 2.8 , -0.4 ]])
>>> atol_vectoriser(a)
- >>> # array([1.18168665, 0.42375966]) #doctest: +SKIP
+ >>> # array([1.18168665, 0.42375966]) # doctest: +SKIP
>>> atol_vectoriser(c)
- >>> # array([0.02062512, 1.25157463]) #doctest: +SKIP
- >>> atol_vectoriser.transform(X=[a, b, c]) #doctest: +SKIP
+ >>> # array([0.02062512, 1.25157463]) # doctest: +SKIP
+ >>> atol_vectoriser.transform(X=[a, b, c]) # doctest: +SKIP
>>> # array([[1.18168665, 0.42375966],
>>> # [0.29861028, 1.06330156],
>>> # [0.02062512, 1.25157463]])
"""
+ # Note the example above must be up to date with the one in tests called test_atol_doc
def __init__(self, quantiser, weighting_method="cloud", contrast="gaussian"):
"""
Constructor for the Atol measure vectorisation class.
diff --git a/src/python/test/test_representations.py b/src/python/test/test_representations.py
index 1c8f8cdb..cda1a15b 100755
--- a/src/python/test/test_representations.py
+++ b/src/python/test/test_representations.py
@@ -47,21 +47,29 @@ def test_multiple():
# Test sorted values as points order can be inverted, and sorted test is not documentation-friendly
+# Note the test below must be up to date with the Atol class documentation
def test_atol_doc():
a = np.array([[1, 2, 4], [1, 4, 0], [1, 0, 4]])
b = np.array([[4, 2, 0], [4, 4, 0], [4, 0, 2]])
c = np.array([[3, 2, -1], [1, 2, -1]])
atol_vectoriser = Atol(quantiser=KMeans(n_clusters=2, random_state=202006))
- assert np.sort(atol_vectoriser.fit(X=[a, b, c]).centers, axis=0) == \
- pytest.approx(np.array([[2. , 0.66666667, -0.4], \
- [2.6, 2.8 , 3.33333333]]))
- assert np.sort(atol_vectoriser(a)) == pytest.approx(np.array([0.42375966, 1.18168665]))
- assert np.sort(atol_vectoriser(c)) == pytest.approx(np.array([0.02062512, 1.25157463]))
- assert np.sort(atol_vectoriser.transform(X=[a, b, c]), axis=0) == \
- pytest.approx(np.array([[0.02062512, 0.42375966], \
- [0.29861028, 1.06330156], \
- [1.18168665, 1.25157463]]))
+ # Atol will do
+ # X = np.concatenate([a,b,c])
+ # kmeans = KMeans(n_clusters=2, random_state=202006).fit(X)
+ # kmeans.labels_ will be : array([1, 0, 1, 0, 0, 1, 0, 0])
+ first_cluster = np.asarray([a[0], a[2], b[2]])
+ second_cluster = np.asarray([a[1], b[0], b[2], c[0], c[1]])
+
+ # Check the center of the first_cluster and second_cluster are in Atol centers
+ centers = atol_vectoriser.fit(X=[a, b, c]).centers
+ np.isclose(centers, first_cluster.mean(axis=0)).all(1).any()
+ np.isclose(centers, second_cluster.mean(axis=0)).all(1).any()
+
+ vectorization = atol_vectoriser.transform(X=[a, b, c])
+ assert np.allclose(vectorization[0], atol_vectoriser(a))
+ assert np.allclose(vectorization[1], atol_vectoriser(b))
+ assert np.allclose(vectorization[2], atol_vectoriser(c))
def test_dummy_atol():