-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
from scipy.spatial.distance import jaccard
# pip install scipy
def calculate_jaccard_distance(seq1: list, seq2: list) -> float:
"""
Calcula la distancia de Jaccard entre dos secuencias.
La distancia de Jaccard es una métrica de similitud entre dos conjuntos.
Jaccard(A, B) = 1 - |A ∩ B| / |A ∪ B|
Args:
seq1 -- Primera secuencia.
seq2 -- Segunda secuencia.
Returns:
Valor entre 0.0 y 1.0, siendo 0.0 la máxima similitud y 1.0 la máxima diferencia.
Raises:
RaisedError -- Si las secuencias no tienen la misma longitud.
"""
if len(seq1) == len(seq2) > 0:
return jaccard(seq1, seq2)
elif len(seq1) == len(seq2) == 0:
raise ValueError("Las secuencias no pueden ser vacías.")
else:
raise ValueError("Las secuencias deben tener la misma longitud.")
# Ejemplo de uso:
assert calculate_jaccard_distance([1, 1, 1], [2, 2, 2]) == 1.0
assert calculate_jaccard_distance([1, 2, 3], [4, 5, 6]) == 1.0
assert calculate_jaccard_distance([1, 2, 3], [1, 2, 3]) == 0.0
assert calculate_jaccard_distance([1, 1, 8, 8], [1, 1, 1, 1]) == 0.5
def test_function_raises_exception_empty():
try:
calculate_jaccard_distance([], [])
except ValueError:
pass
else:
assert False, "Expected 'Las secuencias no pueden ser vacías.'"
test_function_raises_exception_empty()
def test_function_raises_exception_different_length():
try:
calculate_jaccard_distance([1, 2, 3], [1, 2])
except ValueError:
pass
else:
assert False, "Expected 'Las secuencias deben tener la misma longitud.'"
test_function_raises_exception_different_length()Metadata
Metadata
Assignees
Labels
No labels