def main(sim_names, load_isings_list=True): settings = load_settings(sim_names[0]) if load_isings_list: isings_lists = [load_isings(sim_name) for sim_name in sim_names] plot_anything_auto(sim_names, ['Beta', 'avg_velocity'], settings, isings_lists=isings_lists, autoLoad=False)
def main(sim_name, load_isings_list=True, final=False): ''' final defines whether this is the final/ last generation of simulation is plotted ''' settings = load_settings(sim_name) colors = ['red', 'blue', 'green'] if load_isings_list: isings_list = load_isings(sim_name) isings_list_dict = seperate_isolated_populations(isings_list) isings_list_dict_fittest = fittest_in_isolated_populations( isings_list_dict) # isings_list_fittest = [sorted(isings, key=operator.attrgetter('avg_energy'), reverse=True)[:20] for isings in isings_list] # isings_list = load_isings_from_list(sim_name, [0]) plot_vars = ['avg_energy', 'Beta', 'avg_velocity', 'food'] plot_var_tuples = [('generation', 'avg_energy'), ('generation', 'avg_velocity'), ('generation', 'food'), ('generation', 'Beta'), ('Beta', 'avg_energy'), ('Beta', 'avg_velocity'), ('avg_energy', 'avg_velocity'), ('avg_energy', 'food')] try: if settings['speciation']: append_species_stuff = [('species', 'shared_fitness'), ('species', 'avg_energy'), ('generation', 'species')] for tup in append_species_stuff: plot_var_tuples.append(tup) except KeyError: print('Older version, when speciation was not implemented') # Try plotting norm_avg_energy in case dataset already has I.time_steps try: for isings in isings_list: for I in isings: I.norm_avg_energy = I.avg_energy / I.time_steps plot_vars.append('norm_avg_energy') plot_var_tuples.append(('generation', 'norm_avg_energy')) if settings['random_food_seasons']: for isings in isings_list: for I in isings: I.norm_food_and_ts_avg_energy = I.norm_avg_energy / I.food_in_env plot_vars.append('norm_food_and_ts_avg_energy') plot_var_tuples.append( ('generation', 'norm_food_and_ts_avg_energy')) except Exception: print( 'Could not calculate norm_avg_energy (Do isings lack attribute I.time_steps?)' ) try: for plot_var in plot_vars: plot_avg_attr_generational_isolated.main(sim_name, isings_list_dict_fittest, plot_var, name_extension='fittest', colors=colors) except Exception: print('Could not create generational plots') try: plot_scatter_auto(sim_name, settings, plot_var_tuples, isings_list, colors, autoLoad=False) except Exception: print('Could not create scatter plot') del isings_list del settings
# # food = np.divide(food, 6) # x_pars_list[ii, :] = x_pars # # if not path.exists(folder2): # makedirs(folder2) #np.savez(fname2, FOOD=x_pars_list) if __name__ == '__main__': #loadfile = sys.argv[1] #plot_var = sys.argv[2] #plot_var = 'v' loadfile = 'sim-20200103-170556-ser_-s_-b_1_-ie_2_-a_0_500_1000_1500_1999' plot_var_x = 'avg_energy' plot_var_y = 'avg_velocity' #'food' isings_list = load_isings(loadfile) settings = load_settings(loadfile) #TODO: add something that detetcts .npz file and skips loading isings in that case main(loadfile, settings, isings_list, plot_var_x, plot_var_y, autoLoad=False, x_lim=(-1, 20), y_lim=(-0.1, 0.8), alpha=0.05) #TODO: Evt. PCA oder decision trees um herauszufinden welche eigenschaften wichtig sind fuer hohe avg energy?
import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl mpl.use('Agg') #For server use from automatic_plot_helper import detect_all_isings from automatic_plot_helper import load_settings from automatic_plot_helper import load_isings def how_many_below_min_velocity(settings, isings): amount = 0 for I in isings: if I.v def plot(sim_name, settings, isings_list): folder = 'save/' + sim_name folder2 = folder + '/figs/' + 'individuals_below_min_velocity' + '/' if __name__ == '__main__': sim_name = isings_list = load_isings(sim_name) settings = load_settings(sim_name) plot(sim_name, settings, isings_list)
def main(sim_name, load_isings_list=True, final=False): ''' final defines whether this is the final/ last generation of simulation is plotted ''' for i_type in ('pred', 'prey'): settings = load_settings(sim_name) if load_isings_list: isings_list = load_isings(sim_name, i_type) #try: if i_type == 'pred': plot_var_list = ['Beta', 'avg_velocity', 'food'] plot_var_tuples = [('generation', 'avg_energy'), ('generation', 'avg_velocity'), ('generation', 'food')] elif i_type == 'prey': plot_var_list = ['Beta', 'avg_velocity', 'times_killed'] plot_var_tuples = [('generation', 'avg_energy'), ('generation', 'avg_velocity'), ('generation', 'times_killed')] try: plot_anything_auto(sim_name, plot_var_list, settings, i_type, isings_list=isings_list, autoLoad=False) except Exception: print('Could not create generational plots') #plot_var_tuples = [('Beta', 'avg_velocity'), ('avg_energy', 'avg_velocity'), ('avg_energy', 'food')] try: plot_scatter_auto(sim_name, settings, plot_var_tuples, isings_list, i_type, autoLoad=False) except Exception: print('Could not create scatter plot') try: if i_type == 'pred': plot_anythingXY_scatter_food_velocity_optimized.main( sim_name, settings, isings_list, 'avg_velocity', 'food', i_type, s=0.8, alpha=0.05, autoLoad=False) elif i_type == 'prey': plot_anythingXY_scatter_food_velocity_optimized.main( sim_name, settings, isings_list, 'avg_velocity', 'avg_energy', i_type, s=0.8, alpha=0.05, autoLoad=False) except Exception: print('Could not create food velocity scatter plot') if final: pass # try: # if settings['cores'] != 0: # compute_and_plot_heat_capacity_automatic.main(sim_name, settings, i_type) # except Exception: # print('Could not compute and plot heat capacity') # Trying to fix memory leak: del isings_list del settings
startstr = 'Loading simulation:' + filename print(startstr) try: isings = pickle.load(open(filename, 'rb')) except Exception: print("Error while loading %s. Skipped file" % filename) #Leads to the previous datapoint being drawn twice!! food = [] for i, I in enumerate(isings): exec('food.append(I.%s)' % plot_var) # food = np.divide(food, 6) FOOD[ii, :] = food if not path.exists(folder2): makedirs(folder2) np.savez(fname2, FOOD=FOOD) return FOOD if __name__ == '__main__': loadfile = sys.argv[1] plot_var = sys.argv[2] #plot_var = 'v' isings_list = [load_isings(loadfile)] main(loadfile, plot_var, isings_lists=isings_list)
def main(sim_name, only_top_isings=None, load_isings_list=True, final=False, subfolder=None): ''' final defines whether this is the final/ last generation of simulation is plotted ''' # if subfolder != None: # sim_name = sim_name + subfolder settings = load_settings(sim_name) if load_isings_list: if only_top_isings is not None: isings_list = load_top_isings(sim_name, only_top_isings) settings['pop_size'] = only_top_isings save_txt_path = 'save/{}/figs/'.format(sim_name) if not os.path.exists(save_txt_path): os.makedirs(save_txt_path) f = open(save_txt_path + "Only_first_{}_fittest_individuals_have_been_plotted.txt".format(only_top_isings), "w+") f.close() else: isings_list = load_isings(sim_name, wait_for_memory=True) isings_list_fittest = [sorted(isings, key=operator.attrgetter('avg_energy'), reverse=True)[:20] for isings in isings_list] #isings_list = load_isings_from_list(sim_name, [0]) plot_vars = ['Beta', 'avg_velocity', 'food'] plot_var_tuples = [('generation', 'avg_energy'), ('generation', 'avg_velocity'), ('generation', 'food'), ('generation', 'Beta'), ('Beta', 'avg_energy'), ('Beta', 'avg_velocity'), ('avg_energy', 'avg_velocity'), ('avg_energy', 'food')] try: if settings['speciation']: append_species_stuff = [('species', 'shared_fitness'), ('species', 'avg_energy'), ('generation', 'species')] for tup in append_species_stuff: plot_var_tuples.append(tup) except KeyError: print('Older version, when speciation was not implemented') # Try plotting norm_avg_energy in case dataset already has I.time_steps try: for isings in isings_list: for I in isings: I.norm_avg_energy = I.avg_energy / I.time_steps plot_vars.append('norm_avg_energy') plot_var_tuples.append(('generation', 'norm_avg_energy')) if settings['random_food_seasons']: for isings in isings_list: for I in isings: I.norm_food_and_ts_avg_energy = I.norm_avg_energy / I.food_in_env plot_vars.append('norm_food_and_ts_avg_energy') plot_var_tuples.append(('generation', 'norm_food_and_ts_avg_energy')) except Exception: print('Could not calculate norm_avg_energy (Do isings lack attribute I.time_steps?)') # try: plot_anything_auto(sim_name, plot_vars, settings, isings_list=isings_list_fittest, autoLoad=False) # except Exception: # print('Could not create generational plots') try: plot_scatter_auto(sim_name, settings, plot_var_tuples, isings_list, autoLoad=False) except Exception: print('Could not create scatter plot') try: plot_anythingXY_scatter_food_velocity_optimized.main(sim_name, settings, isings_list, 'avg_velocity', 'food', s=0.8, alpha=0.05, autoLoad=False) except Exception: print('Could not create food velocity scatter plot') if final: pass # try: # if settings['cores'] != 0: # compute_and_plot_heat_capacity_automatic.main(sim_name, settings) # # except Exception: # print('Could not compute and plot heat capacity') # Trying to fix memory leak: del isings_list del settings
markersize=5, alpha=0.75)) plt.scatter(x_axis, y_axis, c=colors[i], alpha=0.15) if attr == 'norm_food_and_ts_avg_energy': plt.ylim(0, 0.0002) # plt.legend(loc="lower right", bbox_to_anchor=(0.95, 0.05), handles=legend_elements) plt.legend(handles=legend_elements) plt.xlabel('Generation') plt.ylabel(attr) plt.savefig(savefilename, dpi=300, bbox_inches='tight') if __name__ == '__main__': sim_name = 'sim-20201005-115242-g_4000_-t_2000_-rand_seas_-rec_c_1000_-c_props_100_50_-2_2_100_40_-iso_-ref_1000_-c_4_-a_1000_1001_10002_2000_3998_3999_-no_trace_-n_different_betas_rand_seas2_TEST_COPY_2_DYNAMIC_RANGE' #'sim-20200714-190003-g_100_-t_5_-iso_-n_test' isings_list = load_isings(sim_name, wait_for_memory=False) #isings_list = load_isings_from_list(sim_name, np.arange(100)) isings_list_dict = seperate_isolated_populations(isings_list) isings_list_dict = fittest_in_isolated_populations(isings_list_dict) settings = load_settings(sim_name) if True: for isings in isings_list: for I in isings: I.norm_avg_energy = I.avg_energy / I.time_steps if settings['random_food_seasons']: for isings in isings_list: for I in isings: I.norm_food_and_ts_avg_energy = I.norm_avg_energy / I.food_in_env