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()
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)
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()
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()
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)
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()
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)
def test_culture_counts(self): counts = analysis.get_culture_counts_dbformat(self.pop) log.info("counts: %s", counts)
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)