import numpy as np
from ripser import ripser
from persim import plot_diagrams
import matplotlib.pyplot as plt

# 1. Matriz de Distancia

# d[i, j] = distancia entre el dato i y el dato j.

D = np.array([
    [0., 1., 1., 2., 3., 3.],
    [1., 0., 2., 1., 3., 3.],
    [1., 2., 0., 1., 3., 3.],
    [2., 1., 1., 0., 3., 3.],
    [3., 3., 3., 3., 0., 2.],
    [3., 3., 3., 3., 2., 0.]
])


# 2. Cálculo de la Homología Persistente (usando la filtración de Vietoris-Rips asociados a los datos, como vimos en clase)

# - distance_matrix=True indica que la entrada es una matriz de distancia.
# - maxdim=1 calcula la homología hasta la dimensión 1 (H0 y H1).
results = ripser(D, distance_matrix=False, maxdim=1)

# El resultado 'dgms' contiene los Diagramas de Persistencia.
diagrams = results['dgms']

# 3. Graficamos del Diagrama de Persistencia
# Se utiliza la función 'plot_diagrams' de persim.
plt.figure(figsize=(8, 6))
plot_diagrams(diagrams,     title="Diagrama de Persistencia (H0 y H1)")
plt.show()