Skip to content
Snippets Groups Projects
Commit 870d380a authored by Yves Gouriou's avatar Yves Gouriou
Browse files

In progress

Function that concatenates TSG structures
parent ced74e3f
No related branches found
No related tags found
No related merge requests found
function error = concatStructTSG( hMainFig, tsg_old )
error = 1;
% retrieve tsg struct
% -------------------
tsg = getappdata( hMainFig, 'tsg_data' );
% Get NO_CONTROL code value
% -------------------------
NO_CONTROL = tsg.qc.hash.NO_CONTROL.code;
%
DAYD = [tsg.DAYD; tsg_old.DAYD];
[DAYD, iOrder] = sort(DAYD);
tsg.DATE = [tsg.DATE; tsg_old.DATE];
tsg.DATE = tsg.DATE(iOrder,:);
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'LATX');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'LONX');
tsg = concatInt8Tsg( iOrder, NO_CONTROL, tsg, tsg_old, 'POSITION_QC');
%
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SPDC');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'PRES');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'FLOW');
%
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'CNDC');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'CNDC_STD');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'CNDC_CAL');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'CNDC_FREQ');
%
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSJT');
tsg = concatInt8Tsg( iOrder, NO_CONTROL, tsg, tsg_old, 'SSJT_QC');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSJT_STD');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSJT_CAL');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSJT_FREQ');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSJT_ADJUSTED');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSJT_ADJUSTED_ERROR');
tsg = concatInt8Tsg( iOrder, NO_CONTROL, tsg, tsg_old, 'SSJT_ADJUSTED_QC');
% % concatStrTsg( iOrder, tsg.SSJT_ADJUSTED_HIST, tsg_old.SSJT_ADJUSTED_HIST);
%
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSPS');
tsg = concatInt8Tsg( iOrder, NO_CONTROL, tsg, tsg_old, 'SSPS_QC');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSPS_STD');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSPS_CAL');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSPS_ADJUSTED');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSPS_ADJUSTED_ERROR');
tsg = concatInt8Tsg( iOrder, NO_CONTROL, tsg, tsg_old, 'SSPS_ADJUSTED_QC');
% % concatStrTsg( iOrder, tsg.SSPS_ADJUSTED_HIST, tsg_old.SSPS_ADJUSTED_HIST);
%
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSTP');
tsg = concatInt8Tsg( iOrder, NO_CONTROL, tsg, tsg_old, 'SSTP_QC');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSTP_CAL');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSTP_FREQ');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSTP_ADJUSTED');
tsg = concatNumTsg( iOrder, tsg, tsg_old, 'SSTP_ADJUSTED_ERROR');
tsg = concatInt8Tsg( iOrder, NO_CONTROL, tsg, tsg_old, 'SSTP_ADJUSTED_QC');
% % concatStrTsg( iOrder, tsg.SSTP_ADJUSTED_HIST, tsg_old.SSTP_ADJUSTED_HIST);
tsg.DAYD = DAYD;
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! reste traiter les doubles
% Test : suppress measurements made at the same date
% The comparison cannot be made using tsg.DAYD. This cannot be done using
% the Matlab Serial Date format as there can be
% some loss of precision.. Especially when a floating number was written in
% a file.
%
% Use tsg.DATE
% ------------------------------------------------------------------------
Y = str2num( tsg.DATE(:,1:4) );
M = str2num( tsg.DATE(:,5:6) );
D = str2num( tsg.DATE(:,7:8) );
H = str2num( tsg.DATE(:,9:10) );
M = str2num( tsg.DATE(:,11:12) );
S = str2num( tsg.DATE(:,13:14) );
date = datenum( [Y M D H M S] );
date_diff = find( diff( date ) == 0 );
if ~isempty( date_diff )
tsg.DAYD(date_diff) = [];
tsg.DATE(date_diff,:) = [];
tsg.LATX(date_diff) = [];
tsg.LONX(date_diff) = [];
tsg.POSITION_QC(date_diff) = [];
tsg.SPDC(date_diff) = [];
tsg.PRES(date_diff) = [];
tsg.FLOW(date_diff) = [];
tsg.CNDC(date_diff) = [];
tsg.CNDC_STD(date_diff) = [];
tsg.CNDC_CAL(date_diff) = [];
tsg.CNDC_FREQ(date_diff) = [];
tsg.SSJT(date_diff) = [];
tsg.SSJT_QC(date_diff) = [];
tsg.SSJT_STD(date_diff) = [];
tsg.SSJT_CAL(date_diff) = [];
tsg.SSJT_FREQ(date_diff) = [];
tsg.SSJT_ADJUSTED(date_diff) = [];
tsg.SSJT_ADJUSTED_ERROR(date_diff) = [];
tsg.SSJT_ADJUSTED_QC(date_diff) = [];
% tsg.SSJT_ADJUSTED_HIST(date_diff,:) = [];
tsg.SSPS(date_diff) = [];
tsg.SSPS_QC(date_diff) = [];
tsg.SSPS_STD(date_diff) = [];
tsg.SSPS_CAL(date_diff) = [];
tsg.SSPS_ADJUSTED(date_diff) = [];
tsg.SSPS_ADJUSTED_ERROR(date_diff) = [];
tsg.SSPS_ADJUSTED_QC(date_diff) = [];
% tsg.SSPS_ADJUSTED_HIST(date_diff,:) = [];
tsg.SSTP(date_diff) = [];
tsg.SSTP_QC(date_diff) = [];
tsg.SSTP_CAL(date_diff) = [];
tsg.SSTP_FREQ(date_diff) = [];
tsg.SSTP_ADJUSTED(date_diff) = [];
tsg.SSTP_ADJUSTED_ERROR(date_diff) = [];
tsg.SSTP_ADJUSTED_QC(date_diff) = [];
% tsg.SSTP_ADJUSTED_HIST(date_diff) = [];
end
setappdata( hMainFig, 'tsg_data', tsg );
% Traitement des donnes Externes (les chantillons discrets)
% -----------------------------------------------------------
tsg.DAYD_EXT = [tsg.DAYD_EXT; tsg_old.DAYD_EXT];
tsg.DATE_EXT = [tsg.DATE_EXT; tsg_old.DATE_EXT];
tsg.LATX_EXT = [tsg.LATX_EXT; tsg_old.LATX_EXT];
tsg.LONX_EXT = [tsg.LONX_EXT; tsg_old.LONX_EXT];
tsg.SSPS_EXT = [tsg.SSPS_EXT; tsg_old.SSPS_EXT];
tsg.SSPS_EXT_BOTTLE = strvcat(tsg.SSPS_EXT_BOTTLE, tsg_old.SSPS_EXT_BOTTLE);
tsg.SSPS_EXT_QC = [tsg.SSPS_EXT_QC; tsg_old.SSPS_EXT_QC];
tsg.SSPS_EXT_TYPE = strvcat(tsg.SSPS_EXT_TYPE, tsg_old.SSPS_EXT_TYPE);
tsg.SSPS_EXT_ANALDATE = strvcat(tsg.SSPS_EXT_ANALDATE,tsg_old.SSPS_EXT_ANALDATE);
tsg.SSTP_EXT = [tsg.SSTP_EXT; tsg_old.SSTP_EXT];
tsg.SSTP_EXT_QC = [tsg.SSTP_EXT_QC; tsg_old.SSTP_EXT_QC];
tsg.SSTP_EXT_TYPE = strvcat(tsg.SSTP_EXT_TYPE, tsg_old.SSTP_EXT_TYPE);
if ~isempty(tsg.DAYD_EXT)
[tsg.DAYD_EXT, iOrder] = sort(tsg.DAYD_EXT);
tsg.DATE_EXT = tsg.DATE_EXT(iOrder,:);
tsg.LATX_EXT = tsg.LATX_EXT(iOrder);
tsg.LONX_EXT = tsg.LONX_EXT(iOrder);
tsg.SSPS_EXT = tsg.SSPS_EXT(iOrder);
tsg.SSPS_EXT_QC = tsg.SSPS_EXT_QC(iOrder);
tsg.SSPS_EXT_BOTTLE = tsg.SSPS_EXT_BOTTLE(iOrder,:);
tsg.SSPS_EXT_TYPE = tsg.SSPS_EXT_TYPE(iOrder,:);
tsg.SSPS_EXT_ANALDATE = tsg.SSPS_EXT_ANALDATE(iOrder,:);
tsg.SSTP_EXT = tsg.SSTP_EXT(iOrder);
tsg.SSTP_EXT_QC = tsg.SSTP_EXT_QC(iOrder);
tsg.SSTP_EXT_TYPE = tsg.SSTP_EXT_TYPE(iOrder,:);
end
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! reste traiter les doubles
% Test : suppress measurements made at the same date
% The comparison cannot be made using tsg.DAYD_EXT. This cannot be done using
% the Matlab Serial Date format as there can be
% some loss of precision.. Especially when a floating number was written in
% a file.
%
% Use tsg.DATE_EXT
% ------------------------------------------------------------------------
if ~isempty( tsg.DATE_EXT )
Y = str2num( tsg.DATE_EXT(:,1:4) );
M = str2num( tsg.DATE_EXT(:,5:6) );
D = str2num( tsg.DATE_EXT(:,7:8) );
H = str2num( tsg.DATE_EXT(:,9:10) );
M = str2num( tsg.DATE_EXT(:,11:12) );
S = str2num( tsg.DATE_EXT(:,13:14) );
date = datenum( [Y M D H M S] );
date_diff = find( diff( date ) == 0 );
if ~isempty( date_diff )
tsg.DAYD_EXT(date_diff) = [];
tsg.DATE_EXT(date_diff,:) = [];
tsg.LATX_EXT(date_diff) = [];
tsg.LONX_EXT(date_diff) = [];
tsg.SSPS_EXT(date_diff) = [];
tsg.SSPS_EXT_QC(date_diff) = [];
tsg.SSPS_EXT_BOTTLE(date_diff,:) = [];
tsg.SSPS_EXT_TYPE(date_diff,:) = [];
tsg.SSPS_EXT_ANALDATE(date_diff,:)= [];
tsg.SSTP_EXT(date_diff) = [];
tsg.SSTP_EXT_QC(date_diff) = [];
tsg.SSTP_EXT_TYPE(date_diff,:) = [];
end
end
setappdata( hMainFig, 'tsg_data', tsg );
end
% *************************************************************************
function tsg = concatNumTsg( iOrder, tsg, tsg_old, Para)
if isempty(tsg.(Para)) && isempty(tsg_old.(Para))
return;
elseif isempty(tsg.(Para))
tsg.(Para) = NaN * ones( size( tsg.DAYD ) );
elseif isempty(tsg_old.(Para))
tsg_old.(Para) = NaN * ones( size( tsg_old.DAYD ) );
end
tsg.(Para) = [tsg.(Para); tsg_old.(Para)];
tsg.(Para) = tsg.(Para)(iOrder);
end
% *************************************************************************
function tsg = concatInt8Tsg( iOrder, NO_CONTROL, tsg, tsg_old, Para)
if isempty(tsg.(Para)) && isempty(tsg_old.(Para))
return;
elseif isempty(tsg.(Para))
tsg.(Para) = int8(NO_CONTROL) * int8(ones( size( tsg.DAYD )));
elseif isempty(tsg_old.(Para))
tsg_old.(Para) = int8(NO_CONTROL) * int8(ones( size( tsg_old.DAYD )));
end
tsg.(Para) = [tsg.(Para); tsg_old.(Para)];
tsg.(Para) = tsg.(Para)(iOrder);
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment