diff --git a/experiments/SIAM/xp_1_balls/xp_a_accuracy_sol.py b/experiments/SIAM/xp_1_balls/xp_a_accuracy_sol.py index fabfaf34c674e298fc1f5c332c24e1016275b8db..9a6acb08e18ed2e7dcbfedf912cf6ef16152bdcf 100755 --- a/experiments/SIAM/xp_1_balls/xp_a_accuracy_sol.py +++ b/experiments/SIAM/xp_1_balls/xp_a_accuracy_sol.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- import time, argparse, sys -from pathlib import Path import numpy as np @@ -14,8 +13,7 @@ from src.utils import get_lambda_max, gamma_sequence_generator from src.dictionaries import generate_dic # Screening -from src.screening.singletest import GapSphereSingleTest -from src.screening.gap_ptest import GAP_Ptest +from src.screening.gap_test_all import GapTestAll # XP import from experiments.SIAM.slopepb import SlopePb @@ -26,7 +24,7 @@ parser=argparse.ArgumentParser() parser.add_argument('--erase', help='erase existing results', action="store_true") parser.add_argument('--continue', help='save figure', action="store_true", dest="cont") parser.add_argument('--id', help='setup id', type=str, - default="1a") + default=1) args=parser.parse_args() @@ -35,10 +33,7 @@ args=parser.parse_args() # ------------------------- setup = Setup(args.id) -folder = "results/" -Path(folder).mkdir(parents=True, exist_ok=True) - -out_file_name = folder + f"/xp_setup{args.id}.npz" +out_file_name = f"results/xp_setup{args.id}.npz" mat_seed = np.random.randint( 0, 2**32-1, @@ -131,19 +126,21 @@ for i_dic in range(setup.nb_dic): params.max_it = 1e7 params.gap_stopping = xpparams.stopping_gap params.time_stopping = np.inf - params.screening1 = GapSphereSingleTest() - params.screening2 = GAP_Ptest(vec_gammas) - params.screening_it_div = 2. + params.screening1 = GapTestAll(vec_gammas) + params.eval_gap = True + params.eval_gap_it = setup.eval_gap_it params.accelerated = True params.verbose = False out_slope = slope_gp(vecy, matA, ratio * lbd_max, vec_gammas, params) - gap = slopePb.eval_gap(out_slope["sol"], out_slope["dualsol"]) + dv = vecy - matA @ out_slope["sol"] + dv = slopePb.make_dual_scaling(dv) + gap = slopePb.eval_gap(out_slope["sol"], dv) if gap <= gap_old: mat_pvopt[i_dic, i_seq, i_ratio, rep, :] = out_slope["sol"] - mat_dvopt[i_dic, i_seq, i_ratio, rep, :] = out_slope["dualsol"] + mat_dvopt[i_dic, i_seq, i_ratio, rep, :] = dv # Save np.savez(out_file_name, diff --git a/experiments/SIAM/xp_1_balls/xp_b_screening.py b/experiments/SIAM/xp_1_balls/xp_b_screening.py index a36dd349e5cdc451d3305aced08849be93c7dd16..5d24334d5b0fac167b97ad78d6856f78cfe2f8c5 100644 --- a/experiments/SIAM/xp_1_balls/xp_b_screening.py +++ b/experiments/SIAM/xp_1_balls/xp_b_screening.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- import argparse -from pathlib import Path import numpy as np @@ -10,10 +9,9 @@ from src.dictionaries import generate_dic from src.utils import get_lambda_max, gamma_sequence_generator # Screening -from src.screening.gap_rqtest import GAP_RQtest -from src.screening.kappa_test import Kappa_test -from src.screening.singletest import GapSphereSingleTest -from src.screening.gap_ptest import GAP_Ptest +from src.screening.gap_test_p_1 import GapTestPequalOne +from src.screening.gap_test_p_q import GapTestPequalQ +from src.screening.gap_test_all import GapTestAll # XP import from experiments.SIAM.slopepb import SlopePb @@ -103,14 +101,12 @@ for i_dic in range(setup.nb_dic): # ---- 3c. Testing sphere ---- list_tests = [ - # GAP_RQtest(vec_gammas, 1 + np.arange(setup.n)), - Kappa_test(vec_gammas, np.arange(setup.n, dtype=float)), - GapSphereSingleTest(), - GAP_Ptest(vec_gammas), + GapTestPequalOne(vec_gammas, np.arange(setup.n, dtype=np.double)), + GapTestPequalQ(), + GapTestAll(vec_gammas), ] assert(len(list_tests) == NB_TEST) - for i_offset, offset in enumerate(xpparams.vec_offsets): for i_test, test in enumerate(list_tests): out = test.apply_test(np.abs(Atu), gap, ratio * lbd_max, vec_gammas, offset_radius=offset) diff --git a/experiments/SIAM/xp_1_balls/xp_c_viz_fig1.py b/experiments/SIAM/xp_1_balls/xp_c_viz_fig1.py index 0d520842827dd55df16bc904b3808ed43de23819..00c45b70f8001c45e0c3c6e61dd54a54f11c4ccf 100644 --- a/experiments/SIAM/xp_1_balls/xp_c_viz_fig1.py +++ b/experiments/SIAM/xp_1_balls/xp_c_viz_fig1.py @@ -1,21 +1,21 @@ # -*- coding: utf-8 -*- -from decimal import Decimal -import json, argparse -from pathlib import Path +import argparse import numpy as np # XP import from experiments.SIAM.slopepb import SlopePb from experiments.SIAM.setup import Setup -from experiments.SIAM.xp_1_balls import xpparams -from experiments.SIAM.xp_1_balls.process_data import process + +import xpparams +from process_data import process parser=argparse.ArgumentParser() parser.add_argument('--noshow', help='do not display figures', action="store_true") parser.add_argument('--save', help='save figure', action="store_true") -# parser.add_argument('--id', help='setup id', type=str, default=1) +parser.add_argument('--id', help='setup id', type=str, default="SIAM") +parser.add_argument('--i_seq', type=int, default=0) args=parser.parse_args() import matplotlib @@ -52,7 +52,7 @@ font_text = font_manager.FontProperties( font_ttt = font_manager.FontProperties( # fname='../fonts/ectt1000.ttf', - fname='../fonts/cmuntt.ttf', + fname='../fonts/computer-modern/cmuntt.ttf', weight='bold', style='normal', size=fs @@ -63,14 +63,15 @@ font_ttt = font_manager.FontProperties( # Load Results # ------------------------- -# OSCAR -setup_oscar = Setup("1a") + +setup_oscar = Setup(args.id) dic_process_oscar = process(setup_oscar) mat_pc_detected_oscar = dic_process_oscar["mat_pc_detected"] list_tests_oscar = dic_process_oscar["list_tests"] + # ------------------------- # Plot Results # ------------------------- @@ -81,63 +82,58 @@ i_lbd = 1 fs=22 fs_ylabels = 20 list_colors = ["tab:blue", "tab:orange", "tab:green"] -list_legends = ["$r_q=q\\;\\forall q$", "best performance", "$r_q=1\\;\\forall q$"] +list_legends = ["$p_q=q\\;\\forall q$", "all", "$p_q=1\\;\\forall q$"] # "best $r_q \\;\\forall q$ " print("printing xp_0_ball parameters with") -print(" - OSCAR sequence") print(f"- {setup_oscar.list_dic[i_dic]} dictionary") print(f"- lbd / lbd_max = {setup_oscar.list_ratio_lbd[i_lbd]}") -for i_seq in range(2): - f, ax = plt.subplots(1, 1, figsize=(.7*16, .6*9), sharex=True, sharey=True) +f, ax = plt.subplots(1, 1, figsize=(.7*16, .6*9), sharex=True, sharey=True) - # ax.set_title(f"OSCAR-{i_seq+1}", fontsize=fs+2) - ax.set_xlabel( - r"$R$", - fontsize=fs+2, - fontproperties=font_math, - ) - ax.set_ylabel( - "% of zero entries detected", - fontsize=fs+2, - fontproperties=font_text +# ax.set_title(f"OSCAR-{i_seq+1}", fontsize=fs+2) +ax.set_xlabel( + r"$R$", + fontsize=fs+2, + fontproperties=font_math, +) +ax.set_ylabel( + "% of zero entries detected", + fontsize=fs+2, + fontproperties=font_text +) + +for tick in ax.xaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(20) + +for tick in ax.yaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(20) + +for i_test in [2, 0, 1]: + ax.plot( + xpparams.vec_offsets, + 100 * mat_pc_detected_oscar[i_test, :, i_dic, args.i_seq, i_lbd], + label = list_legends[i_test], + linewidth=4., + alpha=.9, + color=list_colors[i_test] ) - for tick in ax.xaxis.get_major_ticks(): - tick.label.set_fontproperties(font_math) - tick.label.set_fontsize(20) - - for tick in ax.yaxis.get_major_ticks(): - tick.label.set_fontproperties(font_math) - tick.label.set_fontsize(20) - - for i_test in [2, 0, 1]: - ax.plot( - xpparams.vec_offsets, - 100 * mat_pc_detected_oscar[i_test, :, i_dic, i_seq, i_lbd], - label = list_legends[i_test], - linewidth=4., - alpha=.9, - color=list_colors[i_test] - ) - - if i_seq == 0: - ax.legend( - fontsize=fs-2, - prop=font_math - ) - - ax.set_xscale("log") - ax.set_xlim([1e-6, 1e0]) - ax.set_ylim([-2, 102]) - - if args.save: - Path("figs/").mkdir(parents=True, exist_ok=True) - - filename = f"figs/xp_illustration_screening{i_seq}.eps" - plt.savefig(filename, bbox_inches='tight') +ax.legend( + fontsize=fs-2, + prop=font_math +) + +ax.set_xscale("log") +ax.set_xlim([1e-6, 1e0]) +ax.set_ylim([-2, 102]) + +if args.save: + filename = f"figs/xp_illustration_screening{args.i_seq}.eps" + plt.savefig(filename, bbox_inches='tight') if not args.noshow: plt.show() \ No newline at end of file diff --git a/experiments/SIAM/xp_1_balls/xp_c_viz_fig2.py b/experiments/SIAM/xp_1_balls/xp_c_viz_fig2.py index d4385d37538d41267ee9162bd2592467e35b3344..1048707222072ac1ba54d7c53d376077006195e4 100644 --- a/experiments/SIAM/xp_1_balls/xp_c_viz_fig2.py +++ b/experiments/SIAM/xp_1_balls/xp_c_viz_fig2.py @@ -1,21 +1,20 @@ # -*- coding: utf-8 -*- -from decimal import Decimal -import json, argparse -from pathlib import Path +import argparse import numpy as np # XP import from experiments.SIAM.slopepb import SlopePb from experiments.SIAM.setup import Setup -from experiments.SIAM.xp_1_balls import xpparams -from experiments.SIAM.xp_1_balls.process_data import process + +import xpparams +from process_data import process parser=argparse.ArgumentParser() parser.add_argument('--noshow', help='do not display figures', action="store_true") parser.add_argument('--save', help='save figure', action="store_true") -# parser.add_argument('--id', help='setup id', type=str, default=1) +parser.add_argument('--id', help='setup id', type=str, default="SIAM") args=parser.parse_args() import matplotlib @@ -26,14 +25,15 @@ else: import matplotlib.pyplot as plt from matplotlib.legend_handler import HandlerBase import matplotlib.font_manager as font_manager - +# print(matplotlib.get_backend()) +# matplotlib.rc('pdf', fonttype=42) # ------------------------- # Load Results # ------------------------- # OSCAR -setup_oscar = Setup("1a") +setup_oscar = Setup(args.id) dic_process_oscar = process(setup_oscar) mat_pc_detected_oscar = dic_process_oscar["mat_pc_detected"] @@ -153,7 +153,7 @@ f.tight_layout() for i_seq in range(3): - ax[i_seq].set_xlabel("$R$", fontproperties=font_math, fontsize=fs_ylabels+6) + ax[i_seq].set_xlabel("$R_0$", fontproperties=font_math, fontsize=fs_ylabels+6) # ax[1, i_seq].xaxis.set_major_locator(plt.MaxNLocator(6)) @@ -165,7 +165,11 @@ for i_seq in range(3): tick.label.set_fontproperties(font_math) tick.label.set_fontsize(22) + +# plt.show() +# exit() + if args.save: filename = f"figs/xp0_{setup_oscar.list_dic[i_dic]}.eps" # plt.rcParams['pdf.fonttype'] = 42 - plt.savefig(filename, bbox_inches='tight') \ No newline at end of file + plt.savefig(filename, bbox_inches='tight')