Example #1
0
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"])
Example #2
0
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"])
Example #3
0
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)
Example #4
0
 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
Example #5
0
 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
Example #6
0
 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
Example #7
0
 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
Example #8
0
        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()
Example #9
0
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)