def analyze_individual_status_by_generation(self, csv_output, status, status_analysis, aggregate_functions = None, generations = 'all'): print('\n[INDIVIDUAL ' + status.upper() + ' STATUS ANALYSIS]') print('Opening outputfile: ' + csv_output + '...') outputfile = open(csv_output, 'w') print('Getting population size...') pop_size = database_calls.db_reconstruct_simulation_parameters(self.cur, self.starting_time)['population_size'] print('Writing outputfile header...') header = ['Generation'] + [str(i) for i in range(1, pop_size + 1)] if aggregate_functions != None: header = header + [key for key in list(aggregate_functions.keys())] outputfile.write(','.join(header) + '\n') print('Starting main analysis...') if generations == 'all': generation_list = database_calls.db_list_generations(self.cur, self.starting_time) else: generation_list = [str(gen) for gen in generations] for generation in generation_list: print('Analyzing generation ' + str(generation) + '...') print() status_list = [status_analysis(stat) for stat in self.get_individual_status_list_by_generation(status, generation)] status_row = [str(generation)] + [str(stat_result) for stat_result in status_list] if aggregate_functions != None: for key in list(aggregate_functions.keys()): status_row.append(str(aggregate_functions[key](status_list))) outputfile.write(','.join(status_row) + '\n') print('\nIndividual [' + status + '] analysis complete!')
def analyze_status_group_genome_by_generation(self, csv_output, genome_analysis, status, stats, aggregate_functions = None, generations = 'all'): print('\n[' + status.upper() + ' STATUS GROUP GENOME ANALYSIS]') print('Opening outputfile: ' + csv_output + '...') outputfile = open(csv_output, 'w') print('Constructing generations list...') if generations == 'all': generation_list = database_calls.db_list_generations(self.cur, self.starting_time) else: generation_list = generations print('Writing outputfile header...') header = [str(stat).replace(", ","-") for stat in stats] if aggregate_functions == None: header = ['Generation'] + header else: header = ['Generation'] + header + [key for key in list(aggregate_functions.keys())] outputfile.write(','.join(header) + '\n') print('Starting main analysis...') for generation in generation_list: print('Analyzing generation ' + str(generation) + '...') print() analyzed_genome_list = [genome_analysis(self.get_status_group_genome_by_generation(status, target_status, generation)) for target_status in stats] status_row = [str(generation)] + [str(status_result) for status_result in analyzed_genome_list] if aggregate_functions != None: for key in list(aggregate_functions.keys()): status_row.append(str(aggregate_functions[key](analyzed_genome_list))) outputfile.write(','.join(status_row) + '\n') print('\nGrouped [' + status + '] genome analysis complete!')
def analyze_status_group_count_by_generation(self, csv_output, status, stats, aggregate_functions=None, generations='all'): print('\n[' + status.upper() + ' STATUS GROUP COUNT ANALYSIS]') print('Constructing generations list...') if generations == 'all': generation_list = database_calls.db_list_generations( self.cur, self.starting_time) else: generation_list = generations print('Preparing outputfile: ' + csv_output + '...') outputfile = open(csv_output, 'w') print('Writing outputfile header...') header = [str(stat).replace(", ", "-") for stat in stats] if aggregate_functions == None: header = ['Generation'] + header else: header = ['Generation'] + header + \ [key for key in list(aggregate_functions.keys())] outputfile.write(','.join(header) + '\n') outputfile.close() print('Starting main analysis...') for generation in generation_list: print('Analyzing generation ' + str(generation) + '...') status_list = \ self.get_individual_status_list_by_generation(status, generation) status_row = [str(generation)] + \ [str(status_list.count(target_stat)) for target_stat in stats] if aggregate_functions != None: for key in list(aggregate_functions.keys()): status_row.append( str(aggregate_functions[key]([ status_list.count(target_stat) for target_stat in stats ]))) outputfile = open(csv_output, 'a') outputfile.write(','.join(status_row) + '\n') outputfile.close() print('\nGrouped [' + status + '] count analysis complete!')
def analyze_individual_status_by_generation(self, csv_output, status, status_analysis, aggregate_functions=None, generations='all'): print('\n[INDIVIDUAL ' + status.upper() + ' STATUS ANALYSIS]') print('Getting population size...') pop_size = \ database_calls.db_reconstruct_simulation_parameters(self.cur, self.starting_time)['population_size'] print('Constructing generations list...') if generations == 'all': generation_list = database_calls.db_list_generations( self.cur, self.starting_time) else: generation_list = [str(gen) for gen in generations] print('Preparing outputfile: ' + csv_output + '...') outputfile = open(csv_output, 'w') print('Writing outputfile header...') header = ['Generation'] + [str(i) for i in range(1, pop_size + 1)] if aggregate_functions != None: header = header + \ [key for key in list(aggregate_functions.keys())] outputfile.write(','.join(header) + '\n') outputfile.close() print('Starting main analysis...') for generation in generation_list: print('Analyzing generation ' + str(generation) + '...') status_list = \ [status_analysis(stat) for stat in self.get_individual_status_list_by_generation(status, generation)] status_row = [str(generation)] + \ [str(stat_result) for stat_result in status_list] if aggregate_functions != None: for key in list(aggregate_functions.keys()): status_row.append( str(aggregate_functions[key](status_list))) outputfile = open(csv_output, 'a') outputfile.write(','.join(status_row) + '\n') outputfile.close() print('\nIndividual [' + status + '] analysis complete!')
def analyze_status_group_count_by_generation(self, csv_output, status, stats, aggregate_functions = None, generations = 'all'): print('\n[' + status.upper() + ' STATUS GROUP COUNT ANALYSIS]') print('Constructing generations list...') if generations == 'all': generation_list = database_calls.db_list_generations(self.cur, self.starting_time) else: generation_list = generations print('Preparing outputfile: ' + csv_output + '...') outputfile = open(csv_output, 'w') print('Writing outputfile header...') header = [str(stat).replace(", ","-") for stat in stats] if aggregate_functions == None: header = ['Generation'] + header else: header = ['Generation'] + header + \ [key for key in list(aggregate_functions.keys())] outputfile.write(','.join(header) + '\n') outputfile.close() print('Starting main analysis...') for generation in generation_list: print('Analyzing generation ' + str(generation) + '...') status_list = \ self.get_individual_status_list_by_generation(status, generation) status_row = [str(generation)] + \ [str(status_list.count(target_stat)) for target_stat in stats] if aggregate_functions != None: for key in list(aggregate_functions.keys()): status_row.append(str(aggregate_functions[key]([status_list.count(target_stat) for target_stat in stats]))) outputfile = open(csv_output, 'a') outputfile.write(','.join(status_row) + '\n') outputfile.close() print('\nGrouped [' + status + '] count analysis complete!')