"""
Jaccard similarity module.
Contains functions to calculate the Jaccard similarity index between 2 binary
masks or multipolygonal shapes.
"""
from sklearn.metrics import jaccard_similarity_score as jss
# JI between 2 binary masks
[docs]def jaccard_index_binary_masks(truth_mask, predicted_mask):
return jss(truth_mask, predicted_mask, normalize=True)
# JI between 2 multipolygons
[docs]def jaccard_index_multipolygons(truth_multi, predicted_multi):
if not (truth_multi.is_valid):
raise ('The truth multipolygon is not valid!')
if not (predicted_multi.is_valid):
raise ('The predicted multipolygon is not valid!')
# intersection
intersec = truth_multi.intersection(predicted_multi).area
# union
union = truth_multi.union(predicted_multi).area
# Jaccard index is intersection over union
return intersec / union