Source code for mapof.roommates.distances
import logging
from mapof.core.distances import extract_distance_id
from mapof.roommates.distances import fast_distances as mrd
from mapof.roommates.objects.Roommates import Roommates
registered_roommates_distances = {
'mutual_attraction': mrd.compute_retrospective_distance,
'positionwise': mrd.compute_positionwise_distance,
}
[docs]
def get_distance(election_1: Roommates,
election_2: Roommates,
distance_id: str = None
) -> float or (float, list):
""" Return: distance between ordinal elections, (if applicable) optimal matching """
inner_distance, main_distance = extract_distance_id(distance_id)
if main_distance in registered_roommates_distances:
return registered_roommates_distances.get(main_distance)(election_1,
election_2,
inner_distance)
else:
logging.warning('No such metric!')