Skip to content
Snippets Groups Projects
Commit fe3db979 authored by Elvira Clement's avatar Elvira Clement
Browse files

Last corrections + further tests

parent 041b976b
No related branches found
No related tags found
No related merge requests found
...@@ -12,8 +12,9 @@ from get_algs_params import get_alg_params, get_nb_algs ...@@ -12,8 +12,9 @@ from get_algs_params import get_alg_params, get_nb_algs
parser=argparse.ArgumentParser() parser=argparse.ArgumentParser()
parser.add_argument('--id', help='setup id', type=str, default="SIAM") parser.add_argument('--id', help='setup id', type=str, default="SIAM")
parser.add_argument('--erase', help='restart xp', action="store_true") parser.add_argument('--erase', help='restart xp', action="store_true")
parser.add_argument('--precision', help='stop when gap reaches 1e-precision', default=8, type=float) parser.add_argument('--precision', help='stop when gap reaches 1e-precision', default=8, type=int)
parser.add_argument('--exact', action="store_true") parser.add_argument('--exact', action="store_true")
parser.add_argument('--noverbose', help='disable printing if true', action="store_true")
args=parser.parse_args() args=parser.parse_args()
setup = Setup(args.id) setup = Setup(args.id)
...@@ -27,8 +28,9 @@ Path(folder).mkdir(parents=True, exist_ok=True) ...@@ -27,8 +28,9 @@ Path(folder).mkdir(parents=True, exist_ok=True)
time_file_name = f"{folder}/setup{args.id}_a_state.npz" time_file_name = f"{folder}/setup{args.id}_a_state.npz"
if not args.noverbose:
print(f"Starting \"get seed\" with id {args.id}, precision 1e-{args.precision}")
print(f"Starting \"get seed\" with id {args.id}, precision 1e-{args.precision}")
try: try:
if args.erase: if args.erase:
raise FileNotFoundError raise FileNotFoundError
......
...@@ -19,6 +19,7 @@ parser.add_argument('--id', help='setup id', type=str, default="SIAM") ...@@ -19,6 +19,7 @@ parser.add_argument('--id', help='setup id', type=str, default="SIAM")
parser.add_argument('--erase', help='restart xp', action="store_true") parser.add_argument('--erase', help='restart xp', action="store_true")
parser.add_argument('--precision', help='stop when gap reaches 1e-precision', default=8) parser.add_argument('--precision', help='stop when gap reaches 1e-precision', default=8)
parser.add_argument('--exact', action="store_true") parser.add_argument('--exact', action="store_true")
parser.add_argument('--noverbose', help='disable printing if true', action="store_true")
args=parser.parse_args() args=parser.parse_args()
...@@ -69,12 +70,14 @@ except FileNotFoundError: ...@@ -69,12 +70,14 @@ except FileNotFoundError:
nb_xp = setup.nb_dic * setup.nb_sequence * setup.nb_ratio_lbd * setup.n_rep nb_xp = setup.nb_dic * setup.nb_sequence * setup.nb_ratio_lbd * setup.n_rep
t = 0 t = 0
print(f"Starting \"get budget\" with id {args.id}, precision 1e-{args.precision}") if not args.noverbose:
print(f"Starting \"get budget\" with id {args.id}, precision 1e-{args.precision}")
for i_dic in range(setup.nb_dic): for i_dic in range(setup.nb_dic):
for i_seq in range(setup.nb_sequence): for i_seq in range(setup.nb_sequence):
for i_ratio, ratio in enumerate(setup.list_ratio_lbd): for i_ratio, ratio in enumerate(setup.list_ratio_lbd):
for rep in range(setup.n_rep): for rep in range(setup.n_rep):
print(f"xp budget {t+1} / {nb_xp}") if not args.noverbose:
print(f"xp budget {t+1} / {nb_xp}")
if not np.isnan(mat_times[i_dic, i_seq, i_ratio, rep]): if not np.isnan(mat_times[i_dic, i_seq, i_ratio, rep]):
t += 1 t += 1
......
...@@ -20,6 +20,7 @@ parser.add_argument('--id', help='setup id', type=str, default="SIAM") ...@@ -20,6 +20,7 @@ parser.add_argument('--id', help='setup id', type=str, default="SIAM")
parser.add_argument('--erase', help='restart xp', action="store_true") parser.add_argument('--erase', help='restart xp', action="store_true")
parser.add_argument('--precision', help='stop when gap reaches 1e-precision', default=8) parser.add_argument('--precision', help='stop when gap reaches 1e-precision', default=8)
parser.add_argument('--exact', action="store_true") parser.add_argument('--exact', action="store_true")
parser.add_argument('--noverbose', help='disable printing if true', action="store_true")
args=parser.parse_args() args=parser.parse_args()
...@@ -70,7 +71,8 @@ except FileNotFoundError: ...@@ -70,7 +71,8 @@ except FileNotFoundError:
nb_xp = setup.nb_dic * setup.nb_sequence * setup.nb_ratio_lbd * setup.n_rep nb_xp = setup.nb_dic * setup.nb_sequence * setup.nb_ratio_lbd * setup.n_rep
t = 0 t = 0
print(f"Starting \"xp time\" with id {args.id}, precision 1e-{args.precision}") if not args.noverbose:
print(f"Starting \"xp time\" with id {args.id}, precision 1e-{args.precision}")
for i_dic in range(setup.nb_dic): for i_dic in range(setup.nb_dic):
for i_seq in range(setup.nb_sequence): for i_seq in range(setup.nb_sequence):
for i_ratio, ratio in enumerate(setup.list_ratio_lbd): for i_ratio, ratio in enumerate(setup.list_ratio_lbd):
...@@ -81,7 +83,8 @@ for i_dic in range(setup.nb_dic): ...@@ -81,7 +83,8 @@ for i_dic in range(setup.nb_dic):
continue continue
for rep in range(setup.n_rep): for rep in range(setup.n_rep):
print(f"xp time {t+1} / {nb_xp}") if not args.noverbose:
print(f"xp time {t+1} / {nb_xp}")
# print(i_dic, i_seq, i_ratio, rep) # print(i_dic, i_seq, i_ratio, rep)
# i_dic, i_seq, i_ratio, rep = 1, 0, 2, 17 # i_dic, i_seq, i_ratio, rep = 1, 0, 2, 17
......
# -*- coding: utf-8 -*-
import argparse
from pathlib import Path
import numpy as np
parser=argparse.ArgumentParser()
parser.add_argument('--id', help='setup id', type=str, default="SIAM")
parser.add_argument('--precision', help='stop when gap reaches 1e-precision', default=8)
parser.add_argument('--exact', action="store_true")
# parser.add_argument('--it', help='show it results', action="store_true")
parser.add_argument('--ilbd', help='save figure', type=int, default=0)
parser.add_argument('--noshow', help='show plots', action="store_true")
parser.add_argument('--save', help='save figure', action="store_true")
parser.add_argument('--noverbose', help='disable printing if true', action="store_true")
args=parser.parse_args()
import matplotlib
if args.noshow:
matplotlib.use('PS')
else:
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
matplotlib.rcParams['text.usetex'] = True
from process_data import process
from get_algs_params import get_alg_params, get_nb_algs
from slopescreening.utils import gamma_sequence_generator
from experiments.SIAM.setup import Setup
fs = 20
# -------------------------
# Load results
# -------------------------
folder = f'results/1e-{args.precision}'
folder += 'exact/' if args.exact else 'gersh/'
setup = Setup(args.id)
_, list_names = get_alg_params(setup, np.zeros(5), args.exact)
dic_process = process(folder, False, setup)
vec_tau = dic_process["vec_tau"]
results_rho = dic_process["results_rho"]
# sparsity_level = dic_process["sparsity_level"]
# results_average_it = dic_process["results_average_it"]
# results_std_it = dic_process["results_std_it"]
# -------------------------
# Plot results
# -------------------------
f, ax = plt.subplots(setup.nb_sequence, setup.nb_dic, figsize=(16, 13.),
sharex=True, sharey=True,
gridspec_kw = {'wspace':.05, 'hspace':.05}
)
# f.suptitle(f"{setup.list_dic[i_dic]} dictionary", fontsize=14)
list_algnames = ["PG-no", "PG-p=q", "PG-all", 'PG-Bao']
list_dicname = ["Gaussian", "Uniform", "Toeplitz"]
# args.ilbd = 1
if not args.noverbose:
print("ploting time fig for")
print(f" - {list_dicname} dictionaries")
print(f" - lbd / lbd_max = {setup.list_ratio_lbd[args.ilbd]}")
for i_dic in range(setup.nb_dic):
for i_seq in range(setup.nb_sequence):
list_colors = ["tab:blue", "tab:orange", "tab:green", "tab:purple"]
for i_alg in [0, 1, 3, 2]:#range(len(list_names)):
ax[i_seq, i_dic].plot(
vec_tau,
100. * results_rho[i_alg, i_dic, i_seq, args.ilbd],
linewidth=3.,
label=list_algnames[i_alg],
color=list_colors[i_alg]
)
ax[i_seq, i_dic].set_xscale('log')
ax[i_seq, i_dic].set_xlim([5e-15, 5e-1])
ax[i_seq, i_dic].set_ylim([-2, 101])
ax[i_seq, i_dic].grid()
if i_seq == 0:
ax[i_seq, i_dic].set_title(
f"{list_dicname[i_dic]}",
fontsize=fs+2,
)
if i_dic == 2 and i_seq == 2:
ax[i_seq, i_dic].legend()
if i_seq == setup.nb_sequence-1:
ax[i_seq, i_dic].set_xlabel("$\delta$ (Dual gap)",
# fontsize=14,
)
if i_dic == 0:
ax[i_seq, i_dic].set_ylabel(
r"$\rho(\delta)$",
fontsize=fs+4,
)
for tick in ax[i_seq, i_dic].yaxis.get_major_ticks():
tick.label.set_fontsize(16)
if i_seq == 2:
for tick in ax[i_seq, i_dic].xaxis.get_major_ticks():
tick.label.set_fontsize(16)
if args.save:
Path("figs").mkdir(parents=True, exist_ok=True)
fig_name = f"figs/setup{args.id}_precision{args.precision}_exact{args.exact}_time"
plt.savefig(fig_name + ".eps", bbox_inches='tight')
if not args.noshow:
plt.show()
...@@ -13,19 +13,25 @@ parser.add_argument('--exact', action="store_true") ...@@ -13,19 +13,25 @@ parser.add_argument('--exact', action="store_true")
parser.add_argument('--ilbd', help='save figure', type=int, default=1) parser.add_argument('--ilbd', help='save figure', type=int, default=1)
parser.add_argument('--noshow', help='show plots', action="store_true") parser.add_argument('--noshow', help='show plots', action="store_true")
parser.add_argument('--save', help='save figure', action="store_true") parser.add_argument('--save', help='save figure', action="store_true")
parser.add_argument('--noverbose', help='disable printing if true', action="store_true")
args=parser.parse_args() args=parser.parse_args()
if args.id != "SIAM":
raise Exception("this file has been created to reproduce the SIAM figures. Use the SIAM id instead")
import matplotlib import matplotlib
if args.noshow: if args.noshow:
matplotlib.use('PS') matplotlib.use('PS')
else: else:
matplotlib.use("TkAgg") matplotlib.use("TkAgg")
matplotlib.rcParams['text.usetex'] = True
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager import matplotlib.font_manager as font_manager
from process_data import process from process_data import process
from get_algs_params import get_alg_params, get_nb_algs from get_algs_params import get_alg_params, get_nb_algs
from src.utils import gamma_sequence_generator from slopescreening.utils import gamma_sequence_generator
from experiments.SIAM.setup import Setup from experiments.SIAM.setup import Setup
......
...@@ -2,9 +2,19 @@ echo "Running unit tests..." ...@@ -2,9 +2,19 @@ echo "Running unit tests..."
python -m unittest python -m unittest
echo "" echo ""
echo "Running SIAM xp test 1" echo "Running SIAM xp 1 test"
cd experiments/SIAM/xp_1_balls cd experiments/SIAM/xp_1_balls
python xp_a_accuracy_sol.py --id Test --noverbose python xp_a_accuracy_sol.py --id Test --noverbose
python xp_b_screening.py --id Test --noverbose python xp_b_screening.py --id Test --noverbose
python xp_c_viz_fig1.py --id Test --noverbose python xp_c_viz.py --id Test --noverbose --noshow
python xp_c_viz_fig2.py --id Test --noverbose cd ..
\ No newline at end of file
echo ""
echo "Running SIAM xp 2 test"
cd xp_2_bench_time
python xp_a_get_state.py --id Test --precision 4 --noverbose
python xp_b_get_budget.py --id Test --precision 4 --noverbose
python xp_c_results_time.py --id Test --precision 4 --noverbose
python xp_d_viz.py --id Test --precision 4 --noverbose --noshow
cd ../../../
echo "End of testing"
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment