EIT Software Listings

 

anal
obsolete
response
util

 

Previous Routine
Next Routine

 

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

 


function eit_file2path, files, exist, exist_count,  $
   collapse=collapse, topeit=topeit, curdirx=curdirx, lz=lz, gavroc=gavroc
;+
;   Name: eit_file2path
;
;   Purpose: translate eit file name to "standard path" on local system
;
;   Input Parameters:
;      files - one or more eit file names (with or without path)
;      
;   Output Parameters:
;      exist       -  boolean vector - <files> online?
;      exist_count -  count where(<files>) online
;
;   Keyword Parameters:
;      topeit   - top level directory (default=EIT_QUICKLOOK)
;      curdir   - if set, set topeit to current directory
;      lz       - if set, set topeit to EIT_LZ and use YYYY/MM format
;      collapse - if set, assme all files in single directory <topeit>
;		  default is GSFC standard topeit/YYYY/MM/DD/filename
;      gavroc   - set if running on gavroche, special directory structure
;                 otherwise will check
;
;   Calling Sequence:
;      eitpath=eit_file2path(eitfilenames [,/collapse, /curdir, topeit='xxx'])
;      eitpath=eit_file2path(filenames,exist,count) 	; exist = online?
;
;   Calling Examples:
;      print,eit_file2path('efr19960521.043112')         ; "GSFC-like" tree
;         ....ate/data/processed/eit/quicklook/1996/05/21/efr19960521.043112
;
;      print,eit_file2path('efr19960521.043112',/collapse)   ; collapsed tree
;         ...ate/data/processed/eit/quicklook/efr19960521

;      print,eit_file2path('efr19960521.043112',/curdir)      ; local version
;         /usr/users/freeland/dev/eitpath/efr19960521.043112
;         
;   History:
;            21-May-1996 (S.L.Freeland) 
;            22-May-1996 (S.L.Freeland) - added 2nd param (exist)
;            01-Aug-1996 (J. Newmark) - added lz keyword for level-zero data
;            16-Aug-1996 (J. Newmark) - added special paths for GAVROC
;            21-Jan-1997 (J. Newmark) - use is_gsfcvms function
;            04-Mar-1997 (J. Nemwark) - allow input of short catalog listing
;            28-Mar-1997 (S. Freeland) - check 'EIT_DATA_STYLE' to allow
;                                        site specification ('collapsed')
;            12-May-1998 (J. Newmark) - allow combination of QKL and LZ
;                                       fix archive location on IS_GSFCVMS
;            22-Jul-1998 (J. Newmark) - fix multiple yr/month in LZ data
;                                       on VMS
;            27-Jan-1998 (J. Newmark) - bug in LZ/QKL combination
;
;   Restrictions:
;     assume filenames in given call have same length prefix
;-
if not data_chk(files,/string) then begin
   prstr,["You must supply at least one file name...",$
          "Example: IDL> localfile=eit_file2path(file [,exist, exist_count])"]
   return,''
endif

;
; allow parsing of string output from eit_catrd
zfiles = strlowcase(files)
nfiles = n_elements(zfiles)
ftc = strmid(zfiles(0),0,3)

lz = where(strpos(zfiles,'efz') ne -1,lcnt)
if lcnt eq 1 then lz = lz(0)
ql = where(strpos(zfiles,'efr') ne -1,qcnt)
if qcnt eq 1 then ql = ql(0)

if ftc eq '199' or ftc eq '200' then begin
      if lcnt gt 0 then zfiles(lz) = strmids(zfiles(lz), strpos(zfiles(lz),$ 
                                      'efz'), 18)
      if qcnt gt 0 then zfiles(ql) = strmids(zfiles(ql), strpos(zfiles(ql),$
                                      'efr'), 18)
endif

if lcnt + qcnt eq 0 then begin
         lz = 1
         odate=anytim2utc(/external,strmids(zfiles,0,20))
         for i = 0, nfiles-1 do begin
            tname = strarr(6)
            for j = 0, 5 do tname(j) = strtrim(odate(i).(j),2)
            short = where(strlen(tname) eq 1)
            if short(0) ne -1 then tname(short) = '0' + tname(short)
            zfiles(i)='efz'
            for j = 0, 2 do zfiles(i) = zfiles(i)+tname(j)
            zfiles(i)=zfiles(i)+'.'
            for j = 3, 5 do zfiles(i) = zfiles(i)+tname(j)
         endfor
endif
;

if nfiles eq 1 then retval='' else retval = strarr(nfiles)

; check if on gavroche, xanado, eitv0, magda
if keyword_set(gavroc) or is_gsfcvms() then begin
     today=anytim2utc(!stime)
     break_file,zfiles,xlog,xpath,xfiles,xext,xvers
     ll=strlen(xfiles(0))				 
     year=strmid(xfiles,ll-8,4) & month=strmid(xfiles,11-4,2) 
     day=strmid(xfiles,11-2,2)

     dum=EXECUTE("stat=trnlog('LZ_DATA',translz,/full)")
     dum=EXECUTE("stat=trnlog('QKL_DATA',transql,/full)")

     endlz='['+year+'.'+month+']' 
     endql='['+year+'.'+month+'.'+day+']'

     date=anytim2utc(year+'/'+month+'/'+day)
     date_diff=today.mjd-date.mjd
     if stat eq 1 then begin
          case 1 of
            is_gsfcvms() eq 3: begin
                   if lcnt gt 0 then retval(lz) = translz(0) + ':' + endlz
                   if qcnt gt 0 then retval(ql) = transql(0) + ':' + endql
                   end
            date_diff(0) le 30: begin
                   if lcnt gt 0 then retval(lz) = translz(0) + ':' + endlz
                   if qcnt gt 0 then retval(ql) = transql(0) + ':'
                   end
            else: begin
                   if lcnt gt 0 then retval(lz) = translz(1) + ':' + endlz
                   if qcnt gt 0 then retval(ql) = transql(1) + ':' + endql
                  end
          endcase 
     endif else retval=getenv('REF_DIR')
     retval=retval+xfiles+xext
     if n_params() gt 1 then begin		; optionally check if online
        exist=file_exist(retval)		; files exist?
        online=where(exist,exist_count)
     endif
  return, retval
endif

collapse=keyword_set(collapse) or keyword_set(curdirx) or $
         strlowcase(get_logenv('EIT_DATA_STYLE')) eq 'collapsed'

break_file,zfiles,xlog,xpath,xfiles,xext,xvers	; remove existing path, if any
ll=strlen(xfiles(0))				; 

toplz=get_logenv('EIT_LZ') 
topql=get_logenv('EIT_QUICKLOOK')	

year=strmid(xfiles,ll-8,4) & month=strmid(xfiles,11-4,2) & day=strmid(xfiles,11-2,2)

; JSN, 1999-11-22 add new code for temporary archive switch
toplz1=get_logenv('EIT_LZ1') 
if toplz1 ne '' then begin
  if strpos(toplz1,'/service/soho-arch03/home') eq -1 then $
     if year(0) eq '1996' or year(0) eq '1997' then toplz = toplz1
endif
;

if collapse then begin
  if keyword_set(curdirx) then retval = concat_dir(curdir(),xfiles+xext) else begin	
    if lcnt gt 0 then retval(lz) = concat_dir(toplz,xfiles+xext) 
    if qcnt gt 0 then retval(ql) = concat_dir(topql,xfiles+xext) 
  endelse
endif else begin
  if lcnt gt 0 then retval(lz) = concat_dir(toplz,concat_dir(year,$
       concat_dir(month,xfiles(lz)+xext)))
  if qcnt gt 0 then retval(ql) = concat_dir(topql,concat_dir(year(ql),$
       concat_dir(month(ql), concat_dir(day(ql),xfiles(ql)+xext(ql)))))
endelse

; case convert (convert to local convention)
retval=call_function((['strlowcase','strupcase'])(!version.os eq 'vms'),retval)

if n_params() gt 1 then begin		; optionally check if online
   exist=file_exist(retval)		; files exist?
   online=where(exist,exist_count)
endif

return,retval
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:16 2007- F. Auchère