ECG-Kit 1.0
(2,162 bytes)
%% Fetch the best QRS detections from an ECGtask_QRSdetections object
% Get the best QRS detections according to the ratios quality metric
% provided by the QRS detection task.
%
% Example
%
% [QRS_detections, str_delineation_chosen] = GetBestQRSdetections(payload)
%
% Arguments:
% +payload: [struct] REQUIRED
%
% An struct from loading the resulting mat file of a QRS
% detection task.
%
% Output:
% + QRS_detections: the detections indexes
%
% + str_delineation_chosen: The name or id of the QRS detection indexes.
%
% See also ECGwrapper
%
% Author: Mariano Llamedo Soria llamedom@electron.frba.utn.edu.ar
% Version: 0.1 beta
% Last update: 28/11/2014
% Birthdate : 28/11/2014
% Copyright 2008-2015
function [QRS_detections, str_delineation_chosen] = GetBestQRSdetections(payload)
QRS_detections = [];
str_delineation_chosen = [];
aux_fn = fieldnames(payload);
% prefer manually reviewed annotations corrected
aux_idx = find(cell2mat( cellfun(@(a)(~isempty(strfind(a, 'corrected_'))), aux_fn, 'UniformOutput', false)));
if( isempty(aux_idx) )
if( isfield(payload, 'series_quality') )
% choose the best ranked automatic detection
[~, aux_idx] = sort(payload.series_quality.ratios, 'descend' );
QRS_detections = payload.(payload.series_quality.AnnNames{aux_idx(1),1} ).(payload.series_quality.AnnNames{aux_idx(1),2});
str_delineation_chosen = payload.series_quality.AnnNames{aux_idx(1),1};
else
% choose the first of wavedet
aux_idx = find(cell2mat( cellfun(@(a)(~isempty(strfind(a, 'wavedet_'))), aux_fn, 'UniformOutput', false)));
if( isempty(aux_idx) )
disp_string_framed(2, 'Could not identify QRS detections in the input payload.');
return
else
QRS_detections = payload.(aux_fn{aux_idx(1)}).time;
str_delineation_chosen = aux_fn{aux_idx(1)};
end
end
else
% choose the first manually audited
QRS_detections = payload.(aux_fn{aux_idx(1)}).time;
str_delineation_chosen = aux_fn{aux_idx(1)};
end