function [] = automaticQC( hMainFig ) % % function [] = automaticQC( hTsgGUI ) % % Automatic controlon TSG time series % % Test for : % 1 - % 2 - Increasing date % 3 - SSS < 0 and SSS > 50 % % TODO : Create a log file with the results of these tests % % $Id$ % Get application data : TSG structure % -------------------------------------- tsg = getappdata( hMainFig, 'tsg_data'); % Get tsg fieldnames % ------------------ tsgNames = fieldnames(tsg); nbFieldNames = length( tsgNames ); % Get the size of the times series array % -------------------------------------- tsgLength = length( tsg.DAYD ); % get MISSING_VALUE from tsg.qc.hash % ----------------------------------- MISSING_VALUE = tsg.qc.hash.MISSING_VALUE.code; % ************************** TEST 1 *********************************** % % Detect records with date and time at NaN. % This is done in the reading function % ************************** TEST 2 *********************************** % % Test if the records are correctly sorted : increasing date % Delete the records with inversion % % Find negative differences between successive dates nbBadDate = 0; difDate = diff( tsg.DAYD ); ind = find( difDate < 0 ); while ~isempty( ind ) % if DAYD is of length N, DIFF is of length N-1 % Need to add one to the indices % --------------------------------------------- ind = ind + 1; % Store the number of bad date % ----------------------------- nbBadDate = nbBadDate + length( ind ); % Delete bad records % ------------------ for i = 1 : nbFieldNames para = char( tsgNames{i} ); % Find array of length DAYD in the TSG structure % ---------------------------------------------- if length( tsg.(para) ) == tsgLength tsg.(para)(ind,:) = []; end end % Tsg length has been modified % ---------------------------- tsgLength = tsgLength - length( ind ); difDate = diff( tsg.DAYD ); ind = find( difDate < 0 ); end % Keep the number of data not in increasing date % ---------------------------------------------- tsg.report.sortdate = nbBadDate; % NO_VALUE code % ------------- ind = find( isnan(tsg.SSPS) == 1); if ~isempty( ind ) tsg.SSPS_QC(ind) = MISSING_VALUE; end ind = find( isnan(tsg.SSJT) == 1); if ~isempty( ind ) tsg.SSJT_QC(ind) = MISSING_VALUE; end ind = find( isnan(tsg.SSTP) == 1); if ~isempty( ind ) tsg.SSTP_QC(ind) = MISSING_VALUE; end % Save the data in the application GUI % ------------------------------------ setappdata( hMainFig, 'tsg_data', tsg ); end