www.gusucode.com > Ogive_optimization_1.0.6 > Ogive_output_synthesis.m
function [runok,txtlog,FLUXES,FLUXES_CHARS,PARAMETERS,PARAMETERS_CHARS,WARNINGS_ERRORS,WARNINGS_ERRORS_CHARS]=Ogive_output_synthesis(fname,txtlog,errordir,mtime,DAT,filename,densitymap_filename,flux_outOO_VI,flux_outOO_auto,fit_uncertainty,flux_out30,flux_out30_perc_std,flux_out30_perc_298,TS,index_opt,index_opt_auto) if nargin==0 load Ogive_output_synthesis_TESTDELETE end try %% SETUP runok=1; SCRIPT_LEVEL=2; units={'';'^circ C';'^circ K';'';'';'';'molm^{-2}s^{-1}';'molm^{-2}d^{-1}';'Wm^{-2}'}; scaling={'';'m';'\mu';'h';'k'}; DAT5=DAT{5}(DAT{5}>0); str0={'OO_NOVI';'OO_VI';'fit_uncertainty [%]';'30min'}; str13=cell(1,3); str13{1}={'gaptest';'gaptype';'rangetest';'spiketest';'spiketype'}; str13{3}={'errHaar';'errTS'}; str2={'u';'v';'w'}; DAT5_ed=DAT5; DAT5_ed(DAT5_ed~=3 & DAT5_ed~=5 & DAT5_ed~=6)=0; DAT5_ed(DAT5_ed==0)=[]; ixs1=DAT5_ed; %3, 5 and 6 only DAT5raw=DAT{5}; DAT5_ed2=DAT5; DAT5_ed2(DAT5_ed2<2 | DAT5_ed2>6)=0; DAT5_ed2(DAT5_ed2==0)=[]; ixs2=DAT5_ed2; %3, 4, 5 and 6 only DAT5raw_ixes=nan(size(ixs2)); for ii=1:length(ixs2) DAT5raw_ixes(ii)=find(DAT5raw==ixs2(ii),1,'first'); DAT5raw(DAT5raw_ixes(ii))=0; end ixs2=sortrows([DAT5raw_ixes;ixs2]'); ixs2=ixs2(:,2)'; DAT5_ed3=DAT5;DAT5_ed3(DAT5_ed3<2 | DAT5_ed3>2)=0;DAT5_ed3(DAT5_ed3==0)=[];ixs3=DAT5_ed3; %3, 4, 5 and 6 only ixs={ixs2;'';ixs1}; % MKDIR if ~exist([DAT{9},filesep,'4_RESULTS'],'dir') mkdir([DAT{9},filesep,'4_RESULTS']) end % save mtime save([DAT{9},filesep,'4_RESULTS',filesep,'mtime.mat'],'mtime') %% FLUXES FLUXES=[datevec(mtime) flux_outOO_auto flux_outOO_VI fit_uncertainty flux_out30 flux_out30_perc_std flux_out30_perc_298]; FLUXES(:,6)=round(FLUXES(:,6)); FLUXES_CHARS=cell(1,size(FLUXES,2)); FLUXES_CHARS(1:6)={'Year','Month','Day','Hour','Minute','Second'}; ctr=6; for ii=1:4 %OO and 30min for ij=1:size(DAT{14},2) ctr=ctr+1; FLUXES_CHARS{ctr}=[DAT{8}{DAT{14}(3,ij),7},'_',str0{ii},' [',[scaling{DAT{6}(5,DAT{14}(2,ij))+1} units{DAT{6}(4,DAT{14}(2,ij))+1}],']']; end end FLchar={'std';'2-98th'}; for ii=1:2 for ij=1:size(DAT{14},2) ctr=ctr+1; FLUXES_CHARS{ctr}=[DAT{8}{DAT{14}(3,ij),7},'_30min_perc_',FLchar{ii}]; end end %% PARAMETERS colmns_params=[6 9 1 1 4 1 sum(DAT{7}(DAT{14}(1,:))>0) sum(DAT{5}==7)]; PARAMETERS=nan(size(filename,1),sum(colmns_params)); PARAMETERS_CHARS={'Year','Month','Day','Hour','Minute','Second','mean(U)','std(U)','mean(w)','std(w)','WDIR','WDIR_RANGE_LEFT','WDIR_RANGE_RIGHT','std(v)','cov(vw)','ustar','q_v','mean(Tair)','mean(c_d0)','mean(rho_d)','mean(Tair_potv)','ZL-1'}; ixf=find(DAT{7}(DAT{14}(1,:))>0); %signal alignments if ~isempty(ixf) for ii=1:length(ixf) PARAMETERS_CHARS{end+1}=['TS_',DAT{8}{DAT{14}(3,ixf(ii)),3}]; end end ixf=find(DAT5==7); %averages if ~isempty(ixf) for ii=1:length(ixf) PARAMETERS_CHARS{end+1}=['mean(',DAT{8}{ixf(ii),3},')']; end end %% WARNINGS_ERRORS sumin=sum(DAT{5}>=2 & DAT{5}<=6); sumin2=sum(DAT{5}==3 | DAT{5}==5 | DAT{5}==6); colmns_warns=[sumin sumin 3 sumin sumin 3 sumin2 sumin2]; %gaptest, gaptype, spiketest, spiketype, errwind, errHaar, errTS WARNINGS_ERRORS=nan(size(filename,1),sum(colmns_warns)); WARNINGS_ERRORS_CHARS=cell(1,size(WARNINGS_ERRORS,2)); ctr=0; iirun=[5 3 2]; for id=1:3 if id==1 for ii=1:iirun(id) %times if ii==3 DAT5_ed0=DAT5; for ij=ixs3 %DAT5 numbers ixf=find(DAT5_ed0==ij,1,'first'); while ~isempty(ixf) ctr=ctr+1; WARNINGS_ERRORS_CHARS{ctr}=[str13{id}{ii},'_',DAT{8}{ixf,3}]; DAT5_ed0(ixf)=0; ixf=find(DAT5_ed0==ij,1,'first'); end end else DAT5_ed0=DAT5; for ij=ixs{id} %DAT5 numbers ixf=find(DAT5_ed0==ij,1,'first'); while ~isempty(ixf) ctr=ctr+1; WARNINGS_ERRORS_CHARS{ctr}=[str13{id}{ii},'_',DAT{8}{ixf,3}]; DAT5_ed0(ixf)=0; ixf=find(DAT5_ed0==ij,1,'first'); end end end end elseif id==3 for ii=1:iirun(id) %times DAT5_ed0=DAT5; for ij=ixs{id} %DAT5 numbers ixf=find(DAT5_ed0==ij,1,'first'); while ~isempty(ixf) ctr=ctr+1; WARNINGS_ERRORS_CHARS{ctr}=[str13{id}{ii},'_',DAT{8}{ixf,3}]; DAT5_ed0(ixf)=0; ixf=find(DAT5_ed0==ij,1,'first'); end end end else for ii=1:iirun(id) ctr=ctr+1; WARNINGS_ERRORS_CHARS{ctr}=['errwind_',str2{ii}]; end end end WARNINGS_ERRORS_CHARS=[{'Year','Month','Day','Hour','Minute','Second'},WARNINGS_ERRORS_CHARS]; %gaptest, gaptype, rangetest, spiketest, spiketype, errwind, errHaar, errTS %% LOOP - PARAMETERS & WARNINGS_ERRORS PARAMETERS(:,1:6)=datevec(mtime); PARAMETERS(:,23:23+sum(DAT{7}(DAT{14}(1,:))>0)-1)=TS(:,DAT{7}(DAT{14}(1,:))>0); meanOutput=cell(size(filename,1),1); for id=1:size(filename,1) mytimedwaitbar(id,size(filename,1)) if ~isempty(filename{id,1}) DATA=load(filename{id,1}); SecOutput_id=DATA.x; if ~isempty(SecOutput_id{3,1}) PARAMETERS(id,7:15)=SecOutput_id{3,1}; % mwind end if ~isempty(SecOutput_id{3,4}) PARAMETERS(id,16)=SecOutput_id{3,4}; % ustar end if ~isempty(SecOutput_id{4,1}) PARAMETERS(id,17)=SecOutput_id{4,1}; % q_v end if ~isempty(SecOutput_id{5,1}) PARAMETERS(id,18:21)=SecOutput_id{5,1}; % mean(Tair) mean(c_d0) mean(Rho_d) mean(PotTemp_v) end if ~isempty(SecOutput_id{9,5}) PARAMETERS(id,22)=SecOutput_id{9,5}; % ZL^{-1} end if any(DAT5==7) PARAMETERS(id,end-sum(DAT5==7)+1:end)=SecOutput_id{7,1}; meanOutput{id}=SecOutput_id{7,2}; end ixv=[1 1;1 2;1 3;2 1;2 2;3 2;8 1;9 1]; in=nan(length(ixv)+1,1);in(1)=0; for ij=1:length(ixv) if ~isempty(SecOutput_id{ixv(ij,1),ixv(ij,2)}) in2=cell2mat(SecOutput_id(ixv(ij,1),ixv(ij,2))); WARNINGS_ERRORS(id,sum(in(1:ij))+1:sum(in(1:ij))+numel(in2))=in2; %gaptest, gaptype, wind rangetest, spiketest, spiketype, errwind, errHaar, errTS in(ij+1)=numel(in2); end end end end if any(DAT5==7) %save meanOutput save([DAT{9},filesep,'4_RESULTS',filesep,'meanOutput.mat'],'meanOutput') end WARNINGS_ERRORS=[datevec(mtime) WARNINGS_ERRORS]; %% FIT PARAMETERS HFLF={'HF';'LF'}; chars0={'A0';'mu';'f0';'offset';'A0';'mu';'f0'}; FITPARAMS=cell(1,size(filename,2)-1); for ii=1:size(FITPARAMS,2) FITPARAMS{ii}=nan(size(filename,1),8); end for ii=1:size(filename,1) if ~isempty(filename{ii,1}) for ij=2:size(filename,2) if ~isempty(filename{ii,ij}) DATA=load(filename{ii,ij}); thirdoutput=DATA.ThirdOutput_idii; %fit parameters if isnan(index_opt(ii,ij-1)) ixOpt=index_opt_auto(ii,ij-1); else ixOpt=index_opt(ii,ij-1); end optparams=thirdoutput{1}{1}(ixOpt,:); if length(optparams)==4 FITPARAMS{ij-1}(ii,1:4)=thirdoutput{1}{1}(ixOpt,:); elseif length(optparams)==7 FITPARAMS{ij-1}(ii,1:7)=thirdoutput{1}{1}(ixOpt,:); end Ogives_out_HF=thirdoutput{6}{1}(ixOpt,:); [~,mxix]=max(abs(gradient(Ogives_out_HF))); FITPARAMS{ij-1}(ii,end)=thirdoutput{2}(mxix(1)); end end end end log47=false(1,size(filename,2)-1); %false=4 parameters. True=7 parameters (LF) for ij=1:size(filename,2)-1 if ~all(isnan(FITPARAMS{ij}(:,5))) log47(ij)=true; end end if all(log47==0) %exclude LF mxixe=4; for ij=1:size(filename,2)-1 FITPARAMS{ij}=[FITPARAMS{ij}(1:end,1:mxixe) FITPARAMS{ij}(1:end,end)]; end else %include LF mxixe=7; end FITPARAMS=[datevec(mtime) cell2mat(FITPARAMS)]; FITPARAMS_CHARS=cell(1,((size(filename,2)-1)*(mxixe+1))+6); FITPARAMS_CHARS{1}='Year';FITPARAMS_CHARS{2}='Month';FITPARAMS_CHARS{3}='Day';FITPARAMS_CHARS{4}='Hour';FITPARAMS_CHARS{5}='Minute';FITPARAMS_CHARS{6}='Second'; ctr=6; for ii=1:size(filename,2)-1 for ij=1:mxixe+1 ctr=ctr+1; if ij<mxixe+1 if mxixe==4 FITPARAMS_CHARS{ctr}=[DAT{8}{DAT{14}(3,ii),7},'_',chars0{ij}]; else FITPARAMS_CHARS{ctr}=[DAT{8}{DAT{14}(3,ii),7},'_',HFLF{(ij>4)+1},'_',chars0{ij}]; end else FITPARAMS_CHARS{ctr}=[DAT{8}{DAT{14}(3,ii),7},'_Cospectralpeak_natfreq']; end end end %% LINEAR DETREND RESULTS Flux_lindet_cell=cell(size(densitymap_filename)); for id=1:size(densitymap_filename,1) for ii=1:size(densitymap_filename,2) if ~isempty(densitymap_filename{id,ii}) DATA=load(densitymap_filename{id,ii}); Flux_lindet_cell{id,ii}=[DATA.datalength' DATA.Flux_lindet]; end end end save([DAT{9},filesep,'4_RESULTS',filesep,'Flux_lindet_cell.mat'],'Flux_lindet_cell') %% SAVE AS .MAT and .XLSX FLUXES_CELL=num2cell(FLUXES); FLUXES_CELL=[FLUXES_CHARS;FLUXES_CELL]; if ispc xlswrite([DAT{9},filesep,'4_RESULTS',filesep,'FLUXES.xlsx'],FLUXES_CELL) else xlwrite([DAT{9},filesep,'4_RESULTS',filesep,'FLUXES.xls'],FLUXES_CELL); end save([DAT{9},filesep,'4_RESULTS',filesep,'FLUXES.mat'],'FLUXES_CELL') % if ~isempty(DAT{10}) % if ~isnan(DAT{10}) % xlswrite([DAT{10},'\FLUXES.xlsx'],FLUXES_CELL) % save([DAT{10},'\FLUXES.mat'],'FLUXES_CELL') % end % end PARAMETERS_CELL=num2cell(PARAMETERS); PARAMETERS_CELL=[PARAMETERS_CHARS;PARAMETERS_CELL]; if ispc xlswrite([DAT{9},filesep,'4_RESULTS',filesep,'PARAMETERS.xlsx'],PARAMETERS_CELL) else xlwrite([DAT{9},filesep,'4_RESULTS',filesep,'PARAMETERS.xls'],PARAMETERS_CELL); end save([DAT{9},filesep,'4_RESULTS',filesep,'PARAMETERS.mat'],'PARAMETERS_CELL') % if ~isempty(DAT{10}) % if ~isnan(DAT{10}) % xlswrite([DAT{10},'\PARAMETERS.xlsx'],PARAMETERS_CELL) % save([DAT{10},'\PARAMETERS.mat'],'PARAMETERS_CELL') % end % end WARNINGS_ERRORS_CELL=num2cell(WARNINGS_ERRORS); WARNINGS_ERRORS_CELL=[WARNINGS_ERRORS_CHARS;WARNINGS_ERRORS_CELL]; if ispc xlswrite([DAT{9},filesep,'4_RESULTS',filesep,'WARNINGS_ERRORS.xlsx'],WARNINGS_ERRORS_CELL) else xlwrite([DAT{9},filesep,'4_RESULTS',filesep,'WARNINGS_ERRORS.xlsx'],WARNINGS_ERRORS_CELL); end save([DAT{9},filesep,'4_RESULTS',filesep,'WARNINGS_ERRORS.mat'],'WARNINGS_ERRORS_CELL') % if ~isempty(DAT{10}) % if ~isnan(DAT{10}) % xlswrite([DAT{10},'\WARNINGS_ERRORS.xlsx'],WARNINGS_ERRORS_CELL) % save([DAT{10},'\WARNINGS_ERRORS.mat'],'WARNINGS_ERRORS_CELL') % end % end FITPARAMS_CELL=num2cell(FITPARAMS); FITPARAMS_CELL=[FITPARAMS_CHARS;FITPARAMS_CELL]; if ispc xlswrite([DAT{9},filesep,'4_RESULTS',filesep,'FITPARAMS.xlsx'],FITPARAMS_CELL) else xlwrite([DAT{9},filesep,'4_RESULTS',filesep,'FITPARAMS.xls'],FITPARAMS_CELL); end save([DAT{9},filesep,'4_RESULTS',filesep,'FITPARAMS.mat'],'FITPARAMS_CELL') % if ~isempty(DAT{10}) % if ~isnan(DAT{10}) % xlswrite([DAT{10},'\FLUXES.xlsx'],FLUXES_CELL) % save([DAT{10},'\FLUXES.mat'],'FLUXES_CELL') % end % end catch me txtlog=errordisp(SCRIPT_LEVEL,fname,txtlog,me,[]); runok=0; WS=ws2struct();save([errordir,filesep,'workspace_',datestr(now,'yyyymmdd_HHMMSS_FFF'),'_PREOVI_OutputSynthesis_error.mat'],'WS') end end