pro werstf, fname, xrange=xrange, freq_range=freq_range, zrange=zrange, thresh=thresh, $
neg=neg, baseline=baseline, save=save, print=print
common path, home_path, single_path, avg_path, ps_path, latadj_path, dv_path, $
pca_path, bhv_path, image_path, ers_path, ica_path
common params, n_ids, n_points, n_chans, period, epoch_range, filt_width, base_range
common params, n_ids
common wers_params, n_wers_pts, wers_range, wers_base_range, n_scales, scales
;on_error, 2
if not(keyword_set(xrange)) then xrange=[0,100]
if not(keyword_set(freq_range)) then freq_range=[2,100]
data = read_wers(ers_path + fname)
data = reverse(data,2)
; log10 scaling of power measures
data[n_ids:*,*,[0,1,2,3,4,5]] = alog10(data[n_ids:*,*,[0,1,2,3,4,5]])
if keyword_set(baseline) then data=wers_baseline(data,baseline)
if not(keyword_set(thresh)) then neg=0
if keyword_set(thresh) then data=wers_thresh(data,thresh,freq_range,neg=neg)
orient = 'landscape'
if keyword_set(print) then begin
set_plot, 'PS'
!P.font=0
if (orient EQ 'landscape') then $
device, /landscape $
else $
device, /portrait, /inches, xsize=8.0, xoffset=.18, ysize=9.0, yoffset=1.0
device, /helvetica, font_size=font_size, filename=ps_path + fname + '.ps'
device, /color
endif else begin
xsize=1100 & ysize=700
window, xsize=xsize, ysize=ysize, retain=2, title='Wavelet ERS'
endelse
cols=4 & rows=3
!P.multi[1:2] = [cols,rows]
!P.charsize = 2.
!X.margin = [3,2]
!X.ticklen = 0.05
!X.minor = 2
!Y.margin = [3,2]
!Y.ticklen = 0.04
n_plots = cols*rows
;xtickname = [' ',' ',' ',' ',' ',' ']
;ytickname = [' ',' ',' ',' ',' ']
legend_box=200 & text_box1=201 & text_box2=202 & empty_box=203
layout = $
;[text_box1, 0, 1, 2, $
[text_box1, 3, 4, 5, $
empty_box, 6, 7, 8, $
empty_box, 9, 10, 11]
; Set plot titles
titles = $
;[ '', 'PWT: PCs', 'PWT: RSIs', 'PWT: FSIs', $
[ '', 'Power: PCs', 'Power: RSIs', 'Power: FSIs', $
'', 'Synchrony: PCs', 'Synchrony: RSIs', 'Synchrony: FSIs', $
'', 'Synchrony: PC-RSI', 'Synchrony: PC-FSI', 'Synchrony: RSI-FSI']
x_disp_pts = ms_to_pts(xrange,/wers)
n_x_disp_pts = x_disp_pts[1] - x_disp_pts[0] + 1
x_disp_ix = n_ids + indgen(n_x_disp_pts) + x_disp_pts[0]
x_axis = indgen(n_x_disp_pts)*period + xrange[0]
freqs = 1000./scales
freq_ix = where((freqs GE freq_range[0]) AND (freqs LE freq_range[1]), n_freq_ix)
y_axis = freqs[freq_ix]
;print, 'n_scales = ', n_freq_ix
n_levels = 253 ; for Rainbow 18 & Purple-Red+Stripes colormaps
;temp = data[x_disp_ix,freq_ix,*]
;if not(keyword_set(zrange)) then begin
; maxv = max(temp[*,*,*], min=minv)
;endif else begin
; minv = zrange[0]
; maxv = zrange[1]
;endelse
;level_inc = (maxv-minv)/(n_levels-1)
;levels1 = (findgen(n_levels) * level_inc) + minv
;;levels = [minv-level_inc, levels1, maxv+level_inc, maxv+(2*level_inc)] ; Rainbow 18
;levels = [minv-(3*level_inc), minv-(2*level_inc), minv-(1*level_inc), levels1] ; Purple-Red+Stripes
for i=0,n_plots-1 do begin
if (layout[i] EQ empty_box) then !P.multi[0]=!P.multi[0]-1 $
else if (layout[i] EQ text_box1) then text_plot, x_axis, fname $
else if (layout[i] EQ legend_box) then begin
temp = congrid(levels[3:*], n_x_disp_pts, n_freq_ix)
contour, temp[*,freq_ix], x_axis, reverse(y_axis), xstyle=9, ystyle=1, /fill, levels=levels, $
xtickname=['',' ','',' ','',' '], xtitle='ms', ytitle='Hz', title=' '
axis, xaxis=1, xticks=2, xcharsize=0.8, $
xtickn=[strtrim(string(minv,'(f6.2)'),2), ' ', strtrim(string(maxv,'(f6.2)'),2)]
endif else begin
chan_ix = where(data[2,0,*] EQ layout[i])
temp = reform(data[x_disp_ix,*,chan_ix])
;if (layout[i] EQ 1) then temp = alog10(temp)
;contour, reverse(temp[*,freq_ix],2), x_axis, reverse(y_axis), levels=levels, xstyle=1, ystyle=1, $
; xtickname=xtickname, ytickname=ytickname, title=titles[i], /fill
maxv = max(temp[*,freq_ix], min=minv)
if (chan_ix GT 5) then begin
minv=0. & maxv=1.
endif
print, titles[i], ': ', minv, maxv
level_inc = (maxv-minv)/(n_levels-1)
levels1 = (findgen(n_levels) * level_inc) + minv
levels = [minv-(3*level_inc), minv-(2*level_inc), minv-(1*level_inc), levels1] ; Purple-Red+Stripes
contour, reverse(temp[*,freq_ix],2), x_axis, reverse(y_axis), levels=levels, xstyle=1, ystyle=1, $
xtickname=xtickname, ytickname=ytickname, title=titles[i], /fill
endelse
endfor
; Legend
if keyword_set(print) then begin
;s = reform(levels[3:*], 1, n_levels)
;s = congrid(bytscl(s, min=minv, max=maxv), 2, 253)
;tv, transpose(s), 8., 6.3, /inches, xsize=1.2, ysize=.15
;xyouts, .932, .875, string(maxv,'(f6.2)'), /normal, charsize=1.
;xyouts, .837, .875, string(minv,'(f6.2)'), /normal, charsize=1.
endif else begin
s_length = xsize/(!P.multi[1]+1)
s_width = (ysize/!P.multi[2])*.05
;s = reform(levels[0:n_levels-2], 1, n_levels-1)
s = reform(levels[3:*], 1, n_levels)
s = congrid(bytscl(s, min=minv, max=maxv), s_width, s_length)
x_offset=10 & y_offset=30
tv, transpose(s), x_offset, ysize - (s_width+y_offset+50)
xyouts, x_offset, ysize - (s_width+y_offset+70), $
strtrim(string(minv,'(f8.2)'),1), /device, align=0.
xyouts, s_length+x_offset, ysize - (s_width+y_offset+70), string(maxv,'(f8.2)'), /device, align=1.
endelse
!P.multi = 0
!P.charsize = 1.
!X.charsize = 1.
!X.ticklen = 0
!X.minor = 0
!Y.charsize = 1.
!Y.ticklen = 0
if keyword_set(print) then begin
device, /close_file
set_plot, 'WIN'
endif
if keyword_set(save) then saveimage, image_path + fname + '.bmp', /bmp
return
end