Пример #1
0
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
Пример #3
0
    #     # 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)
Пример #5
0
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)
Пример #7
0
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