예제 #1
0
def sample_axelrod_model(model, args, simconfig):
    counts = stats.get_culture_counts_dbformat(model)
    klemm = stats.klemm_normalized_L_axelrod(model, simconfig)
    data.store_stats_axelrod_original(
        simconfig.popsize, simconfig.sim_id, simconfig.num_features,
        simconfig.num_traits, simconfig.drift_rate,
        simconfig.INTERACTION_RULE_CLASS,
        simconfig.POPULATION_STRUCTURE_CLASS, simconfig.script, len(counts),
        model.get_time_last_interaction(), counts, klemm)
    if args.diagram == True:
        model.draw_network_colored_by_culture()
예제 #2
0
def sample_treestructured_model(model, args, simconfig, timestep, finalized):
    log.debug("sampling tree structured model")
    trait_analyzer = stats.PopulationTraitFrequencyAnalyzer(model)
    trait_analyzer.calculate_trait_frequencies()
    trait_spectrum = trait_analyzer.get_trait_spectrum()

    culture_counts_dbformat = stats.get_culture_counts_dbformat(model)
    culture_count_map = stats.get_culture_count_map(model)
    (mean_traits, sd_traits) = stats.get_num_traits_per_individual_stats(model)
    #log.debug("culture size - mean: %s sd: %s", mean_traits, sd_traits)
    klemm = stats.klemm_normalized_L_extensible(model, simconfig)

    graphml_blobs = []
    trait_tree_stats = []
    traitset_map = get_traitset_map(model)
    for culture, traits in traitset_map.items():
        g = dict(cultureid=str(culture),
                 content=model.trait_universe.get_graphml_for_culture(traits))
        if simconfig.save_graphs == True:
            graphml_blobs.append(g)
        trait_tree_stats.append(
            get_tree_symmetries_for_traitset(model, simconfig, culture, traits,
                                             culture_count_map))

    #log.debug("graphml: %s", pp.pformat(graphml_blobs))

    sample_time = timestep
    if finalized == 1:
        convergence_time = model.get_time_last_interaction()
    else:
        convergence_time = 0

    # Not recording the entropy yet, it doesn't mean anything given the way frequencies work.

    data.store_stats_axelrod_treestructured(
        simconfig.popsize, simconfig.sim_id, simconfig.maxtraits,
        simconfig.learning_rate, simconfig.loss_rate, simconfig.innov_rate,
        simconfig.num_trees, simconfig.branching_factor,
        simconfig.depth_factor, simconfig.INTERACTION_RULE_CLASS,
        simconfig.POPULATION_STRUCTURE_CLASS,
        simconfig.NETWORK_FACTORY_CLASS, simconfig.script,
        len(culture_counts_dbformat), trait_spectrum, convergence_time,
        sample_time, culture_counts_dbformat, klemm, mean_traits,
        sd_traits, graphml_blobs, trait_tree_stats,
        trait_analyzer.get_trait_richness(), None, finalized,
        simconfig.ws_rewiring)

    if args.diagram == True and finalized == 1:
        for culture, traits in traitset_map.items():
            model.trait_universe.draw_trait_network_for_culture(
                culture, traits)
예제 #3
0
def sample_extensible_model(model, args, simconfig):
    counts = stats.get_culture_counts_dbformat(model)
    (mean_traits, sd_traits) = stats.get_num_traits_per_individual_stats(model)
    log.debug("culture size - mean: %s sd: %s", mean_traits, sd_traits)
    klemm = stats.klemm_normalized_L_extensible(model, simconfig)
    data.store_stats_axelrod_extensible(
        simconfig.popsize, simconfig.sim_id, simconfig.maxtraits,
        simconfig.add_rate, simconfig.drift_rate,
        simconfig.INTERACTION_RULE_CLASS,
        simconfig.POPULATION_STRUCTURE_CLASS, simconfig.script, len(counts),
        model.get_time_last_interaction(), counts, klemm, mean_traits,
        sd_traits)
    if args.diagram == True:
        model.draw_network_colored_by_culture()
예제 #4
0
def sample_axelrod_model(model,args,simconfig):
    counts = stats.get_culture_counts_dbformat(model)
    klemm = stats.klemm_normalized_L_axelrod(model,simconfig)
    data.store_stats_axelrod_original(simconfig.popsize,
                                      simconfig.sim_id,
                                      simconfig.num_features,
                                      simconfig.num_traits,
                                      simconfig.drift_rate,
                                      simconfig.INTERACTION_RULE_CLASS,
                                      simconfig.POPULATION_STRUCTURE_CLASS,
                                      simconfig.script,
                                      len(counts),
                                      model.get_time_last_interaction(),
                                      counts,
                                      klemm)
    if args.diagram == True:
        model.draw_network_colored_by_culture()
예제 #5
0
def main():
    structure_class_name = simconfig.POPULATION_STRUCTURE_CLASS
    log.debug(
        "Configuring Axelrod model with structure class: %s graph factory: %s interaction rule: %s",
        structure_class_name, simconfig.NETWORK_FACTORY_CLASS,
        simconfig.INTERACTION_RULE_CLASS)

    log.debug("Run for popsize %s  maxinittraits: %s, addrate: %s",
              simconfig.popsize, simconfig.maxtraits, simconfig.add_rate)

    model_constructor = utils.load_class(structure_class_name)
    rule_constructor = utils.load_class(simconfig.INTERACTION_RULE_CLASS)
    graph_factory_constructor = utils.load_class(
        simconfig.NETWORK_FACTORY_CLASS)
    trait_factory_constructor = utils.load_class(simconfig.TRAIT_FACTORY_CLASS)

    graph_factory = graph_factory_constructor(simconfig)
    trait_factory = trait_factory_constructor(simconfig)

    model = model_constructor(simconfig, graph_factory, trait_factory)
    model.initialize_population()

    ax = rule_constructor(model)

    timestep = 0
    last_interaction = 0

    counts = analysis.get_culture_counts_dbformat(model)

    while (1):
        timestep += 1
        if (timestep % 10000 == 0):
            log.debug("time: %s  frac active links %s", timestep,
                      ax.get_fraction_links_active())
        ax.step(timestep)
        if model.get_time_last_interaction() != timestep:
            live = utils.check_liveness(ax, model, args, simconfig, timestep)
            if live == False:
                log.info("Finalizing statistics at time: %s",
                         model.get_time_last_interaction())
                utils.sample_extensible_model(model, args, simconfig)
                exit(0)
예제 #6
0
def sample_extensible_model(model, args, simconfig):
    counts = stats.get_culture_counts_dbformat(model)
    (mean_traits,sd_traits) = stats.get_num_traits_per_individual_stats(model)
    log.debug("culture size - mean: %s sd: %s", mean_traits, sd_traits)
    klemm = stats.klemm_normalized_L_extensible(model, simconfig)
    data.store_stats_axelrod_extensible(simconfig.popsize,
                                      simconfig.sim_id,
                                      simconfig.maxtraits,
                                      simconfig.add_rate,
                                      simconfig.drift_rate,
                                      simconfig.INTERACTION_RULE_CLASS,
                                      simconfig.POPULATION_STRUCTURE_CLASS,
                                      simconfig.script,
                                      len(counts),
                                      model.get_time_last_interaction(),
                                      counts,
                                      klemm,
                                      mean_traits,
                                      sd_traits)
    if args.diagram == True:
        model.draw_network_colored_by_culture()
예제 #7
0
def main():
    structure_class_name = simconfig.POPULATION_STRUCTURE_CLASS
    log.debug("Configuring Axelrod model with structure class: %s graph factory: %s interaction rule: %s", structure_class_name, simconfig.NETWORK_FACTORY_CLASS, simconfig.INTERACTION_RULE_CLASS)


    log.debug("Run for popsize %s  maxinittraits: %s, addrate: %s", simconfig.popsize,
             simconfig.maxtraits, simconfig.add_rate)


    model_constructor = utils.load_class(structure_class_name)
    rule_constructor = utils.load_class(simconfig.INTERACTION_RULE_CLASS)
    graph_factory_constructor = utils.load_class(simconfig.NETWORK_FACTORY_CLASS)
    trait_factory_constructor = utils.load_class(simconfig.TRAIT_FACTORY_CLASS)

    graph_factory = graph_factory_constructor(simconfig)
    trait_factory = trait_factory_constructor(simconfig)

    model = model_constructor(simconfig, graph_factory, trait_factory)
    model.initialize_population()

    ax = rule_constructor(model)

    timestep = 0
    last_interaction = 0

    counts = analysis.get_culture_counts_dbformat(model)

    while(1):
        timestep += 1
        if(timestep % 10000 == 0):
            log.debug("time: %s  frac active links %s", timestep, ax.get_fraction_links_active())
        ax.step(timestep)
        if model.get_time_last_interaction() != timestep:
            live = utils.check_liveness(ax, model, args, simconfig, timestep)
            if live == False:
                log.info("Finalizing statistics at time: %s", model.get_time_last_interaction())
                utils.sample_extensible_model(model, args, simconfig)
                exit(0)
예제 #8
0
 def test_culture_counts(self):
     counts = analysis.get_culture_counts_dbformat(self.pop)
     log.info("counts: %s", counts)
예제 #9
0
 def test_culture_counts(self):
     counts = analysis.get_culture_counts_dbformat(self.pop)
     log.info("counts: %s", counts)
예제 #10
0
def sample_treestructured_model(model, args, simconfig, timestep, finalized):
    log.debug("sampling tree structured model")
    trait_analyzer = stats.PopulationTraitFrequencyAnalyzer(model)
    trait_analyzer.calculate_trait_frequencies()
    trait_spectrum = trait_analyzer.get_trait_spectrum()

    culture_counts_dbformat = stats.get_culture_counts_dbformat(model)
    culture_count_map = stats.get_culture_count_map(model)
    (mean_traits,sd_traits) = stats.get_num_traits_per_individual_stats(model)
    #log.debug("culture size - mean: %s sd: %s", mean_traits, sd_traits)
    klemm = stats.klemm_normalized_L_extensible(model, simconfig)

    graphml_blobs = []
    trait_tree_stats = []
    traitset_map = get_traitset_map(model)
    for culture, traits in traitset_map.items():
        g = dict(cultureid=str(culture), content=model.trait_universe.get_graphml_for_culture(traits))
        if simconfig.save_graphs == True:
            graphml_blobs.append(g)
        trait_tree_stats.append( get_tree_symmetries_for_traitset(model, simconfig, culture, traits, culture_count_map))


    #log.debug("graphml: %s", pp.pformat(graphml_blobs))

    sample_time = timestep
    if finalized == 1:
        convergence_time = model.get_time_last_interaction()
    else:
        convergence_time = 0

    # Not recording the entropy yet, it doesn't mean anything given the way frequencies work.

    data.store_stats_axelrod_treestructured(simconfig.popsize,
                                      simconfig.sim_id,
                                      simconfig.maxtraits,
                                      simconfig.learning_rate,
                                      simconfig.loss_rate,
                                      simconfig.innov_rate,
                                      simconfig.num_trees,
                                      simconfig.branching_factor,
                                      simconfig.depth_factor,
                                      simconfig.INTERACTION_RULE_CLASS,
                                      simconfig.POPULATION_STRUCTURE_CLASS,
                                      simconfig.NETWORK_FACTORY_CLASS,
                                      simconfig.script,
                                      len(culture_counts_dbformat),
                                      trait_spectrum,
                                      convergence_time,
                                      sample_time,
                                      culture_counts_dbformat,
                                      klemm,
                                      mean_traits,
                                      sd_traits,
                                      graphml_blobs,
                                      trait_tree_stats,
                                      trait_analyzer.get_trait_richness(),
                                      None,
                                      finalized,
                                      simconfig.ws_rewiring)

    if args.diagram == True and finalized == 1:
        for culture, traits in traitset_map.items():
            model.trait_universe.draw_trait_network_for_culture(culture, traits)