pro SUB_accumulate_step5, var_combine_all, var_mean_all, var_std_all, var_combine, var_mean, var_std, $ nobs_all=var_nobs_all, nobs_this=nobs_this, time_all = var_time_all, time_this = time_this if n_elements(var_combine) eq 0 then begin ; if var_combine is empty, then insert dummy column; required by json format size_this = size(var_combine_all,/dim) if n_elements(var_mean_all) gt 0 then begin var_mean_all= [var_mean_all, transpose(fltarr(size_this))+!values.f_nan] var_std_all= [var_std_all, transpose(fltarr(size_this))+!values.f_nan] if ARG_PRESENT(nobs_this) then begin var_nobs_all = [var_nobs_all, transpose(fltarr(size_this))+!values.f_nan] endif if ARG_PRESENT(time_this) then begin var_time_all= [var_time_all, time_this] endif endif endif else begin if n_elements(var_mean_all) eq 0 then begin ; the first element, simply give the current value var_combine_all = var_combine var_mean_all = transpose(var_mean) var_std_all = transpose(var_std) if ARG_PRESENT(nobs_this) then begin var_nobs_all = transpose(nobs_this) endif if ARG_PRESENT(time_this) then begin var_time_all = time_this endif endif else begin existing = 0 for combine_loop = 0, n_elements(var_combine)-1 do begin this_id = where(var_combine_all eq var_combine[combine_loop], this_num) if this_num eq 0 then begin ; new combine, rebuild the whole line for the new combine ;print,'new combine' var_combine_all = [var_combine_all, var_combine[combine_loop]] size_this = size(var_mean_all,/dim) var_mean_all= [transpose(var_mean_all), transpose(fltarr(size_this[0]))+!values.f_nan] var_mean_all= transpose(var_mean_all) var_std_all= [transpose(var_std_all), transpose(fltarr(size_this[0]))+!values.f_nan] var_std_all= transpose(var_std_all) if ARG_PRESENT(nobs_this) then begin var_nobs_all= [transpose(var_nobs_all), transpose(fltarr(size_this[0]))+!values.f_nan] var_nobs_all= transpose(var_nobs_all) endif ;; if the new combine is the first one, then actually we need to append column one time. if combine_loop eq 0 then begin ; only append once size_this = size(var_combine_all,/dim) var_mean_all= [var_mean_all, transpose(fltarr(size_this))+!values.f_nan] var_std_all= [var_std_all, transpose(fltarr(size_this))+!values.f_nan] if ARG_PRESENT(nobs_this) then begin var_nobs_all= [var_nobs_all, transpose(fltarr(size_this))+!values.f_nan] endif if ARG_PRESENT(time_this) then begin var_time_all= [var_time_all, time_this] endif existing=1 endif var_mean_all[-1, -1] = var_mean[combine_loop] var_std_all[-1, -1] = var_std[combine_loop] if ARG_PRESENT(nobs_this) then begin var_nobs_all[-1, -1] = nobs_this[combine_loop] endif endif else begin ; existing combine, append to column ;print,'existing combine' if existing eq 0 then begin ; only append once size_this = size(var_combine_all,/dim) var_mean_all= [var_mean_all, transpose(fltarr(size_this))+!values.f_nan] var_std_all= [var_std_all, transpose(fltarr(size_this))+!values.f_nan] if ARG_PRESENT(nobs_this) then begin ;print,'size(var_nobs_all):',size(var_nobs_all) ;print,'size_this:',size_this var_nobs_all= [var_nobs_all, transpose(fltarr(size_this))+!values.f_nan] endif if ARG_PRESENT(time_this) then begin var_time_all= [var_time_all, time_this] endif existing = 1 endif var_mean_all[-1, this_id] = var_mean[combine_loop] var_std_all[-1, this_id] = var_std[combine_loop] if ARG_PRESENT(nobs_this) then begin var_nobs_all[-1, this_id] = nobs_this[combine_loop] endif endelse ;print,'-----------' endfor ; combine_loop endelse ; n_elements(var_mean_all) eq 0 endelse ; n_elements(var_combine) eq 0 end