EIT Software Listings

 

anal
obsolete
response
util

 

Previous Routine
Next Routine

 

Listing of $SSW/soho/eit/idl/util/lasteit.pro

 


pro lasteit, index, data, number, $
        w171=w171, w195=w195, w284=w284, w304=w304, wall=wall, wave=wave, $
        norebin=norebin, notv=notv, rebin=rebin, 	       $  ;
	uleft=uleft, uright=uright, lleft=lleft, lright=lright, $
	noscale=noscale, refresh=refresh, fill_cube=fill_cube, $
        quality=quality, prepit=prepit, debug=debug, $
        deriv_hist=deriv_hist, sobel_weight=sobel_weight       ; <<sobel_scale 
;+
;   Name: lasteit
;
;   Purpose: read and display most recent EIT images
;
;   Input Parameters:
;      number - number of images to read (default=1)
;
;   Output Parameters:
;      info - EIT instrument parameter (string array, 1 per image) 
;      data - EIT image or image cube
;
;   Keyword Parameters:
;      /w171, /w195, /w284, /304    - desired wavelength (default=171)
;      /wall		            - show all four wavel.
;      /norebin - return full size    (default reduced to 512x512)
;      rebin    - size to rebin to     (assumed sqare!)
;      /notv    - just return the data
;      quality  - minimum quality "accepted" (see data_quality.pro)
;                 (or, if set as flag, default=90%)
;
;   Calling Sequence:
;      lasteit [info, data, number, /w171, /w195, /w284, /304]
;
;   Calling Examples:
;      lasteit			   		; display most recent 171 image
;      lasteit,/w195		   		; ditto for 195
;      lasteit,info,data,5,/w304   		; most recent 5 304 images
;				   		;    return info and data 
;      lasteit,/wall				; most recent all wavelenghts
;      lasteit,index,data,50, rebin=256,/quality   ; last "50" @171, 
;			                           ; rebin->256, quality>90
;                                                    
;
;   History:
;      5-feb-1996 (S.L.Freeland)
;     23-apr-1996 (s.l.freeland) tvscl display if /noscale set
;      3-mar-1997 (S.L.Freeland) use genx (IDL eit_struct based) catalog 
;                                instead of old ascii catalog
;     14-mar-1997 (S.L.Freeland) insure chronological order on output
;                                add QUALITY keyword and function
;     23-jul-1997 (S.L.Freeland) apply QUALITY *BEFORE* FILL
;      6-Feb-1998 (S.L.Freeland) allow Al +1 (entrance filter degradation)
;     17-Oct-1998 (S.L.Freeland) enable PREPIT , optional call to sobel_scale
;     29-Oct-1998 (S.L.Freeland) pass DERIV_HIST to sobel_scale
;     28-Nov-2000 (S.L.Freeland) protect against out of order catalog
;
;   Restrictions:
;      Full disk only, Files in $EIT_QUICKLOOK
;-
common lasteit_blk, last_index, last_text
  
;   wdef display parameters             ; specify display quadrant for window
; -----------------------------------------------
uleft=keyword_set(uleft)
lleft=keyword_set(lleft)
lright=keyword_set(lright)
uright=1-(uleft or lleft or lright)	; default
; -----------------------------------------------

debug=keyword_set(debug)
notv=keyword_set(notv)
tvit=1-notv

if notv and n_params() eq 0 then begin
   message,/info,"You requested NOTV but did not supply output parameters...
   return
endif
; -------- /WALL logic (recursive) --------------
swaves=strtrim([171,195,284,304],2)
quad=['uleft','uright','lleft','lright']
if keyword_set(wall) then begin			; recurse
   if not keyword_set(rebin) then rebin=384     ; smaller
   for i=0,3 do exe=execute("lasteit,rebin=rebin,/w" + swaves(i) + ",/" + quad(i)) 
   return
endif
; -----------------------------------------------

if not keyword_set(norebin) and not keyword_set(rebin) then rebin=512
if not keyword_set(number) then number=1

eit_genx_cat,cat_name=cat_name,/name_only                     ; genx catalog? 
refresh=keyword_set(refresh) or n_elements(last_index) eq 0 

if refresh then begin
  case 1 of
     file_exist(cat_name): begin
        eit_genx_cat,/full_fov, last_index, last_text
        ss=sort_index(last_index,/ss)
        last_index=last_index(ss)
        last_text=last_text(ss)

     endcase
     else: begin
        message,/info,"No GENX-QKL catalog " + cat_name + " online, reading recent headers...
        read_eit,eit_files(last=2), last_index
        last_index=sort_index(last_index)
        last_text=get_infox(last_index,/fmt_tim, $
          'WAVELNTH,FILTER,naxis1,naxis2,EXPDUR,OBJECT', $
           format='a,a,a,a,a,a')        
     endcase
  endcase
endif 

case 1 of
   keyword_set(wave):          ; user passed explicitly
   keyword_set(w195): wave=195
   keyword_set(w284): wave=284
   keyword_set(w304): wave=304
   else: wave=171
endcase

ss=where(last_index.WAVELNTH eq wave and $
        (last_index.filter eq 'Clear' or last_index.filter eq 'Al +1') and $
	 last_index.object eq 'full FOV',count)

if debug then stop
if count eq 0 then begin
   message,/info,"Sorry, no images with requested parameters..."
   return
endif

if number gt count then message,/info,"Sorry, Only " + $
   strtrim(count,2) + " images match your parameters"

number=number < count

; read the data arrays
ss=(ss(count-number:count-1))

; ------------ read "selected" files -> 3D + structure via read_eit ---------
files=eit_file2path(last_index(ss).filename)
files=files(sort(files))
read_eit, files, index, data, outsize=rebin
info=last_text(ss)

if keyword_set(prepit) then begin 
   box_message,'Prepping data...'
   eit_prep, index, data=data, outindex, outdata
   data=temporary(outdata)>0
   data(where(data eq min(data)))=0
   noscale=1
   case 1 of 
      keyword_set(sobel_weight): data=sobel_scale(index,data,$
         sobel_weight=sobel_weight,minper=5,hi=2000)
      else:  data=bytscl(do_eit_scaling(data>0<1000,/log,/no_prep)) 
   endcase
endif
; ------- cleanup ------- 

scale=1-keyword_set(noscale)
if scale then begin
   message,/info,"NOTE: Scaling dark subtracted data"
   message,/info,"(use /noscale to suppress scaling)"
   data=bytscl(alog10((data - eit_dark()) > 1))
endif

bytit=tvit and (1-scale)
; ----------------------------------------------------------------------
if keyword_set(quality) then begin
   message,/info,"applying quality filter..."
   if quality eq 1 then qlim=90 else qlim=quality
   good=where(data_quality(data,/hist,quality_thresh=qlim),sscnt)

   if sscnt eq 0 then begin
      message,/info,"None of the images meet your quality else  begin
   endif else begin
      if sscnt eq n_elements(ss) then begin
          message,/info,"All images OK..." 
      endif else begin
         message,/info,"Some Bad image found, filtering..."
         index=index(good) 
         data=temporary(data(*,*,good))
      endelse
      if keyword_set(fill_cube) and sscnt gt 1 then eit_fill_cube,data  
   endelse
endif

; ------------------------- display on request ----------------------------
if tvit then begin
   if n_elements(rebin) eq 0 then message,/info,"Not displaying due to large size..." else begin
     eit_colors,wave
     if number eq 1 then begin
         wdef, xx, uright=uright, uleft=uleft, lleft=lleft, lright=lright, im=data
         call_procedure,(['tv','tvscl'])(bytit),data
         xyouts, 5,5,strcompress(info(0)), $
            size=1.5*((size(data))(1)/512.) < 2.,/device
      endif else begin
         xstepper,data, info
      endelse
   endelse
endif 
; ----------------------------------------------------------------------

return
end


Web curator: Frédéric Auchère
Responsible NASA official: Joseph B. Gurman, Facility Scientist, Solar Data Analysis Center
joseph.b.gurman@gsfc.nasa.gov
+1 301 286-4767
NASA Goddard Space Flight Center
Solar Physics Branch / Code 682

Last revised: - Wed May 9 21:45:22 2007- F. Auchère