dict(model_solver=al_asgl_model, weight_calculator=al_asgl_wc_pls_1),
    dict(model_solver=asgl_model, weight_calculator=asgl_wc_pls_1),
    dict(model_solver=al_asgl_model, weight_calculator=al_asgl_wc_pls_d),
    dict(model_solver=asgl_model, weight_calculator=asgl_wc_pls_d)
]

results = gf.automatic_simulator(data_param=data_param,
                                 model_selection_param=model_selection_param,
                                 model_param=model_param,
                                 data_generator=data_generator,
                                 n_repetitions=n_repetitions,
                                 folder=folder)

########################################################################################################################

results = af.simulation_results_to_tables(results=results,
                                          from_file=False,
                                          table_format='row_models')

sorting = [
    'lasso', 'sgl', 'al_asgl_pca_d', 'al_asgl_pca_1', 'al_asgl_pls_d',
    'al_asgl_pls_1', 'asgl_pca_d', 'asgl_pca_1', 'asgl_pls_d', 'asgl_pls_1'
]
gc.boxplot_creator_by_metric(
    results=results,
    interesting_metrics=['final_error', 'non_zero_pred_beta'],
    figsize=(25, 10),
    sorting=sorting)

########################################################################################################################
    dict(model_solver=asgl_model, weight_calculator=asgl_wc_pls_d)
]
results7 = gf.automatic_analyzer(dataset=dataset,
                                 model_selection_param=model_selection_param,
                                 model_param=model_param,
                                 n_repetitions=n_repetitions,
                                 folder=folder)

########################################################################################################################
"""
Processing the results obtained
"""

gc.boxplot_creator_by_metric(
    results=results,
    interesting_metrics=['final_error', 'non_zero_pred_beta'],
    figsize=(25, 10),
    sorting=['lasso', 'sgl', 'asgl_pca_d', 'asgl_pls_d'])
significance = gc.variables_probability_heatmap(
    results=results, sorting=['asgl_pca_d', 'asgl_pls_d', 'sgl', 'lasso'])

model_names = ['lasso', 'sgl', 'asgl_pca_d', 'asgl_pls_d']
probability_of_significance = significance['probability_of_significance']

# Number of genes above a threshold
threshold = 0.5
for i in range(len(model_names)):
    tmp_prob = probability_of_significance[i, :]
    num_genes = len(np.where(tmp_prob >= threshold)[0])
    print("Model: {}. Threshold: {}. Number of genes: {}".format(
        model_names[i], threshold, num_genes))