FUNCTION roof_read,mo,day,yr=yr,header=header IF n_elements(yr) EQ 0 THEN yr = 2012 ystr = string(yr,format='(i4.4)') mdstr = string(mo,format='(i2.2)')+string(day,format='(i2.2)') dstr = ystr + mdstr jd = dy_to_jd(dstr) jdb = jd - 1 yb = yr IF jdb EQ 0 THEN BEGIN yb-- jdb = days_in_year(yb) ENDIF jda = jd + 1 ya = yr IF jda GT days_in_year(yr) THEN BEGIN ya++ jda = 1 ENDIF ybstr = string(ya,format='(i4.4)') yastr = string(yb,format='(i4.4)') dstr_b = jd_to_dy(jdb,y=yb) dstr_a = jd_to_Dy(jda,y=ya) indir = '/air/incoming/picarro/DataLog_User_Sync/' files_bef = file_search(indir+ybstr+'/'+strmid(dstr_b,4,2)+'/'+strmid(dstr_b,6,2)+'/'+'*.dat',count=nfb) files = file_search(indir+ystr+'/'+strmid(dstr,4,2)+'/'+strmid(dstr,6,2)+'/'+'*.dat',count=nf) files_aft = file_search(indir+yastr+'/'+strmid(dstr_a,4,2)+'/'+strmid(dstr_a,6,2)+'/'+'*.dat',count=nfa) ;data is on the five second (17280 lines per day) ;yr,mo,day,hour,min,sec,co_sync,co2_dry_sync,ch4_dry_sync,h2o_sync ;if alarm status ne 0 then blank out ;screen arr header = ['Year','Month','Day','Hour','Minute','Sec','P','T','CO','CO2','CH4','H2O'] outarr = make_array(12,17280,/float,value=nan()) outarr[0,*] = yr outarr[1,*] = mo outarr[2,*] = day outarr[3,*] = expand_arr(lindgen(24),720) outarr[4,*] = replicate_arr(expand_arr(lindgen(60),12),24) outarr[5,*] = replicate_arr(lindgen(12)*5,1440) print,'Reading ',nf,' files for ',dstr IF yr LE 2011 THEN BEGIN col_co = 10 col_co2 = 12 col_ch4 = 14 col_h2o = 15 col_alarm = 5 col_p = 16 col_t = 9 ncols = 17 ENDIF ELSE BEGIN col_co = 15 col_co2 = 17 col_ch4 = 19 col_h2o = 20 col_alarm = 6 col_p = 8 col_t = 9 ncols = 21 ENDELSE IF nf GT 0 THEN BEGIN files = files[sort(files)] IF nfb GT 0 THEN files = [(reverse(files_bef[sort(files_Bef)]))[0],files] IF nfa GT 0 THEN files = [files,(files_aft[sort(files_aft)])[0]] FOR i = 0,n_elements(files)-1 DO BEGIN ; print,'Processing ',files[i] openr,fl,files[i],/get_lun s = '' readf,fl,s WHILE ~eof(fl) DO BEGIN readf,fl,s cols = strsplit(s,' ',/extract) IF n_elements(cols) GE ncols THEN BEGIN dtinf = float(strsplit(cols[0],'-',/extract)) tminf = float(strsplit(cols[1],':',/extract)) IF dtinf[0] EQ yr AND dtinf[1] EQ mo AND dtinf[2] EQ day AND tminf[0] GE 0 AND tminf[0] LT 24 AND long(cols[col_alarm] EQ 0) THEN BEGIN loc = tminf[0]*720+tminf[1]*12+tminf[2]/5 IF loc GE 0 AND loc LT 17280 THEN outarr[6:11,loc] = float([cols[col_p],cols[col_t],cols[col_co],cols[col_co2],cols[col_ch4],cols[col_h2o]]) ENDIF ENDIF ENDWHILE free_lun,fl ENDFOR ;screen co,co2,ch4,h2o for bad vals outarr[8,*] = screen_arr(outarr[8,*],0,5) outarr[9,*] = screen_arr(outarr[9,*],200,1200) outarr[10,*] = screen_arr(outarr[10,*],0,20) outarr[11,*] = screen_arr(outarr[11,*],0,5) ENDIF return,outarr END PRO roof_avg,mo,day,avgtm=avgtm,yr=yr IF n_elements(yr) EQ 0 THEN yr = 2012 IF n_elements(avgtm) EQ 0 THEN avgtm = 30 tmstr = string(avgtm,format='(i0)') outdir = '/air/incoming/picarro/MSNPicarro/averaged/'+string(tmstr)+'min/' ystr = string(yr,format='(i4.4)') mdstr = string(mo,format='(i2.2)')+string(day,format='(i2.2)') dstr = ystr + mdstr outf = outdir + 'picarro_aoss_'+dstr+'_'+tmstr+'min'+'.txt' print,'Processing ',outf data = roof_read(mo,day,yr=yr,header=header) nlines = 1440 / avgtm navg = avgtm*12 header = ['Year','Mon','Day','Hr','Min','P','T','CO','CO2','CH4','H2O','Sigma_CO','Sigma_CO2','Sigma_CH4','Sigma_H2O'] outarr = make_array(15,nlines,/float,value=nan()) outarr[0,*] = yr outarr[1,*] = mo outarr[2,*] = day outarr[3,*] = expand_arr(lindgen(24),60/avgtm) outarr[4,*] = (replicate_arr(expand_arr(lindgen(60),12),24))[0:*:navg] outarr[5:10,*] = average_cols(data[6:11,*],navg,/nan) outarr[11:14,*] = average_cols(data[8:11,*],navg,/nan,/sd) bval = where(~finite(outarr),nbv) IF nbv GT 0 THEN outarr[bval] = -999.0 openw,fl,outf,/geT_lun printf,fl,header,format='(5(a5,","),9(a10,","),a10)' FOR i = 0,nlines-1 DO BEGIN printf,fl,outarr[*,i],format='(5(i5,","),9(f10.3,","),f10.3)' ENDFOR free_lun,fl END PRO roof_avg_all ;10 26-31 ;11 1-15 ;12 14-16 ;1 18-31 ;2 1-29 ;3 1-7 FOR i = 26,31 DO roof_avg,10,i,yr=2011 FOR i = 1,15 DO roof_avg,11,i,yr=2011 FOR i = 14,16 DO roof_avg,12,i,yr=2011 FOR i = 18,31 DO roof_avg,1,i,yr=2012 FOR i = 1,29 DO roof_avg,2,i,yr=2012 FOR i = 1,7 DO roof_Avg,3,i,yr=2012 END