Source code for mapof.elections.cultures.euclidean
import logging
import prefsampling.ordinal as pref_ordinal
import prefsampling.approval as pref_approval
from prefsampling.core.euclidean import EuclideanSpace
[docs]
def euclidean_ordinal_mask(num_voters=None,
                       num_candidates=None,
                       space=None,
                       dim=2,
                       **kwargs):
    """ Euclidean Ordinal Masked"""
    num_dimensions = dim
    if type(space) is str:
        if space.lower() == 'uniform':
            point_sampler = EuclideanSpace.UNIFORM_CUBE
        elif space.lower() == 'sphere':
            point_sampler = EuclideanSpace.UNIFORM_SPHERE
        elif space.lower() == 'ball':
            point_sampler = EuclideanSpace.UNIFORM_BALL
        elif space.lower() == 'gaussian':
            point_sampler = EuclideanSpace.GAUSSIAN_CUBE
        else:
            logging.warning("Invalid space type. Using default uniform cube.")
            point_sampler = EuclideanSpace.UNIFORM_CUBE
    else:
        point_sampler = EuclideanSpace.UNIFORM_CUBE
    return pref_ordinal.euclidean(
        num_voters=num_voters,
        num_candidates=num_candidates,
        num_dimensions=num_dimensions,
        voters_positions=point_sampler,
        candidates_positions=point_sampler,
        **kwargs) 
[docs]
def euclidean_approval_mask(num_voters=None,
                       num_candidates=None,
                       space=None,
                       dim=2,
                       radius=0.2,
                       **kwargs):
    """ Euclidean Approval Masked"""
    num_dimensions = dim
    if type(space) is str:
        if space.lower() == 'uniform':
            point_sampler = EuclideanSpace.UNIFORM_CUBE
        elif space.lower() == 'sphere':
            point_sampler = EuclideanSpace.UNIFORM_SPHERE
        elif space.lower() == 'ball':
            point_sampler = EuclideanSpace.UNIFORM_BALL
        elif space.lower() == 'gaussian':
            point_sampler = EuclideanSpace.GAUSSIAN_CUBE
        else:
            logging.warning("Invalid space type. Using default uniform cube.")
            point_sampler = EuclideanSpace.UNIFORM_CUBE
    else:
        point_sampler = EuclideanSpace.UNIFORM_CUBE
    return pref_approval.euclidean_vcr(
        num_voters=num_voters,
        num_candidates=num_candidates,
        voters_radius=radius,
        candidates_radius=0,
        num_dimensions=num_dimensions,
        voters_positions=point_sampler,
        candidates_positions=point_sampler,
        **kwargs)