Source code for mapof.marriages.persistence.instance_imports
import ast
import os
from mapof.core.glossary import NICE_NAME
[docs]
def import_real_instance(experiment, shift=False):
""" Import real ordinal election form .soc file """
votes = [0, 0]
file_name = f'{experiment.instance_id}.mi'
path = os.path.join(os.getcwd(), "experiments", experiment.experiment_id, "instances", file_name)
with open(path, 'r') as my_file:
params = 0
first_line = my_file.readline()
if first_line[0] != '#':
culture_id = 'empty'
num_agents = int(first_line)
else:
first_line = first_line.strip().split()
culture_id = first_line[1]
if len(first_line) <= 2:
params = {}
else:
params = ast.literal_eval(" ".join(first_line[2:]))
num_agents = int(my_file.readline())
for s in range(2):
if s == 1:
num_agents = int(my_file.readline())
num_candidates = num_agents
for _ in range(num_agents):
my_file.readline()
line = my_file.readline().rstrip("\n").split(',')
num_voters = int(line[0])
num_options = int(line[2])
votes[s] = [[0 for _ in range(num_candidates)] for _ in range(num_voters)]
for j in range(num_options):
line = my_file.readline().rstrip("\n").split(',')
_id = int(line[0])
for k in range(1):
for el in range(num_candidates):
votes[s][_id][el] = int(line[el + 1])
if shift:
for i in range(num_voters):
for j in range(num_candidates):
votes[s][i][j] -= 1
rev_NICE_NAME = {v: k for k, v in NICE_NAME.items()}
if culture_id in rev_NICE_NAME:
culture_id = rev_NICE_NAME[culture_id]
return votes, num_agents, params, culture_id