Beispiel #1
0
 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!')
Beispiel #2
0
 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!')
Beispiel #3
0
 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!')
Beispiel #4
0
    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!')
Beispiel #5
0
 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!')