;+ ; ;NAME: ;iug_load_mu_meso_txt ; ;PURPOSE: ; Queries the RISH servers for the standard observation data (CSV format) of the ; mesosphere taken by the Middle and Upper atmosphere (MU) radar at Shigaraki and ; loads data into tplot format. ; ;SYNTAX: ; iug_load_mu_meso_txt, level=level, parameter=parameter, $ ; downloadonly=downloadonly, trange=trange, verbose=verbose ; ;KEYWOARDS: ; PARAMETER = Parameter name of MU mesosphere obervation data. ; For example, iug_load_mu_meso_txt, parameter1 = 'dpl1'. ; The default is 'all', i.e., load all available parameters. ; LEVEL = Choice of original and screening data of MU mesosphere obervation. ; For example, iug_load_mu_meso_txt, parameter2 = 'screening'. ; The default is 'all', i.e., load all available parameters. ; TRANGE = (Optional) Time range of interest (2 element array), if ; this is not set, the default is to prompt the user. Note ; that if the input time range is not a full day, a full ; day's data is loaded. ; /downloadonly, if set, then only download the data, do not load it ; into variables. ; VERBOSE: [1,...,5], Get more detailed (higher number) command line output. ; ;CODE: ; A. Shinbori, 25/07/2012. ; ;MODIFICATIONS: ; A. Shinbori, 12/11/2012. ; A. Shinbori, 24/12/2012. ; A. Shinbori, 24/01/2014. ; A. Shinbori, 09/08/2017. ; A. Shinbori, 30/11/2017. ; ;ACKNOWLEDGEMENT: ; $LastChangedBy: nikos $ ; $LastChangedDate: 2018-08-01 11:03:38 -0700 (Wed, 01 Aug 2018) $ ; $LastChangedRevision: 25538 $ ; $URL $ ;- pro iug_load_mu_meso_txt, parameter=parameter, $ level=level, $ downloadonly=downloadonly, $ trange=trange, $ verbose=verbose ;********************** ;Verbose keyword check: ;********************** if (not keyword_set(verbose)) then verbose=2 ;*********************** ;Keyword check (trange): ;*********************** if not keyword_set(trange) then begin get_timespan, time_org endif else begin time_org =time_double(trange) endelse ;**************** ;Parameter check: ;**************** ;--- all parameters (default) parameter_all = strsplit('dpl1 dpl2 dpl3 dpl4 dpl5 pwr1 pwr2 pwr3 pwr4 pwr5 '+$ 'wdt1 wdt2 wdt3 wdt4 wdt5 pn1 pn2 pn3 pn4 pn5',' ', /extract) ;--- check site codes if (not keyword_set(parameter)) then parameter='all' parameters = ssl_check_valid_name(parameter, parameter_all, /ignore_case, /include_all) print, parameters ;************ ;Level check: ;************ ;--- all levels (default) level_all = strsplit('org scr',' ', /extract) ;--- check parameters if (not keyword_set(level)) then level='all' levels = ssl_check_valid_name(level, level_all, /ignore_case, /include_all) print, levels ;***************** ;Defition of unit: ;***************** ;--- all units (default) unit_all = strsplit('m/s dB',' ', /extract) ;************************** ;Loop on downloading files: ;************************** get_timespan, time_org ;=================================================================== ;Download files, read data, and create tplot vars at each component: ;=================================================================== jj=0L for ii=0L,n_elements(levels)-1 do begin for iii=0,n_elements(parameters)-1 do begin ;============================================================== ;Change time window associated with a time shift from UT to LT: ;============================================================== day_org = (time_org[1] - time_org[0])/86400.d day_mod = day_org + 1 timespan, time_org[0] - 3600.0d * 9.0d, day_mod if keyword_set(trange) then trange[1] = time_string(time_double(trange[1]) + 9.0d * 3600.0d); for GUI if ~size(fns,/type) then begin ;**************************** ;Get files for ith component: ;**************************** file_names = file_dailynames( $ file_format='YYYY/YYYYMM/'+$ 'YYYYMMDD',trange=trange,times=times,/unique)+'.'+parameters[iii]+'.csv' ;=============================== ;Define FILE_RETRIEVE structure: ;=============================== source = file_retrieve(/struct) source.verbose=verbose source.local_data_dir = root_data_dir() + 'iugonet/rish/misc/sgk/mu/mesosphere/csv/' source.remote_data_dir = 'http://www.rish.kyoto-u.ac.jp/mu/mesosphere/data/text/' ;======================================================= ;Get files and local paths, and concatenate local paths: ;======================================================= local_paths = spd_download(remote_file=file_names, remote_path=source.remote_data_dir, local_path=source.local_data_dir, _extra=source, /last_version) local_paths_all = ~(~size(local_paths_all,/type)) ? $ [local_paths_all, local_paths] : local_paths if ~(~size(local_paths_all,/type)) then local_paths=local_paths_all endif else file_names=fns ;--- Load data into tplot variables if (not keyword_set(downloadonly)) then downloadonly=0 if (downloadonly eq 0) then begin ;=========================================================== ;Read data, and create tplot vars at each parameter: ;=========================================================== ;Read the files: ;=============== ;---Definition of parameters: s='' ;============== ;Loop on files: ;============== for h=jj,n_elements(local_paths)-1 do begin file= local_paths[h] if file_test(/regular,file) then dprint,'Loading MU mesosphere file: ',file $ else begin dprint,'MU mesosphere file ',file,' not found. Skipping' continue endelse ;---Open read file: openr,lun,file,/get_lun ;=========================== ;Read information of height: ;=========================== if (strmid(parameters[iii],0,2) ne 'pn') then begin readf, lun, s ;---Definition of altitude and data arraies: h_data = strsplit(s,',',/extract) altitude = fltarr(n_elements(h_data)-1) ;---Enter the altitude information: for j=0L,n_elements(h_data)-2 do begin altitude[j] = float(h_data[j+1]) endfor endif ;================= ;Loop on readdata: ;================= while(not eof(lun)) do begin readf,lun,s ok=1 if strmid(s,0,1) eq '[' then ok=0 if ok && keyword_set(s) then begin dprint,s ,dlevel=5 data = strsplit(s,',',/extract) if (strmid(parameters[iii],0,2) ne 'pn') then data2 = fltarr(1,(n_elements(data)-1)/2) ;---Get date and time information: year = strmid(data[0],0,4) month = strmid(data[0],5,2) day = strmid(data[0],8,2) hour = strmid(data[0],11,2) minute = strmid(data[0],14,2) second = strmid(data[0],17,2) ;---Convert time from local time to unix time: time = time_double(string(year)+'-'+string(month)+'-'+string(day)+'/'+hour+':'+minute+':'+second) - double(9) * 3600.0d ;Replace missing value by NaN: if (strmid(parameters[iii],0,2) ne 'pn') then begin for j=0L,(n_elements(data)-2)/2 do begin data2[0,j]=float(data[2*j+1]) a = float(data[2*j+1]) if levels[ii] eq 'scr' then begin if_cond = fix(data[2*j+2]) wbad = where(if_cond ge 4,nbad) if nbad gt 0 then a[wbad] = !values.f_nan endif data2[0,j]=a endfor endif if (strmid(parameters[iii],0,2) eq 'pn') then begin data2=float(data[1]) endif ;============================== ;Append array of time and data: ;============================== append_array, mu_time, time append_array, mu_data, data2 endif endwhile free_lun,lun endfor ;============================================================== ;Change time window associated with a time shift from UT to LT: ;============================================================== timespan, time_org get_timespan, init_time2 if keyword_set(trange) then trange[1] = time_string(time_double(trange[1]) - 9.0d * 3600.0d); for GUI ;============================== ;Store data in TPLOT variables: ;============================== ;---Acknowlegment string (use for creating tplot vars) acknowledgstring = 'The Equatorial Atmosphere Radar belongs to Research Institute for '+$ 'Sustainable Humanosphere (RISH), Kyoto University and is operated by '+$ 'RISH and National Institute of Aeronautics and Space (LAPAN) Indonesia. '+$ 'Distribution of the data has been partly supported by the IUGONET '+$ '(Inter-university Upper atmosphere Global Observation NETwork) project '+$ '(http://www.iugonet.org/) funded by the Ministry of Education, Culture, '+$ 'Sports, Science and Technology (MEXT), Japan.' if strmid(parameters[iii],0,2) eq 'dp' then o=0 if strmid(parameters[iii],0,2) eq 'wd' then o=0 if strmid(parameters[iii],0,2) eq 'pw' then o=1 if strmid(parameters[iii],0,2) eq 'pn' then o=1 if (size(mu_data,/type) eq 4) and (strmid(parameters[iii],0,2) ne 'pn') then begin ;---Create tplot variable for echo power, spectral width and Doppler velocity: dlimit=create_struct('data_att',create_struct('acknowledgment',acknowledgstring,'PI_NAME', 'T. Nakamura')) store_data,'iug_mu_meso_'+parameters[iii]+'_'+levels[ii],data={x:mu_time, y:mu_data, v:altitude},dlimit=dlimit ;----Edge data cut: time_clip,'iug_mu_meso_'+parameters[iii]+'_'+levels[ii], init_time2[0], init_time2[1], newname = 'iug_mu_meso_'+parameters[iii]+'_'+levels[ii] ;---Add options; new_vars=tnames('iug_mu_meso_'+parameters[iii]+'_'+levels[ii]) if new_vars[0] ne '' then begin options,'iug_mu_meso_'+parameters[iii]+'_'+levels[ii],ytitle='MUR-meso!CHeight!C[km]',ztitle=parameters[iii]+'!C['+unit_all[o]+']' options,'iug_mu_meso_'+parameters[iii]+'_'+levels[ii], labels='MUR-meso [km]' options, 'iug_mu_meso_'+parameters[iii]+'_'+levels[ii], 'spec', 1 endif endif if (size(mu_data,/type) eq 4) and (strmid(parameters[iii],0,2) eq 'pn') then begin ;---Create tplot variable for noise level: dlimit=create_struct('data_att',create_struct('acknowledgment',acknowledgstring,'PI_NAME', 'T. Nakamura')) store_data,'iug_mu_meso_'+parameters[iii],data={x:mu_time, y:mu_data},dlimit=dlimit ;----Edge data cut: time_clip,'iug_mu_meso_'+parameters[iii]+'_'+levels[ii], init_time2[0], init_time2[1], newname = 'iug_mu_meso_'+parameters[iii]+'_'+levels[ii] ;---Add options; new_vars=tnames('iug_mu_meso_'+parameters[iii]) if new_vars[0] ne '' then begin options,'iug_mu_meso_'+parameters[iii],ytitle='MUR-meso!CNoise level!C[dB]' options,'iug_mu_meso_'+parameters[iii], labels='MUR-meso [km]' options, 'iug_mu_meso_'+parameters[iii], 'spec', 0 endif endif ;---Clear time and data buffer: mu_time=0 mu_data=0 endif jj=n_elements(local_paths) ;---Initialization of timespan for parameters: timespan, time_org endfor jj=n_elements(local_paths) ;---Initialization of timespan for parameters: timespan, time_org endfor new_vars=tnames('iug_mu_meso_*') if new_vars[0] ne '' then begin print,'***************************** print,'Data loading is successful!!' print,'***************************** endif ;************************* ;Print of acknowledgement: ;************************* print, '**************************************************************** print, 'Acknowledgement' print, '**************************************************************** print, 'The Equatorial Atmosphere Radar belongs to Research Institute for ' print, 'Sustainable Humanosphere (RISH), Kyoto University and is operated by ' print, 'RISH and National Institute of Aeronautics and Space (LAPAN) Indonesia. ' print, 'Distribution of the data has been partly supported by the IUGONET ' print, '(Inter-university Upper atmosphere Global Observation NETwork) project ' print, '(http://www.iugonet.org/) funded by the Ministry of Education, Culture, ' print, 'Sports, Science and Technology (MEXT), Japan.' end