def simulate(votes, constituencies, **kwargs): """Simulate elections.""" e_rules = voting.ElectionRules() e_rules["constituencies"] = constituencies parties, votes = util.load_votes(votes, e_rules["constituencies"]) e_rules["parties"] = parties s_rules = sim.SimulationRules() try: for arg, val in kwargs.iteritems(): s_rules[arg] = val except AttributeError: for arg, val in kwargs.items(): s_rules[arg] = val e_rules = util.sim_election_rules(e_rules, s_rules["test_method"]) simulation = sim.Simulation(s_rules, [e_rules], votes) simulation.simulate() if s_rules["show_details"]: util.print_simulation(simulation) if s_rules["to_xlsx"]: util.simulation_to_xlsx(simulation, s_rules["to_xlsx"])
def apportion(votes, **kwargs): """Do regular apportionment based on votes and constituency data.""" rules = voting.ElectionRules() kwargs["primary_divider"] = kwargs["divider"] kwargs["adj_determine_divider"] = kwargs[ "adj_determine_divider"] or kwargs["divider"] kwargs["adj_alloc_divider"] = kwargs["adj_alloc_divider"] or kwargs[ "adj_determine_divider"] kwargs["adjustment_threshold"] = kwargs["threshold"] * 0.01 try: for arg, val in kwargs.iteritems(): rules[arg] = val except AttributeError: for arg, val in kwargs.items(): rules[arg] = val parties, votes = util.load_votes(votes, rules["constituencies"]) rules["parties"] = parties election = voting.Election(rules, votes) election.run() if rules["show_details"]: util.print_steps_election(election) else: util.pretty_print_election(election) if rules["to_xlsx"]: util.election_to_xlsx(election, rules["to_xlsx"])
def apportion(votes, **kwargs): """Do regular apportionment based on votes and constituency data.""" rules = voting.Rules() kwargs["adjustment_divider"] = kwargs["adjustment_divider"] or kwargs[ "divider"] try: for arg, val in kwargs.iteritems(): rules[arg] = val except AttributeError: for arg, val in kwargs.items(): rules[arg] = val parties, votes = util.load_votes(votes, rules["constituencies"]) rules["parties"] = parties election = voting.Election(rules, votes) election.run() if rules['output'] == "simple": click.secho( "Warning: When loading votes, no attempt is currently " "made to guarantee that the vote file lists " "constituencies in the same order as they are declared in " "the constituency file.\n\n", fg="red") util.pretty_print_election(rules, election)
def load_votes(self, votesfile): parties, votes = load_votes(votesfile) self.rules["parties"] = parties assert (len(votes) == len(self.rules["constituencies"])) assert (all( [len(votes[x]) == len(self.rules["parties"]) for x in votes])) self.m_votes = votes self.v_parties = parties
def load_votes(self, votesfile): parties, votes = load_votes(votesfile) self.rules["parties"] = parties assert(len(votes) == len(self.rules["constituencies"])) assert(all([len(votes[x]) == len(self.rules["parties"]) for x in votes])) self.m_votes = votes self.v_parties = parties
def setUp(self): self.rules = voting.ElectionRules() votes_file = "../data/elections/iceland_2013_landskjorstjorn.csv" const_file = "../data/constituencies/constituencies_iceland_2013.csv" self.rules["constituencies"] = const_file parties, votes = util.load_votes(votes_file, self.rules["constituencies"]) self.rules["parties"] = parties self.rules["adjustment_method"] = "alternating-scaling" self.votes = votes
def setUp(self): self.rules = voting.ElectionRules() self.rules_6c = voting.ElectionRules() votes_file = "../data/elections/iceland_2013_landskjorstjorn.csv" const_file = "../data/constituencies/constituencies_iceland_2013.csv" const_file_6c = "../data/constituencies/iceland_2013_6x6.xlsx" self.rules["constituencies"] = const_file self.rules_6c["constituencies"] = const_file_6c parties, votes = util.load_votes(votes_file, self.rules["constituencies"]) self.rules["parties"] = parties self.rules_6c["parties"] = parties self.votes = votes
def fn(self): rules = voting.ElectionRules() votes_file = "../data/elections/iceland_2013_landskjorstjorn.csv" const_file = "../data/constituencies/constituencies_iceland_2013.csv" rules["constituencies"] = const_file parties, votes = util.load_votes(votes_file, rules["constituencies"]) rules["parties"] = parties rules["adjustment_method"] = method election = voting.Election(rules, votes) election.run()
def apportion(votes, **kwargs): """Do regular apportionment based on votes and constituency data.""" rules = voting.Rules() kwargs["adjustment_divider"] = kwargs["adjustment_divider"] or kwargs[ "divider"] for arg, val in kwargs.iteritems(): rules[arg] = val parties, votes = util.load_votes(votes, rules["constituencies"]) rules["parties"] = parties election = voting.Election(rules, votes) election.run() util.pretty_print_election(rules, election)