summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoryuichi-ike <yuichi.ike.1990@gmail.com>2020-04-06 21:19:55 +0900
committeryuichi-ike <yuichi.ike.1990@gmail.com>2020-04-06 21:19:55 +0900
commita4fa5f673784a842e9fac13003c843d454c888a4 (patch)
treeb412473b8707f6f593c8b836eea4ca31f5e0cbae /src
parent15586d479be885319dde6f703c3126176b796732 (diff)
bug fixed, parameter name changed
Diffstat (limited to 'src')
-rw-r--r--src/python/CMakeLists.txt2
-rw-r--r--src/python/gudhi/weighted_rips_complex.py19
-rw-r--r--src/python/test/test_weighted_rips.py13
3 files changed, 19 insertions, 15 deletions
diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt
index cac4553a..4b87ed9b 100644
--- a/src/python/CMakeLists.txt
+++ b/src/python/CMakeLists.txt
@@ -57,6 +57,7 @@ if(PYTHONINTERP_FOUND)
set(GUDHI_PYTHON_MODULES_EXTRA "${GUDHI_PYTHON_MODULES_EXTRA}'representations', ")
set(GUDHI_PYTHON_MODULES_EXTRA "${GUDHI_PYTHON_MODULES_EXTRA}'wasserstein', ")
set(GUDHI_PYTHON_MODULES_EXTRA "${GUDHI_PYTHON_MODULES_EXTRA}'point_cloud', ")
+ set(GUDHI_PYTHON_MODULES_EXTRA "${GUDHI_PYTHON_MODULES_EXTRA}'weighted_rips_complex', ")
add_gudhi_debug_info("Python version ${PYTHON_VERSION_STRING}")
add_gudhi_debug_info("Cython version ${CYTHON_VERSION}")
@@ -228,6 +229,7 @@ if(PYTHONINTERP_FOUND)
file(COPY "gudhi/representations" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/gudhi/")
file(COPY "gudhi/wasserstein.py" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/gudhi")
file(COPY "gudhi/point_cloud" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/gudhi")
+ file(COPY "gudhi/weighted_rips_complex.py" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/gudhi")
add_custom_command(
OUTPUT gudhi.so
diff --git a/src/python/gudhi/weighted_rips_complex.py b/src/python/gudhi/weighted_rips_complex.py
index 7d14ac65..9df2ddf9 100644
--- a/src/python/gudhi/weighted_rips_complex.py
+++ b/src/python/gudhi/weighted_rips_complex.py
@@ -1,6 +1,6 @@
# This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT.
# See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
-# Author(s): Raphaël Tinarrage and Yuichi Ike
+# Author(s): Raphaël Tinarrage, Yuichi Ike, Masatoshi Takenouchi
#
# Copyright (C) 2020 Inria, Copyright (C) 2020 FUjitsu Laboratories Ltd.
#
@@ -12,23 +12,26 @@ from gudhi import SimplexTree
class WeightedRipsComplex:
"""
class to generate a weighted Rips complex
- from a distance matrix and filtration value
+ from a distance matrix and weights on vertices
"""
def __init__(self,
- distance_matrix=None,
- filtration_values=None,
+ distance_matrix,
+ weights=None,
max_filtration=float('inf')):
"""
Parameters:
distance_matrix: list of list of float,
distance matrix (full square or lower triangular)
filtration_values: list of float,
- flitration value for each index
+ weight for each vertex
max_filtration: float,
specifies the maximal filtration value to be considered
"""
self.distance_matrix = distance_matrix
- self.filtration_values = filtration_values
+ if weights is not None:
+ self.weights = weights
+ else:
+ self.weights = [0] * len(distance_matrix)
self.max_filtration = max_filtration
def create_simplex_tree(self, max_dimension):
@@ -38,7 +41,7 @@ class WeightedRipsComplex:
graph expansion until this given dimension
"""
dist = self.distance_matrix
- F = self.filtration_values
+ F = self.weights
num_pts = len(dist)
st = SimplexTree()
@@ -47,7 +50,7 @@ class WeightedRipsComplex:
if F[i] < self.max_filtration:
st.insert([i], F[i])
for i in range(num_pts):
- for j in range(num_pts):
+ for j in range(i):
value = (dist[i][j] + F[i] + F[j]) / 2
if value < self.max_filtration:
st.insert([i,j], filtration=value)
diff --git a/src/python/test/test_weighted_rips.py b/src/python/test/test_weighted_rips.py
index f0db6798..7896fb78 100644
--- a/src/python/test/test_weighted_rips.py
+++ b/src/python/test/test_weighted_rips.py
@@ -1,6 +1,6 @@
""" This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT.
See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
- Author(s): Yuichi Ike
+ Author(s): Yuichi Ike and Masatoshi Takenouchi
Copyright (C) 2020 Inria
@@ -10,18 +10,17 @@
from gudhi.weighted_rips_complex import WeightedRipsComplex
from gudhi.point_cloud.dtm import DTM
-import numpy
+import numpy as np
from scipy.spatial.distance import cdist
import pytest
def test_dtm_rips_complex():
- pts = numpy.array([[2.0, 2], [0, 1], [3, 4]])
+ pts = np.array([[2.0, 2], [0, 1], [3, 4]])
dist = cdist(pts,pts)
dtm = DTM(2, q=2, metric="precomputed")
r = dtm.fit_transform(dist)
- w_rips = WeightedRipsComplex(distance_mattix=dist, filtration_values=r)
+ w_rips = WeightedRipsComplex(distance_mattix=dist, weights=r)
st = w_rips.create_simplex_tree(max_dimension=2)
- diag = st.persistence()
- assert diag == [(0, (1.5811388300841898, float("inf"))), (0, (1.5811388300841898, 2.699172818834085)), (0, (1.5811388300841898, 2.699172818834085))]
+ persistence_intervals0 = st.persistence_intervals_in_dimension(0)
+ assert persistence_intervals0 == pytest.approx(np.array([[1.58113883, 2.69917282],[1.58113883, 2.69917282], [1.58113883, float("inf")]]))
- \ No newline at end of file