Source code for mapof.elections.objects.OrdinalElectionExperiment

#!/usr/bin/env python
import os
from abc import ABC

from mapof.elections.objects.ElectionExperiment import ElectionExperiment
import mapof.elections.cultures_ as cultures
import mapof.elections.features_ as features
import mapof.elections.distances_ as distances

try:
    from sklearn.manifold import MDS
    from sklearn.manifold import TSNE
    from sklearn.manifold import SpectralEmbedding
    from sklearn.manifold import LocallyLinearEmbedding
    from sklearn.manifold import Isomap
except ImportError as error:
    MDS = None
    TSNE = None
    SpectralEmbedding = None
    LocallyLinearEmbedding = None
    Isomap = None
    print(error)


[docs] class OrdinalElectionExperiment(ElectionExperiment, ABC): """Abstract set of elections.""" def __init__(self, **kwargs): super().__init__(**kwargs) def add_culture(self, name, function): cultures.add_ordinal_culture(name, function) def add_feature(self, name, function): features.add_ordinal_feature(name, function) def add_distance(self, name, function): distances.add_ordinal_distance(name, function) def add_folders_to_experiment(self) -> None: dirs = ["experiments", "images", "trash"] for dir in dirs: if not os.path.isdir(dir): os.mkdir(os.path.join(os.getcwd(), dir)) if not os.path.isdir(os.path.join(os.getcwd(), "experiments", self.experiment_id)): os.mkdir(os.path.join(os.getcwd(), "experiments", self.experiment_id)) list_of_folders = ['distances', 'features', 'coordinates', 'elections', 'matrices'] for folder_name in list_of_folders: if not os.path.isdir(os.path.join(os.getcwd(), "experiments", self.experiment_id, folder_name)): os.mkdir(os.path.join(os.getcwd(), "experiments", self.experiment_id, folder_name)) path = os.path.join(os.getcwd(), "experiments", self.experiment_id, "map.csv") if not os.path.exists(path): with open(path, 'w') as file_csv: file_csv.write( "size;num_candidates;num_voters;culture_id;params;color;alpha;" "family_id;label;marker;show\n") file_csv.write("3;10;100;ic;{};black;1;ic;Impartial Culture;o;process_id\n")