Raw File
figures.py
# -*- coding: utf-8 -*-
"""
Created on Tue Feb 28 11:51:44 2017

@author: cassiofraga

Copyright (C) 2019 Cassio Fraga Dantas

SPDX-License-Identifier: AGPL-3.0-or-later
"""
import numpy as np
import matplotlib
import os
from matplotlib import pyplot as plt 

import experiments
from experiments.expe_approx import flop_calc_it
from experiments.misc import make_file_name, type2name, make_pen_param_list

#from .misc import mergeopt, make_file_name, type2name
#from .misc import testopt, default_expe, make_pen_param_list

# Plot properties
matplotlib.rc('axes', labelsize = 24)
matplotlib.rc('xtick', labelsize = 20)
matplotlib.rc('ytick', labelsize = 20)
matplotlib.rc('axes', titlesize = 24)
matplotlib.rc('lines', linewidth = 3)

matplotlib.rc('mathtext', fontset='cm')

############## FIGURE -1 ###############
# Screen and Flops. noMargin: ON, NO SWITCHING
# N=100, K=500
# lambda = 0.75*lambda_max

# NEW FORMATTING! WITH SCIENTIFIC NOTATION AND TOTAL COMPLEXITY AXIS.

# Load data Figure 1
filename = './ResSynthData/figures_GRETSI/-1-ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.75.npz'
Data = np.load(filename)
# Load data Figure 2
#filename = './ResSynthData/figures_GRETSI/2-ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.75.npz'
#Data = np.load(filename)

#plt.figure()
f , (axScreen) = \
    plt.subplots(1,1,sharex=True,figsize=1.27*plt.figaspect(0.55))

opt = Data['opt'][()]
K = opt['K']
N = opt['N']
length = Data['nbIter']+1
length_approx = Data['nbIter_approx']+1
length_approx2 = Data['nbIter_approx2']+1
length_approx3 = Data['nbIter_approx3']+1
markers_on1 = [Data['switch_it'] -1] #, length_approx-1]
markers_on2 = [Data['switch_it2']-1] #, length_approx2-1]
markers_on3 = [Data['switch_it3']-1] #, length_approx3-1]
markersize = 12

flops_d = flop_calc_it("dynamic",K,N,Data['scrRate'], Data['zeros'],[])
flops_d1 = flop_calc_it("dynamic",K,N,Data['scrRate_approx'], Data['zeros_approx'],[],Data['RC'],Data['switch_it'])
flops_d2 = flop_calc_it("dynamic",K,N,Data['scrRate_approx2'], Data['zeros_approx2'],[],Data['RC'],Data['switch_it2'])
flops_d3 = flop_calc_it("dynamic",K,N,Data['scrRate_approx3'], Data['zeros_approx3'],[],Data['RC'],Data['switch_it3'])
       
axScreen.plot(np.arange(length),(1 - Data['scrRate'])*K, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #, 'x', markevery=[length-1]
#axScreen.plot(np.arange(length_approx),(1 - Data['scrRate_approx'])*K, '-mx', markevery=markers_on1,markersize = markersize,\
#                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$') # Marker on the swithing point 
axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_approx2'])*K, '-g', markevery=markers_on2,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axScreen.plot(np.arange(length_approx3),(1 - Data['scrRate_approx3'])*K, '-r', markevery=markers_on3,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
#axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_est_approx2'])*K, '-gx', markevery=markers_on2)

axScreen.axis([0,50,0,K*1.1]) #0.5*max(length,length_approx,length_approx2,length_approx3), 0, K*1.1])
#axScreen.grid(True) 
axScreen.set_ylabel("Number of active atoms")
axScreen.set_xlabel("Iteration t")
axScreen.legend(fontsize=18,loc=1,frameon=False)
axScreen.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

f.savefig('./ResSynthData/-1-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )
    
f.savefig('./ResSynthData/-1-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.pdf',bbox_inches = 'tight',bbox_pad = 2 )

############## FIGURE 0 ###############
# Screen and Flops. noMargin: OFF, Screen_est: OFF, noPeak:OFF
# Intermediate lambda

# Load data
filename = './ResSynthData/figures_GRETSI/0-ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.75.npz'
Data = np.load(filename)

#plt.figure()
f , (axScreen, axFlops_it) = \
    plt.subplots(2,1,sharex=True,figsize=2*plt.figaspect(1.3))    
opt = Data['opt'][()]
K = opt['K']
N = opt['N']
length = Data['nbIter']+1
length_approx = Data['nbIter_approx']+1
length_approx2 = Data['nbIter_approx2']+1
length_approx3 = Data['nbIter_approx3']+1
markers_on1 = [Data['switch_it'] -1] #, length_approx-1]
markers_on2 = [Data['switch_it2']-1] #, length_approx2-1]
markers_on3 = [Data['switch_it3']-1] #, length_approx3-1]

flops_d = flop_calc_it("dynamic",K,N,Data['scrRate'], Data['zeros'],[])
flops_d1 = flop_calc_it("dynamic",K,N,Data['scrRate_approx'], Data['zeros_approx'],[],Data['RC'],Data['switch_it'])
flops_d2 = flop_calc_it("dynamic",K,N,Data['scrRate_approx2'], Data['zeros_approx2'],[],Data['RC'],Data['switch_it2'])
flops_d3 = flop_calc_it("dynamic",K,N,Data['scrRate_approx3'], Data['zeros_approx3'],[],Data['RC'],Data['switch_it3'])
       
axScreen.plot(np.arange(length),(1 - Data['scrRate'])*K, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #, 'x', markevery=[length-1]
axScreen.plot(np.arange(length_approx),(1 - Data['scrRate_approx'])*K, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$') # Marker on the swithing point 
axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_approx2'])*K, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axScreen.plot(np.arange(length_approx3),(1 - Data['scrRate_approx3'])*K, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
#axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_est_approx2'])*K, '-gx', markevery=markers_on2)

axScreen.axis([0,max(length,length_approx,length_approx2,length_approx3), 0, K*1.1])
axScreen.grid(True) 
axScreen.set_ylabel("Size of the dictionary")
axScreen.set_xlabel("Iteration t")
#axScreen.legend(fontsize=18,loc=1,frameon=False)


#axFlops_it.plot(np.arange(length),flops_ns,'-b')
axFlops_it.plot(np.arange(length),flops_d, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #markevery=[length-1])
axFlops_it.plot(np.arange(length_approx),flops_d1, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$')
axFlops_it.plot(np.arange(length_approx2),flops_d2, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axFlops_it.plot(np.arange(length_approx3),flops_d3, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
axFlops_it.grid(True)         
#axFlops_it.set_ylim((-0.19,1.15))
axFlops_it.set_ylim((0,1.1*max(max(flops_d),max(flops_d1),max(flops_d2),max(flops_d3))))
axFlops_it.set_xlim((0,50))
axFlops_it.set_ylabel("Flops number") #,fontsize = 24)
axFlops_it.set_xlabel("Iteration t")
axFlops_it.legend(fontsize=18,loc=1,frameon=False)

f.savefig('./ResSynthData/0-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )


############## FIGURE 1 ###############
# Screen and Flops. noMargin: ON, Screen_est: OFF, noPeak:OFF
# Intermediate lambda

# NEW FORMATTING! WITH SCIENTIFIC NOTATION AND TOTAL COMPLEXITY AXIS.

# Load data Figure 1
#filename = './ResSynthData/figures_GRETSI/1-ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.75.npz'
# Load data Figure 2
#filename = './ResSynthData/figures_GRETSI/2-ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.75.npz'

# Load data Figure 1 - beta bernoulli p=0.02 - Screen_est: OFF
filename = './ResSynthData/figures_GRETSI/1-beta02_ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.6.npz'
# Load data Figure 2 - beta bernoulli p=0.02 - Screen_est: ON
#filename = './ResSynthData/figures_GRETSI/2-beta02_ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.6.npz'
# Load data Figure SLIDES - beta bernoulli p=0.02 - No Switching
#filename = './ResSynthData/figures_GRETSI/no_switching/beta02_ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.6.npz'

Data = np.load(filename)

#plt.figure()
f , (axScreen, axFlops_it) = \
    plt.subplots(2,1,sharex=True,figsize=2*plt.figaspect(1.3))
axFlops_tot = axFlops_it.twinx()
opt = Data['opt'][()]
K = opt['K']
N = opt['N']
length = Data['nbIter']+1
length_approx = Data['nbIter_approx']+1
length_approx2 = Data['nbIter_approx2']+1
length_approx3 = Data['nbIter_approx3']+1
markers_on1 = [Data['switch_it'] -1] #, length_approx-1]
markers_on2 = [Data['switch_it2']-1] #, length_approx2-1]
markers_on3 = [Data['switch_it3']-1] #, length_approx3-1]
markersize = 12

flops_d = flop_calc_it("dynamic",K,N,Data['scrRate'], Data['zeros'],[])
flops_d1 = flop_calc_it("dynamic",K,N,Data['scrRate_approx'], Data['zeros_approx'],[],Data['RC'],Data['switch_it'])
flops_d2 = flop_calc_it("dynamic",K,N,Data['scrRate_approx2'], Data['zeros_approx2'],[],Data['RC'],Data['switch_it2'])
flops_d3 = flop_calc_it("dynamic",K,N,Data['scrRate_approx3'], Data['zeros_approx3'],[],Data['RC'],Data['switch_it3'])
       
axScreen.plot(np.arange(length),(1 - Data['scrRate'])*K, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #, 'x', markevery=[length-1]
axScreen.plot(np.arange(length_approx),(1 - Data['scrRate_approx'])*K, '-mx', markevery=markers_on1,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \sigma\!=\!10^{-1}$') # Marker on the swithing point 
axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_approx2'])*K, '-gx', markevery=markers_on2,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \sigma\!=\!10^{-2}$') 
axScreen.plot(np.arange(length_approx3),(1 - Data['scrRate_approx3'])*K, '-rx', markevery=markers_on3,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \sigma\!=\!10^{-3}$')
#axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_est_approx2'])*K, '-gx', markevery=markers_on2)

axScreen.axis([0,max(length,length_approx,length_approx2,length_approx3), 0, K*1.1])
#axScreen.grid(True) 
axScreen.set_ylabel("Number of active atoms")
axScreen.set_xlabel("Iteration t")
axScreen.legend(fontsize=18,loc='center right',frameon=False)
axScreen.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

#axFlops_it.plot(np.arange(length),flops_ns,'-b')
axFlops_it.plot(np.arange(length),flops_d, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #markevery=[length-1])
axFlops_it.plot(np.arange(length_approx),flops_d1, '-mx', markevery=markers_on1,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$')
axFlops_it.plot(np.arange(length_approx2),flops_d2, '-gx', markevery=markers_on2,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axFlops_it.plot(np.arange(length_approx3),flops_d3, '-rx', markevery=markers_on3,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
#axFlops_it.grid(True)         
#axFlops_it.set_ylim((-0.19,1.15))
axFlops_it.set_ylim((0,1.1*max(max(flops_d),max(flops_d1),max(flops_d2),max(flops_d3))))
xmax = 50
axFlops_it.set_xlim((0,xmax))
axFlops_it.set_ylabel("Flops number") #,fontsize = 24)
axFlops_it.set_xlabel("Iteration t")
#axFlops_it.legend(fontsize=18,loc=1,frameon=False)
axFlops_it.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

axFlops_tot.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'
axFlops_tot.plot(np.arange(length),np.cumsum(flops_d), '--k',linewidth = 0.5,dashes=(3, 5))
axFlops_tot.plot(np.arange(length_approx),np.cumsum(flops_d1), '--m',linewidth = 0.5,dashes=(3, 5))
axFlops_tot.plot(np.arange(length_approx2),np.cumsum(flops_d2), '--g',linewidth = 0.5,dashes=(3, 5)) 
axFlops_tot.plot(np.arange(length_approx3),np.cumsum(flops_d3), '--r',linewidth = 0.5,dashes=(3, 5))
flops_tot_max = np.sum(flops_d[:xmax+1])
axFlops_tot.set_ylim((0,1.1*flops_tot_max))
#axFlops_tot.set_ylim((0,flops_tot_max)) #used for beta p=0.02
#axFlops_tot.set_ylabel("Cumulative flops") #,fontsize = 24)


f.savefig('./ResSynthData/1-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )
    
f.savefig('./ResSynthData/1-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.pdf',bbox_inches = 'tight',bbox_pad = 2 )

############## FIGURE 2 ###############
# Screen and Flops. noMargin: ON, Screen_est: ON, noPeak:OFF
# Intermediate lambda

# Load data
filename = './ResSynthData/figures_GRETSI/2-ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.75.npz'
Data = np.load(filename)

f , (axScreen, axFlops_it) = \
    plt.subplots(2,1,sharex=True,figsize=2*plt.figaspect(1.3))
axFlops_tot = axFlops_it.twinx()    
opt = Data['opt'][()]
K = opt['K']
N = opt['N']
length = Data['nbIter']+1
length_approx = Data['nbIter_approx']+1
length_approx2 = Data['nbIter_approx2']+1
length_approx3 = Data['nbIter_approx3']+1
markers_on1 = [Data['switch_it'] -1] #, length_approx-1]
markers_on2 = [Data['switch_it2']-1] #, length_approx2-1]
markers_on3 = [Data['switch_it3']-1] #, length_approx3-1]

flops_d = flop_calc_it("dynamic",K,N,Data['scrRate'], Data['zeros'],[])
flops_d1 = flop_calc_it("dynamic",K,N,Data['scrRate_approx'], Data['zeros_approx'],[],Data['RC'],Data['switch_it'])
flops_d2 = flop_calc_it("dynamic",K,N,Data['scrRate_approx2'], Data['zeros_approx2'],[],Data['RC'],Data['switch_it2'])
flops_d3 = flop_calc_it("dynamic",K,N,Data['scrRate_approx3'], Data['zeros_approx3'],[],Data['RC'],Data['switch_it3'])
       
axScreen.plot(np.arange(length),(1 - Data['scrRate'])*K, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #, 'x', markevery=[length-1]
axScreen.plot(np.arange(length_approx),(1 - Data['scrRate_approx'])*K, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$') # Marker on the swithing point 
axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_approx2'])*K, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axScreen.plot(np.arange(length_approx3),(1 - Data['scrRate_approx3'])*K, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
#axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_est_approx2'])*K, '-gx', markevery=markers_on2)

axScreen.axis([0,max(length,length_approx,length_approx2,length_approx3), 0, K*1.1])
axScreen.grid(True) 
axScreen.set_ylabel("Size of the dictionary")
axScreen.set_xlabel("Iteration t")
#axScreen.legend(fontsize=18,loc='center right',frameon=False)
axScreen.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

#axFlops_it.plot(np.arange(length),flops_ns,'-b')
axFlops_it.plot(np.arange(length),flops_d, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #markevery=[length-1])
axFlops_it.plot(np.arange(length_approx),flops_d1, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$')
axFlops_it.plot(np.arange(length_approx2),flops_d2, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axFlops_it.plot(np.arange(length_approx3),flops_d3, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
axFlops_it.grid(True)         
#axFlops_it.set_ylim((-0.19,1.15))
axFlops_it.set_ylim((0,1.1*max(max(flops_d),max(flops_d1),max(flops_d2),max(flops_d3))))
xmax = 50
axFlops_it.set_xlim((0,xmax))
axFlops_it.set_ylabel("Flops number") #,fontsize = 24)
axFlops_it.set_xlabel("Iteration t")
axFlops_it.legend(fontsize=18,loc=1,frameon=False)
axFlops_it.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

f.savefig('./ResSynthData/2-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )
    
############## FIGURE 3 ###############
# Screen and Flops. noMargin: ON, Screen_est: ON, noPeak:ON
# Intermediate lambda
    
# Load data
filename = './ResSynthData/figures_GRETSI/3-ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.75.npz'
Data = np.load(filename)

f , (axScreen, axFlops_it) = \
    plt.subplots(2,1,sharex=True,figsize=2*plt.figaspect(1.3))    
opt = Data['opt'][()]
K = opt['K']
N = opt['N']
length = Data['nbIter']+1
length_approx = Data['nbIter_approx']+1
length_approx2 = Data['nbIter_approx2']+1
length_approx3 = Data['nbIter_approx3']+1
markers_on1 = [Data['switch_it'] -1] #, length_approx-1]
markers_on2 = [Data['switch_it2']-1] #, length_approx2-1]
markers_on3 = [Data['switch_it3']-1] #, length_approx3-1]

flops_d = flop_calc_it("dynamic",K,N,Data['scrRate'], Data['zeros'],[])
flops_d1 = flop_calc_it("dynamic",K,N,Data['scrRate_approx'], Data['zeros_approx'],[],Data['RC'],Data['switch_it'])
flops_d2 = flop_calc_it("dynamic",K,N,Data['scrRate_approx2'], Data['zeros_approx2'],[],Data['RC'],Data['switch_it2'])
flops_d3 = flop_calc_it("dynamic",K,N,Data['scrRate_approx3'], Data['zeros_approx3'],[],Data['RC'],Data['switch_it3'])
       
axScreen.plot(np.arange(length),(1 - Data['scrRate'])*K, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #, 'x', markevery=[length-1]
axScreen.plot(np.arange(length_approx),(1 - Data['scrRate_approx'])*K, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$') # Marker on the swithing point 
axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_approx2'])*K, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axScreen.plot(np.arange(length_approx3),(1 - Data['scrRate_approx3'])*K, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
#axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_est_approx2'])*K, '-gx', markevery=markers_on2)

axScreen.axis([0,max(length,length_approx,length_approx2,length_approx3), 0, K*1.1])
axScreen.grid(True) 
axScreen.set_ylabel("Size of the dictionary")
axScreen.set_xlabel("Iteration t")
#axScreen.legend(fontsize=18,loc=1,frameon=False)


#axFlops_it.plot(np.arange(length),flops_ns,'-b')
axFlops_it.plot(np.arange(length),flops_d, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #markevery=[length-1])
axFlops_it.plot(np.arange(length_approx),flops_d1, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$')
axFlops_it.plot(np.arange(length_approx2),flops_d2, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axFlops_it.plot(np.arange(length_approx3),flops_d3, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
axFlops_it.grid(True)         
#axFlops_it.set_ylim((-0.19,1.15))
axFlops_it.set_ylim((0,1.1*max(max(flops_d),max(flops_d1),max(flops_d2),max(flops_d3))))
axFlops_it.set_xlim((0,50))
axFlops_it.set_ylabel("Flops number") #,fontsize = 24)
axFlops_it.set_xlabel("Iteration t")
axFlops_it.legend(fontsize=18,loc=1,frameon=False)
axFlops_it.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

f.savefig('./ResSynthData/3-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )

############## FIGURE 4 ###############
# Screen and Flops. noMargin: ON, Screen_est: ON, noPeak:ON
# High lambda

# Load data
filename = './ResSynthData/figures_GRETSI/4-ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.85.npz'
Data = np.load(filename)

f , (axScreen, axFlops_it) = \
    plt.subplots(2,1,sharex=True,figsize=2*plt.figaspect(1.3))    
opt = Data['opt'][()]
K = opt['K']
N = opt['N']
length = Data['nbIter']+1
length_approx = Data['nbIter_approx']+1
length_approx2 = Data['nbIter_approx2']+1
length_approx3 = Data['nbIter_approx3']+1
markers_on1 = [Data['switch_it'] -1] #, length_approx-1]
markers_on2 = [Data['switch_it2']-1] #, length_approx2-1]
markers_on3 = [Data['switch_it3']-1] #, length_approx3-1]

flops_d = flop_calc_it("dynamic",K,N,Data['scrRate'], Data['zeros'],[])
flops_d1 = flop_calc_it("dynamic",K,N,Data['scrRate_approx'], Data['zeros_approx'],[],Data['RC'],Data['switch_it'])
flops_d2 = flop_calc_it("dynamic",K,N,Data['scrRate_approx2'], Data['zeros_approx2'],[],Data['RC'],Data['switch_it2'])
flops_d3 = flop_calc_it("dynamic",K,N,Data['scrRate_approx3'], Data['zeros_approx3'],[],Data['RC'],Data['switch_it3'])
       
axScreen.plot(np.arange(length),(1 - Data['scrRate'])*K, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #, 'x', markevery=[length-1]
axScreen.plot(np.arange(length_approx),(1 - Data['scrRate_approx'])*K, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$') # Marker on the swithing point 
axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_approx2'])*K, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axScreen.plot(np.arange(length_approx3),(1 - Data['scrRate_approx3'])*K, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
#axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_est_approx2'])*K, '-gx', markevery=markers_on2)

axScreen.axis([0,max(length,length_approx,length_approx2,length_approx3), 0, K*1.1])
axScreen.grid(True) 
axScreen.set_ylabel("Size of the dictionary")
axScreen.set_xlabel("Iteration t")
#axScreen.legend(fontsize=18,loc=1,frameon=False)


#axFlops_it.plot(np.arange(length),flops_ns,'-b')
axFlops_it.plot(np.arange(length),flops_d, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #markevery=[length-1])
axFlops_it.plot(np.arange(length_approx),flops_d1, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$')
axFlops_it.plot(np.arange(length_approx2),flops_d2, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axFlops_it.plot(np.arange(length_approx3),flops_d3, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
axFlops_it.grid(True)         
#axFlops_it.set_ylim((-0.19,1.15))
axFlops_it.set_ylim((0,1.1*max(max(flops_d),max(flops_d1),max(flops_d2),max(flops_d3))))
axFlops_it.set_xlim((0,30))
axFlops_it.set_ylabel("Flops number") #,fontsize = 24)
axFlops_it.set_xlabel("Iteration t")
axFlops_it.legend(fontsize=18,loc=1,frameon=False)
axFlops_it.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

f.savefig('./ResSynthData/4-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )
    
############## FIGURE 5 ###############
# Low lambda

# Load data
filename = './ResSynthData/figures_GRETSI/5-ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.4.npz'
Data = np.load(filename)

f , (axScreen, axFlops_it) = \
    plt.subplots(2,1,sharex=True,figsize=2*plt.figaspect(1.3))    
opt = Data['opt'][()]
K = opt['K']
N = opt['N']
length = Data['nbIter']+1
length_approx = Data['nbIter_approx']+1
length_approx2 = Data['nbIter_approx2']+1
length_approx3 = Data['nbIter_approx3']+1
markers_on1 = [Data['switch_it'] -1] #, length_approx-1]
markers_on2 = [Data['switch_it2']-1] #, length_approx2-1]
markers_on3 = [Data['switch_it3']-1] #, length_approx3-1]

flops_d = flop_calc_it("dynamic",K,N,Data['scrRate'], Data['zeros'],[])
flops_d1 = flop_calc_it("dynamic",K,N,Data['scrRate_approx'], Data['zeros_approx'],[],Data['RC'],Data['switch_it'])
flops_d2 = flop_calc_it("dynamic",K,N,Data['scrRate_approx2'], Data['zeros_approx2'],[],Data['RC'],Data['switch_it2'])
flops_d3 = flop_calc_it("dynamic",K,N,Data['scrRate_approx3'], Data['zeros_approx3'],[],Data['RC'],Data['switch_it3'])
       
axScreen.plot(np.arange(length),(1 - Data['scrRate'])*K, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #, 'x', markevery=[length-1]
axScreen.plot(np.arange(length_approx),(1 - Data['scrRate_approx'])*K, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$') # Marker on the swithing point 
axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_approx2'])*K, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axScreen.plot(np.arange(length_approx3),(1 - Data['scrRate_approx3'])*K, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
#axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_est_approx2'])*K, '-gx', markevery=markers_on2)

axScreen.axis([0,max(length,length_approx,length_approx2,length_approx3), 0, K*1.1])
axScreen.grid(True) 
axScreen.set_ylabel("Size of the dictionary")
axScreen.set_xlabel("Iteration t")
#axScreen.legend(fontsize=18,loc=1,frameon=False)


#axFlops_it.plot(np.arange(length),flops_ns,'-b')
axFlops_it.plot(np.arange(length),flops_d, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #markevery=[length-1])
axFlops_it.plot(np.arange(length_approx),flops_d1, '-mx', markevery=markers_on1,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$')
axFlops_it.plot(np.arange(length_approx2),flops_d2, '-gx', markevery=markers_on2,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
axFlops_it.plot(np.arange(length_approx3),flops_d3, '-rx', markevery=markers_on3,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')
axFlops_it.grid(True)         
#axFlops_it.set_ylim((-0.19,1.15))
axFlops_it.set_ylim((0,1.1*max(max(flops_d),max(flops_d1),max(flops_d2),max(flops_d3))))
#axFlops_it.set_xlim((0,50))
axFlops_it.set_ylabel("Flops number") #,fontsize = 24)
axFlops_it.set_xlabel("Iteration t")
axFlops_it.legend(fontsize=18,loc=4,frameon=False)
axFlops_it.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

f.savefig('./ResSynthData/4-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )
    
############## FIGURE 7 ###############
# All lambdas
    
# Load data
#filename = './ResSynthData/expe_5/best_ISTA_gnoise_N1000_K5000_ST1_regpath10_done.npz'
filename = './ResSynthData/expe_5/bernoulli-gaussian/beta02_ISTA_gnoise_N1000_K5000_ST1_regpath10_done.npz'
Data = np.load(filename)

opt = Data['opt'][()]

timeRes = Data['timeRes'][()]
nbFlops = Data['nbFlops'][()]
nbIter = Data['nbIter'][()]

markersize = 12

   
q0_d, q1_d, q2_d, q3_d, q4_d = np.percentile(\
    timeRes['dynamic']/timeRes['noScreen'],[10,25,50,75,90],axis=1)
q0_s, q1_s, q2_s, q3_s, q4_s = np.percentile(\
    timeRes['static']/timeRes['noScreen'],[10,25,50,75,90],axis=1)

flop_q0_d, flop_q1_d, flop_q2_d, flop_q3_d, flop_q4_d =\
        np.percentile(nbFlops['dynamic'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_s, flop_q1_s, flop_q2_s, flop_q3_s, flop_q4_s =\
        np.percentile(nbFlops['static'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_d1, flop_q1_d1, flop_q2_d1, flop_q3_d1, flop_q4_d1 =\
        np.percentile(nbFlops['dynamic_approx'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_d2, flop_q1_d2, flop_q2_d2, flop_q3_d2, flop_q4_d2 =\
        np.percentile(nbFlops['dynamic_approx2'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_d3, flop_q1_d3, flop_q2_d3, flop_q3_d3, flop_q4_d3 =\
        np.percentile(nbFlops['dynamic_approx3'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)

itq1_d,it_median_d ,itq3_d= np.percentile(nbIter['dynamic'] ,[25,50,75],axis=1)
itq1_s,it_median_s ,itq3_s= np.percentile(nbIter['noScreen'] ,[25,50,75],axis=1)            
   
pen_param_list = make_pen_param_list(opt['samp'])  
mkevry = max(1,len(pen_param_list)/10)


if opt['Gr']:
        Gstr = 'G'
else:
        Gstr =''    

# Dynamic      
f = plt.figure(figsize=1.35*plt.figaspect(0.6)) #1.27*plt.figaspect(0.6)
ax = f.add_subplot(111)
ax.set_rasterization_zorder(1) 
                 
plt.semilogx(pen_param_list,flop_q2_d,'ks-',
             label = 'D'+Gstr+opt['scr_type'],                 
             markevery= mkevry, markersize = markersize)  
plt.fill_between(pen_param_list, flop_q1_d, flop_q3_d,alpha = 0.2,
                     facecolor = 'k')
#    plt.fill_between(pen_param_list,flop_q1_d, flop_q3_d,alpha = 0.1,
#                         edgecolor = 'k', hatch = '/',color='none')
# Dynamic approx 1e-1
plt.semilogx(pen_param_list,flop_q2_d1,'m^-',
             label = 'A-D'+Gstr+opt['scr_type']+r'$: \sigma\!=\!10^{-1}$', 
             markevery= mkevry, markersize = markersize)  
plt.fill_between(pen_param_list, flop_q1_d1, flop_q3_d1,alpha = 0.2,
                     facecolor = 'm')
#    plt.fill_between(pen_param_list,flop_q1_d1, flop_q3_d1,alpha = 0.1,
#                         edgecolor = 'm', hatch = '/',color='none')
# Dynamic approx 1e-2
plt.semilogx(pen_param_list,flop_q2_d2,'gD-',
             label = 'A-D'+Gstr+opt['scr_type']+ r'$: \sigma\!=\!10^{-2}$',                 
             markevery= mkevry, markersize = markersize)  
plt.fill_between(pen_param_list, flop_q1_d2, flop_q3_d2,alpha = 0.2,
                     facecolor = 'g')
#    plt.fill_between(pen_param_list,flop_q1_d2, flop_q3_d2,alpha = 0.1,
#                         edgecolor = 'g', hatch = '/',color='none')
# Dynamic approx 1e-3
plt.semilogx(pen_param_list,flop_q2_d3,'rv-',
             label = 'A-D'+Gstr+opt['scr_type']+r'$: \sigma\!=\!10^{-3}$',                 
             markevery= mkevry, markersize = markersize)  
plt.fill_between(pen_param_list, flop_q1_d3, flop_q3_d3,alpha = 0.2,
                     facecolor = 'r')
#    plt.fill_between(pen_param_list,flop_q1_d3, flop_q3_d3,alpha = 0.1,
#                         edgecolor = 'r', hatch = '/',color='none')                         

   
plt.grid(True, which="both")
plt.xticks(pen_param_list, ['0.1','','0.3','','0.5','','0.7','','0.9'])
plt.ylim((0,1.15))
plt.ylabel("Normalized flops number",fontsize = 24)
plt.xlabel(r"$\lambda/\lambda_{\mathrm{max}}$")
plt.legend(fontsize=20,loc=3,frameon=False)

f.suptitle(type2name(opt['dict_type']) + ' + ' + opt['algo_type'],fontsize=26)

#f.set_rasterized(True)
#f.savefig('./ResSynthData/'+make_file_name(opt)+'_Simu_relNoScreen.eps',bbox_inches = 'tight', rasterized=True, dpi=300 )

f.savefig('./ResSynthData/'+make_file_name(opt)+'_Simu_relNoScreen.pdf',bbox_inches = 'tight',bbox_pad = 2)

############## FIGURE 7 (2 plots in 1)###############
# All lambdas. y gaussian and y=X\beta (beta bernoulli-gaussian)
    
# Load data
filename = './ResSynthData/expe_5/best_ISTA_gnoise_N1000_K5000_ST1_regpath10_done.npz'
Data = np.load(filename)

opt = Data['opt'][()]

timeRes = Data['timeRes'][()]
nbFlops = Data['nbFlops'][()]
nbIter = Data['nbIter'][()]

markersize = 12

   
q0_d, q1_d, q2_d, q3_d, q4_d = np.percentile(\
    timeRes['dynamic']/timeRes['noScreen'],[10,25,50,75,90],axis=1)
q0_s, q1_s, q2_s, q3_s, q4_s = np.percentile(\
    timeRes['static']/timeRes['noScreen'],[10,25,50,75,90],axis=1)

flop_q0_d, flop_q1_d, flop_q2_d, flop_q3_d, flop_q4_d =\
        np.percentile(nbFlops['dynamic'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_s, flop_q1_s, flop_q2_s, flop_q3_s, flop_q4_s =\
        np.percentile(nbFlops['static'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_d1, flop_q1_d1, flop_q2_d1, flop_q3_d1, flop_q4_d1 =\
        np.percentile(nbFlops['dynamic_approx'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_d2, flop_q1_d2, flop_q2_d2, flop_q3_d2, flop_q4_d2 =\
        np.percentile(nbFlops['dynamic_approx2'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_d3, flop_q1_d3, flop_q2_d3, flop_q3_d3, flop_q4_d3 =\
        np.percentile(nbFlops['dynamic_approx3'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)

itq1_d,it_median_d ,itq3_d= np.percentile(nbIter['dynamic'] ,[25,50,75],axis=1)
itq1_s,it_median_s ,itq3_s= np.percentile(nbIter['noScreen'] ,[25,50,75],axis=1)            
   
pen_param_list = make_pen_param_list(opt['samp'])  
mkevry = max(1,len(pen_param_list)/10)


if opt['Gr']:
        Gstr = 'G'
else:
        Gstr =''    

# Dynamic      
f = plt.figure(figsize=1.35*plt.figaspect(0.6)) #1.27*plt.figaspect(0.6)
ax = f.add_subplot(111)
ax.set_rasterization_zorder(1) 
                 
plt.plot(pen_param_list,flop_q2_d,'k:',
             #label = 'D'+Gstr+opt['scr_type'],                 
             markevery= mkevry, markersize = markersize)  
#plt.fill_between(pen_param_list, flop_q1_d, flop_q3_d,alpha = 0.2,
#                     facecolor = 'k')
# Dynamic approx 1e-1
plt.plot(pen_param_list,flop_q2_d1,'m:',
             #label = 'A-D'+Gstr+opt['scr_type']+r'$: \sigma\!=\!10^{-1}$', 
             markevery= mkevry, markersize = markersize)  
#plt.fill_between(pen_param_list, flop_q1_d1, flop_q3_d1,alpha = 0.2,
#                     facecolor = 'm')
# Dynamic approx 1e-2
plt.plot(pen_param_list,flop_q2_d2,'g:',
             #label = 'A-D'+Gstr+opt['scr_type']+ r'$: \sigma\!=\!10^{-2}$',                 
             markevery= mkevry, markersize = markersize)  
#plt.fill_between(pen_param_list, flop_q1_d2, flop_q3_d2,alpha = 0.2,
#                     facecolor = 'g')
# Dynamic approx 1e-3
plt.plot(pen_param_list,flop_q2_d3,'r:',
             #label = 'A-D'+Gstr+opt['scr_type']+r'$: \sigma\!=\!10^{-3}$',                 
             markevery= mkevry, markersize = markersize)  
#plt.fill_between(pen_param_list, flop_q1_d3, flop_q3_d3,alpha = 0.2,
#                     facecolor = 'r')

# Load data
filename = './ResSynthData/expe_5/bernoulli-gaussian/beta02_ISTA_gnoise_N1000_K5000_ST1_regpath10_done.npz'
Data = np.load(filename)

opt = Data['opt'][()]

timeRes = Data['timeRes'][()]
nbFlops = Data['nbFlops'][()]
nbIter = Data['nbIter'][()]

markersize = 12

   
q0_d, q1_d, q2_d, q3_d, q4_d = np.percentile(\
    timeRes['dynamic']/timeRes['noScreen'],[10,25,50,75,90],axis=1)
q0_s, q1_s, q2_s, q3_s, q4_s = np.percentile(\
    timeRes['static']/timeRes['noScreen'],[10,25,50,75,90],axis=1)

flop_q0_d, flop_q1_d, flop_q2_d, flop_q3_d, flop_q4_d =\
        np.percentile(nbFlops['dynamic'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_s, flop_q1_s, flop_q2_s, flop_q3_s, flop_q4_s =\
        np.percentile(nbFlops['static'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_d1, flop_q1_d1, flop_q2_d1, flop_q3_d1, flop_q4_d1 =\
        np.percentile(nbFlops['dynamic_approx'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_d2, flop_q1_d2, flop_q2_d2, flop_q3_d2, flop_q4_d2 =\
        np.percentile(nbFlops['dynamic_approx2'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)
flop_q0_d3, flop_q1_d3, flop_q2_d3, flop_q3_d3, flop_q4_d3 =\
        np.percentile(nbFlops['dynamic_approx3'].astype(float)
        /nbFlops['noScreen'],[10,25,50,75,90],axis=1)

itq1_d,it_median_d ,itq3_d= np.percentile(nbIter['dynamic'] ,[25,50,75],axis=1)
itq1_s,it_median_s ,itq3_s= np.percentile(nbIter['noScreen'] ,[25,50,75],axis=1)            
   
pen_param_list = make_pen_param_list(opt['samp'])  
mkevry = max(1,len(pen_param_list)/10)


if opt['Gr']:
        Gstr = 'G'
else:
        Gstr =''    

# Dynamic      
                
plt.plot(pen_param_list,flop_q2_d,'ks-',
             label = 'D'+Gstr+opt['scr_type'],                 
             markevery= mkevry, markersize = markersize)  
plt.fill_between(pen_param_list, flop_q1_d, flop_q3_d,alpha = 0.2,
                     facecolor = 'k')
#    plt.fill_between(pen_param_list,flop_q1_d, flop_q3_d,alpha = 0.1,
#                         edgecolor = 'k', hatch = '/',color='none')
# Dynamic approx 1e-1
plt.plot(pen_param_list,flop_q2_d1,'m^-',
             label = 'A-D'+Gstr+opt['scr_type']+r'$: \sigma\!=\!10^{-1}$', 
             markevery= mkevry, markersize = markersize)  
plt.fill_between(pen_param_list, flop_q1_d1, flop_q3_d1,alpha = 0.2,
                     facecolor = 'm')
#    plt.fill_between(pen_param_list,flop_q1_d1, flop_q3_d1,alpha = 0.1,
#                         edgecolor = 'm', hatch = '/',color='none')
# Dynamic approx 1e-2
plt.plot(pen_param_list,flop_q2_d2,'gD-',
             label = 'A-D'+Gstr+opt['scr_type']+ r'$: \sigma\!=\!10^{-2}$',                 
             markevery= mkevry, markersize = markersize)  
plt.fill_between(pen_param_list, flop_q1_d2, flop_q3_d2,alpha = 0.2,
                     facecolor = 'g')
#    plt.fill_between(pen_param_list,flop_q1_d2, flop_q3_d2,alpha = 0.1,
#                         edgecolor = 'g', hatch = '/',color='none')
# Dynamic approx 1e-3
plt.plot(pen_param_list,flop_q2_d3,'rv-',
             label = 'A-D'+Gstr+opt['scr_type']+r'$: \sigma\!=\!10^{-3}$',                 
             markevery= mkevry, markersize = markersize)  
plt.fill_between(pen_param_list, flop_q1_d3, flop_q3_d3,alpha = 0.2,
                     facecolor = 'r')
#    plt.fill_between(pen_param_list,flop_q1_d3, flop_q3_d3,alpha = 0.1,
#                         edgecolor = 'r', hatch = '/',color='none')     
   
plt.grid(True)         
plt.ylim((0,1.15))
plt.ylabel("Normalized flops number",fontsize = 24)
plt.xlabel(r"$\lambda/\lambda_*$")
plt.legend(fontsize=20,loc=3,frameon=False)

f.suptitle(type2name(opt['dict_type']) + ' + ' + opt['algo_type'],fontsize=26)

#f.set_rasterized(True)
#f.savefig('./ResSynthData/'+make_file_name(opt)+'_Simu_relNoScreen.eps',bbox_inches = 'tight', rasterized=True, dpi=300 )

f.savefig('./ResSynthData/'+make_file_name(opt)+'_Simu_relNoScreen.pdf',bbox_inches = 'tight',bbox_pad = 2)



#######################################
# FIGURES SLIDES
#######################################

############# FIGURE 1 ################
# Load data Figure 1 SLIDES - beta bernoulli p=0.02 - No Switching
filename = './ResSynthData/figures_GRETSI/no_switching/beta02_ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.6.npz'

Data = np.load(filename)

#plt.figure()    
f , axScreen = \
    plt.subplots(1,1,figsize=1.18*plt.figaspect(0.6)) # 1.2*plt.figaspect(0.65)

axFlops_tot = axFlops_it.twinx()
opt = Data['opt'][()]
K = opt['K']
N = opt['N']
length = Data['nbIter']+1
#length_approx = Data['nbIter_approx']+1
length_approx2 = Data['nbIter_approx2']+1
#length_approx3 = Data['nbIter_approx3']+1
#markers_on1 = [Data['switch_it'] -1] #, length_approx-1]
markers_on2 = [Data['switch_it2']-1] #, length_approx2-1]
#markers_on3 = [Data['switch_it3']-1] #, length_approx3-1]
markersize = 12

flops_d = flop_calc_it("dynamic",K,N,Data['scrRate'], Data['zeros'],[])
#flops_d1 = flop_calc_it("dynamic",K,N,Data['scrRate_approx'], Data['zeros_approx'],[],Data['RC'],Data['switch_it'])
flops_d2 = flop_calc_it("dynamic",K,N,Data['scrRate_approx2'], Data['zeros_approx2'],[],Data['RC'],Data['switch_it2'])
#flops_d3 = flop_calc_it("dynamic",K,N,Data['scrRate_approx3'], Data['zeros_approx3'],[],Data['RC'],Data['switch_it3'])
       
axScreen.plot(np.arange(length),(1 - Data['scrRate'])*K, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #, 'x', markevery=[length-1]
#axScreen.plot(np.arange(length_approx),(1 - Data['scrRate_approx'])*K, '-m', markevery=markers_on1,markersize = markersize,\
#                label = 'A-D'+opt['scr_type']+r'$: \sigma\!=\!10^{-1}$') # Marker on the swithing point 
axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_approx2'])*K, '-g', markevery=markers_on2,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \sigma\!=\!10^{-2}$') 
#axScreen.plot(np.arange(length_approx3),(1 - Data['scrRate_approx3'])*K, '-r', markevery=markers_on3,markersize = markersize,\
#                label = 'A-D'+opt['scr_type']+r'$: \sigma\!=\!10^{-3}$')

xmax = 50
axScreen.axis([0,xmax, 0, K*1.1])
#axScreen.grid(True) 
axScreen.set_ylabel("Number of active atoms")
axScreen.set_xlabel("Iteration t")
axScreen.legend(fontsize=18,loc='center right',frameon=False)
axScreen.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

f.savefig('./ResSynthData/1-SLIDE-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )
    
f.savefig('./ResSynthData/1-SLIDE-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.pdf',bbox_inches = 'tight',bbox_pad = 2 )


############# FIGURE 2 ################

# Load data Figure 2 SLIDES - beta bernoulli p=0.02 - Switching ON - Screen_est: ON
filename = './ResSynthData/figures_GRETSI/2-beta02_ISTA_gnoise_N100_K500_ST1_regpath10_lambda_0.6.npz'

Data = np.load(filename)

#plt.figure()
#f , (axScreen, axFlops_it) = \
#    plt.subplots(2,1,sharex=False,figsize=2*plt.figaspect(1.3))
f , axScreen = \
    plt.subplots(1,1,figsize=1.18*plt.figaspect(0.6)) # 1.2*plt.figaspect(0.65)

opt = Data['opt'][()]
opt['data_type']= 'bernoulli-gaussian'#TODO DELETE AFTER ADDING data_type to npz files
K = opt['K']
N = opt['N']
length = Data['nbIter']+1
#length_approx = Data['nbIter_approx']+1
length_approx2 = Data['nbIter_approx2']+1
#length_approx3 = Data['nbIter_approx3']+1
#markers_on1 = [Data['switch_it'] -1] #, length_approx-1]
markers_on2 = [Data['switch_it2']-1] #, length_approx2-1]
#markers_on3 = [Data['switch_it3']-1] #, length_approx3-1]
markersize = 12

flops_d = flop_calc_it("dynamic",K,N,Data['scrRate'], Data['zeros'],[])
#flops_d1 = flop_calc_it("dynamic",K,N,Data['scrRate_approx'], Data['zeros_approx'],[],Data['RC'],Data['switch_it'])
flops_d2 = flop_calc_it("dynamic",K,N,Data['scrRate_approx2'], Data['zeros_approx2'],[],Data['RC'],Data['switch_it2'])
#flops_d3 = flop_calc_it("dynamic",K,N,Data['scrRate_approx3'], Data['zeros_approx3'],[],Data['RC'],Data['switch_it3'])
       
axScreen.plot(np.arange(length),(1 - Data['scrRate'])*K, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #, 'x', markevery=[length-1]
#axScreen.plot(np.arange(length_approx),(1 - Data['scrRate_approx'])*K, '-mx', markevery=markers_on1,markersize = markersize,\
#                label = 'A-D'+opt['scr_type']+r'$: \sigma\!=\!10^{-1}$') # Marker on the swithing point 
axScreen.plot(np.arange(length_approx2),(1 - Data['scrRate_approx2'])*K, '-gx', markevery=markers_on2,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \sigma\!=\!10^{-2}$') 
#axScreen.plot(np.arange(length_approx3),(1 - Data['scrRate_approx3'])*K, '-rx', markevery=markers_on3,markersize = markersize,\
#                label = 'A-D'+opt['scr_type']+r'$: \sigma\!=\!10^{-3}$')

xmax = 50
axScreen.axis([0,xmax, 0, K*1.1])
#axScreen.grid(True) 
axScreen.set_ylabel("Number of active atoms")
axScreen.set_xlabel("Iteration t")
axScreen.legend(fontsize=18,loc='center right',frameon=False)
axScreen.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

f.savefig('./ResSynthData/2-SLIDE-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )
    
f.savefig('./ResSynthData/2-SLIDE-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.pdf',bbox_inches = 'tight',bbox_pad = 2 )

# FIG 3
f , axFlops_it = \
    plt.subplots(1,1,figsize=1.18*plt.figaspect(0.6)) # 1.2*plt.figaspect(0.65)
axFlops_tot = axFlops_it.twinx()

axFlops_it.plot(np.arange(length),flops_d, '-k', linewidth = 6,\
                label = 'D'+opt['scr_type']) #markevery=[length-1])
#axFlops_it.plot(np.arange(length_approx),flops_d1, '-mx', markevery=markers_on1,markersize = markersize,\
#                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-1}$')
axFlops_it.plot(np.arange(length_approx2),flops_d2, '-gx', markevery=markers_on2,markersize = markersize,\
                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-2}$') 
#axFlops_it.plot(np.arange(length_approx3),flops_d3, '-rx', markevery=markers_on3,markersize = markersize,\
#                label = 'A-D'+opt['scr_type']+r'$: \| \mathbf{e}_j \|\!=\!10^{-3}$')

axFlops_it.set_ylim((0,1.1*max(max(flops_d),max(flops_d1),max(flops_d2),max(flops_d3))))
xmax = 50
axFlops_it.set_xlim((0,xmax))
axFlops_it.set_ylabel("Flops number") #,fontsize = 24)
axFlops_it.set_xlabel("Iteration t")
axFlops_it.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'

axFlops_tot.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) #ScientifiC Notation axis 'y'
axFlops_tot.plot(np.arange(length),np.cumsum(flops_d), '--k',linewidth = 0.5,dashes=(3, 5))
##axFlops_tot.plot(np.arange(length_approx),np.cumsum(flops_d1), '--m',linewidth = 0.5,dashes=(3, 5))
axFlops_tot.plot(np.arange(length_approx2),np.cumsum(flops_d2), '--g',linewidth = 0.5,dashes=(3, 5)) 
##axFlops_tot.plot(np.arange(length_approx3),np.cumsum(flops_d3), '--r',linewidth = 0.5,dashes=(3, 5))
flops_tot_max = np.sum(flops_d[:xmax+1])
axFlops_tot.set_ylim((0,1.1*flops_tot_max))
##axFlops_tot.set_ylim((0,flops_tot_max)) #used for beta p=0.02
axFlops_tot.set_ylabel("Cumulative flops") #,fontsize = 24)

f.savefig('./ResSynthData/3-SLIDE-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.eps',bbox_inches = 'tight',bbox_pad = 2 )
    
f.savefig('./ResSynthData/3-SLIDE-Simu_screenRate_'+make_file_name(opt)+\
    '_lasso'+str(opt['lasso'])+'approx.pdf',bbox_inches = 'tight',bbox_pad = 2 )
back to top