docutils.nodesdocument)}}( attributes}(backrefs]ids]classes]sourceGD:\Mariano\misc\ecg-kit\help\sphinx\source\ECG_heartbeat_classifier.rstnames]dupnames]uids}(see-alsohsection)}}(h}(h]see alsoah]h ]hah ]h]utagnamehsourcehhh rawsourcelineK܌children](htitle)}}(h}(h]h]h ]h ]h]uh#h*h$hhhh%See Alsoh'Kh(]hTextSee Also}}(h%h5parenth-ubah>hubh block_quote)}}(h}(h]h]h ]h ]h]uh#h?h$hhhh%h&h'Nh(]h paragraph)}}(h}(h]h]h ]h ]h]uh#hKh$hh%^:doc:`ECGtask ` \| :doc:`QRS detection ` \| :doc:`examples `h'Kh(](sphinx.addnodes pending_xref)}}(h}(h]refwarnh ]h ]reftypedocrefdocECG_heartbeat_classifierh] refexplicith] refdomainh& reftargetECGtaskuh#hYh$hh%:doc:`ECGtask `h'Kh(]hliteral)}}(h}(h]h]h ]h ](xrefhdeh]uh#hoh%hmh(]h8ECGtask}}(h%h&h>hrubah>h\ubah>hNubh8 | }}(h% \| h>hNubhZ)}}(h}(h]h`h ]h ]reftypedochehfh] refexplicith] refdomainh&hk QRS_detectionuh#hYh$hh%$:doc:`QRS detection `h'Kh(]hp)}}(h}(h]h]h ]h ](hyheh]uh#hoh%hh(]h8 QRS detection}}(h%h&h>hubah>hubah>hNubh8 | }}(h% \| h>hNubhZ)}}(h}(h]h`h ]h ]reftypedochehfh] refexplicith] refdomainh&hkexamplesuh#hYh$hh%:doc:`examples `h'Kh(]hp)}}(h}(h]h]h ]h ](hyheh]uh#hoh%hh(]h8examples}}(h%h&h>hubah>hubah>hNubeh>hBubah>hubhsubstitution_definition)}}(h}(h]image4ah]h ]h ]h]uh#hh$hhhh%H.. |image4| image:: 2D__Mariano_misc_a2hbc_doc_expert_user_interface.pngh'Kh(]himage)}}(h}(h]h ]h ]uri42D__Mariano_misc_a2hbc_doc_expert_user_interface.png candidates}*hsh]h]althuh#hh%hubah>hubeh>h)}}(h}(h]ecg heartbeat classificationah]h ]ecg-heartbeat-classificationah ]h]uh#hh$hhhh%h&h'Kh(](h+)}}(h}(h]h]h ]h ]h]uh#h*h$hhhh%ECG heartbeat classificationh'Kh(]h8ECG heartbeat classification}}(h%jh>hubah>hubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%KThis document describes how to classify heartbeats according to its origin.h'Kh(]h8KThis document describes how to classify heartbeats according to its origin.}}(h%jh>j ubah>hubh)}}(h}(h] descriptionah]h ] descriptionah ]h]uh#hh$hhhh%h&h'K h(](h+)}}(h}(h]h]h ]h ]h]uh#h*h$hhhh% Descriptionh'K h(]h8 Description}}(h%j-h>j%ubah>jubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%This task implements a heartbeat classifier that follows the `EC-57 AAMI recommendation `__ classifying heartbeats into four classes:h'K h(](h8=This task implements a heartbeat classifier that follows the }}(h%=This task implements a heartbeat classifier that follows the h>j5ubh reference)}}(h}(h]h ]h ]refuri\http://marketplace.aami.org/eseries/scriptcontent/docs/Preview%20Files/EC57_1212_preview.pdfh]h]nameEC-57 AAMI recommendationuh#jEh%|`EC-57 AAMI recommendation `__h(]h8EC-57 AAMI recommendation}}(h%h&h>jHubah>j5ubh8* classifying heartbeats into four classes:}}(h%* classifying heartbeats into four classes:h>j5ubeh>jubh bullet_list)}}(h}(h]h ]h ]h]bullet-h]uh#jah$hhhh%h&h'Kh(](h list_item)}}(h}(h]h]h ]h ]h]uh#joh$hhhh% **N** normalh'Nh(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%jzh'Kh(](hstrong)}}(h}(h]h]h ]h ]h]uh#jh%**N**h(]h8N}}(h%h&h>jubah>j}ubh8 normal}}(h% normalh>j}ubeh>jrubah>jdubjp)}}(h}(h]h]h ]h ]h]uh#joh$hhhh%**S** supraventricularh'Nh(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%jh'Kh(](j)}}(h}(h]h]h ]h ]h]uh#jh%**S**h(]h8S}}(h%h&h>jubah>jubh8 supraventricular}}(h% supraventricularh>jubeh>jubah>jdubjp)}}(h}(h]h]h ]h ]h]uh#joh$hhhh%**V** ventricularh'Nh(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%jh'Kh(](j)}}(h}(h]h]h ]h ]h]uh#jh%**V**h(]h8V}}(h%h&h>jubah>jubh8 ventricular}}(h% ventricularh>jubeh>jubah>jdubjp)}}(h}(h]h]h ]h ]h]uh#joh$hhhh%'**F** fusion of normal and ventricular h'Nh(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%&**F** fusion of normal and ventricularh'Kh(](j)}}(h}(h]h]h ]h ]h]uh#jh%**F**h(]h8F}}(h%h&h>j ubah>jubh8! fusion of normal and ventricular}}(h%! fusion of normal and ventricularh>jubeh>jubah>jdubeh>jubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%Certain background and introduction to this topic is included in my `PhD thesis `__.h'Kh(](h8DCertain background and introduction to this topic is included in my }}(h%DCertain background and introduction to this topic is included in my h>j!ubjF)}}(h}(h]h ]h ]jN`__h(]h8 PhD thesis}}(h%h&h>j2ubah>j!ubh8.}}(h%.h>j!ubeh>jubeh>hubh)}}(h}(h]input argumentsah]h ]input-argumentsah ]h]uh#hh$hhhh%h&h'Kh(](h+)}}(h}(h]h]h ]h ]h]uh#h*h$hhhh%Input Argumentsh'Kh(]h8Input Arguments}}(h%j_h>jWubah>jKubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%Y``progress_handle`` — Used to track the progress within your function. ``[] (default)``h'Kh(](hp)}}(h}(h]h]h ]h ]h]uh#hoh%``progress_handle``h(]h8progress_handle}}(h%h&h>jrubah>jgubh86 — Used to track the progress within your function. }}(h%6 — Used to track the progress within your function. h>jgubhp)}}(h}(h]h]h ]h ]h]uh#hoh%``[] (default)``h(]h8 [] (default)}}(h%h&h>jubah>jgubeh>jKubh@)}}(h}(h]h]h ]h ]h]uh#h?h$hhhh%h&h'Nh(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%progress\_handle, is a handle to a :doc:`progress\_bar ` object, that can be used to track the progress within your function.h'Kh(](h8"progress_handle, is a handle to a }}(h%#progress\_handle, is a handle to a h>jubhZ)}}(h}(h]h`h ]h ]reftypedochehfh] refexplicith] refdomainh&hk progress_baruh#hYh$hh%#:doc:`progress\_bar `h'Kh(]hp)}}(h}(h]h]h ]h ](hyjeh]uh#hoh%jh(]h8 progress_bar}}(h%h&h>jubah>jubah>jubh8E object, that can be used to track the progress within your function.}}(h%E object, that can be used to track the progress within your function.h>jubeh>jubah>jKubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%J``tmp_path`` — The path to store temporary data. ``tempdir() (default)``h'K h(](hp)}}(h}(h]h]h ]h ]h]uh#hoh% ``tmp_path``h(]h8tmp_path}}(h%h&h>jubah>jubh8' — The path to store temporary data. }}(h%' — The path to store temporary data. h>jubhp)}}(h}(h]h]h ]h ]h]uh#hoh%``tempdir() (default)``h(]h8tempdir() (default)}}(h%h&h>jubah>jubeh>jKubh@)}}(h}(h]h]h ]h ]h]uh#h?h$hhhh%h&h'Nh(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%/Full path to a directory with write privileges.h'K"h(]h8/Full path to a directory with write privileges.}}(h%jh>jubah>j ubah>jKubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%r```payload`` — A structure to provide audited heartbeat detections to the classifier algorithm. ``[] (default)``h'K$h(](hp)}}(h}(h]h]h ]h ]h]uh#hoh% ```payload``h(]h8`payload}}(h%h&h>j.ubah>j#ubh8V — A structure to provide audited heartbeat detections to the classifier algorithm. }}(h%V — A structure to provide audited heartbeat detections to the classifier algorithm. h>j#ubhp)}}(h}(h]h]h ]h ]h]uh#hoh%``[] (default)``h(]h8 [] (default)}}(h%h&h>jDubah>j#ubeh>jKubh@)}}(h}(h]h]h ]h ]h]uh#h?h$hhhh%h&h'Nh(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%This variable is useful to pass automatic or corrected QRS detections to the classification task. This can be performed as shown in the following example:h'K&h(]h8This variable is useful to pass automatic or corrected QRS detections to the classification task. This can be performed as shown in the following example:}}(h%jfh>j^ubah>jTubah>jKubh literal_block)}}(h}(h]h ]h ]codeah]h] xml:spacepreserveuh#jmh$hhhh%cached_filenames = ECGw.GetCahchedFileName({'QRS_corrector' 'QRS_detection'}); ECGw.ECGtaskHandle.payload = load(cached_filenames{1});h'K.h(]h8cached_filenames = ECGw.GetCahchedFileName({'QRS_corrector' 'QRS_detection'}); ECGw.ECGtaskHandle.payload = load(cached_filenames{1});}}(h%cached_filenames = ECGw.GetCahchedFileName({'QRS_corrector' 'QRS_detection'}); ECGw.ECGtaskHandle.payload = load(cached_filenames{1});h>jpubah>jKubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%K``mode`` — Set the classification mode of operation. ``'auto' (default)``h'K/h(](hp)}}(h}(h]h]h ]h ]h]uh#hoh%``mode``h(]h8mode}}(h%h&h>jubah>jubh8/ — Set the classification mode of operation. }}(h%/ — Set the classification mode of operation. h>jubhp)}}(h}(h]h]h ]h ]h]uh#hoh%``'auto' (default)``h(]h8'auto' (default)}}(h%h&h>jubah>jubeh>jKubh@)}}(h}(h]h]h ]h ]h]uh#h?h$Nhhh%h&h'Nh(](hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%0A control string with any of the following namesh'K1h(]h80A control string with any of the following names}}(h%jh>jubah>jubjb)}}(h}(h]h ]h ]h]jkjlh]uh#jah%h&h(](jp)}}(h}(h]h]h ]h ]h]uh#joh%A'auto', this mode makes the algorithm operate in automatic mode. h(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%@'auto', this mode makes the algorithm operate in automatic mode.h'K3h(]h8@'auto', this mode makes the algorithm operate in automatic mode.}}(h%jh>jubah>jubah>jubjp)}}(h}(h]h]h ]h ]h]uh#joh%'slightly-assisted', this mode requires that an expert labels several representative examples, when the algorithm does not reach a confidence level to do it automatically. h(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%'slightly-assisted', this mode requires that an expert labels several representative examples, when the algorithm does not reach a confidence level to do it automatically.h'K5h(]h8'slightly-assisted', this mode requires that an expert labels several representative examples, when the algorithm does not reach a confidence level to do it automatically.}}(h%jh>jubah>jubah>jubjp)}}(h}(h]h]h ]h ]h]uh#joh%x'assisted', this mode is completely assisted. An expert must label all the representative heartbeats from each cluster. h(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%w'assisted', this mode is completely assisted. An expert must label all the representative heartbeats from each cluster.h'K9h(]h8w'assisted', this mode is completely assisted. An expert must label all the representative heartbeats from each cluster.}}(h%j"h>jubah>jubah>jubeh>jubeh>jKubeh>hubh)}}(h}(h]examplesah]h ]examplesah ]h]uh#hh$hhhh%h&h'K=h(](h+)}}(h}(h]h]h ]h ]h]uh#h*h$hhhh%Examplesh'K=h(]h8Examples}}(h%j>h>j6ubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%The first example shows the simplest setup of the *ECGtask\_heartbeat\_classifier* object, while at the end of this section a complete example with a real signal is shown.h'K?h(](h82The first example shows the simplest setup of the }}(h%2The first example shows the simplest setup of the h>jFubhemphasis)}}(h}(h]h]h ]h ]h]uh#jVh% *ECGtask\_heartbeat\_classifier*h(]h8ECGtask_heartbeat_classifier}}(h%h&h>jYubah>jFubh8Y object, while at the end of this section a complete example with a real signal is shown.}}(h%Y object, while at the end of this section a complete example with a real signal is shown.h>jFubeh>j*ubjn)}}(h}(h]h ]h ]jvah]h]jyjzuh#jmh$hhhh%% with the task name ECG_w.ECGtaskHandle = 'ECG_heartbeat_classifier'; % or create an specific handle to have more control ECGt = ECGtask_heartbeat_classifier();h'KIh(]h8% with the task name ECG_w.ECGtaskHandle = 'ECG_heartbeat_classifier'; % or create an specific handle to have more control ECGt = ECGtask_heartbeat_classifier();}}(h%% with the task name ECG_w.ECGtaskHandle = 'ECG_heartbeat_classifier'; % or create an specific handle to have more control ECGt = ECGtask_heartbeat_classifier();h>joubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%(and then you are ready to setup the taskh'KJh(]h8(and then you are ready to setup the task}}(h%jh>jubah>j*ubjn)}}(h}(h]h ]h ]jvah]h]jyjzuh#jmh$hhhh%X % select a mode, automatic mode does not require assistance ECGt.mode = 'auto'; % this is to use QRS detection previously calculated cached_filenames = ECG_all_wrappers(ii).GetCahchedFileName({'QRS_corrector' 'QRS_detection'}); ECGt.payload = load(cached_filenames{1})h'KSh(]h8X % select a mode, automatic mode does not require assistance ECGt.mode = 'auto'; % this is to use QRS detection previously calculated cached_filenames = ECG_all_wrappers(ii).GetCahchedFileName({'QRS_corrector' 'QRS_detection'}); ECGt.payload = load(cached_filenames{1})}}(h%X % select a mode, automatic mode does not require assistance ECGt.mode = 'auto'; % this is to use QRS detection previously calculated cached_filenames = ECG_all_wrappers(ii).GetCahchedFileName({'QRS_corrector' 'QRS_detection'}); ECGt.payload = load(cached_filenames{1})h>jubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%AFinally set the task to the wrapper object, and execute the task.h'KTh(]h8AFinally set the task to the wrapper object, and execute the task.}}(h%jh>jubah>j*ubjn)}}(h}(h]h ]h ]jvah]h]jyjzuh#jmh$hhhh%:ECG_w.ECGtaskHandle= ECGt; % set the ECG task ECG_w.Run();h'KZh(]h8:ECG_w.ECGtaskHandle= ECGt; % set the ECG task ECG_w.Run();}}(h%:ECG_w.ECGtaskHandle= ECGt; % set the ECG task ECG_w.Run();h>jubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%qThis example shows in first place, the previous configuration used in recording 208 from MIT Arrhythmia database.h'K[h(]h8qThis example shows in first place, the previous configuration used in recording 208 from MIT Arrhythmia database.}}(h%jh>jubah>j*ubjn)}}(h}(h]h ]h ]jvah]h]jyjzuh#jmh$hhhh%X>> ECG_w = ECGwrapper( ... 'recording_name', 'some_path\208', ... 'recording_format', 'MIT', ... 'ECGtaskHandle', 'ECG_heartbeat_classifier', ... )ECG_w = ############################ # ECGwrapper object config # ############################ +ECG recording: some_path\208 (auto) +PID: 1/1 +Repetitions: 1 +Partition mode: ECG_overlapped +Function name: ECG_heartbeat_classifier +Processed: false >> ECG_w.Run();h'Kqh(]h8X>> ECG_w = ECGwrapper( ... 'recording_name', 'some_path\208', ... 'recording_format', 'MIT', ... 'ECGtaskHandle', 'ECG_heartbeat_classifier', ... )ECG_w = ############################ # ECGwrapper object config # ############################ +ECG recording: some_path\208 (auto) +PID: 1/1 +Repetitions: 1 +Partition mode: ECG_overlapped +Function name: ECG_heartbeat_classifier +Processed: false >> ECG_w.Run();}}(h%X>> ECG_w = ECGwrapper( ... 'recording_name', 'some_path\208', ... 'recording_format', 'MIT', ... 'ECGtaskHandle', 'ECG_heartbeat_classifier', ... )ECG_w = ############################ # ECGwrapper object config # ############################ +ECG recording: some_path\208 (auto) +PID: 1/1 +Repetitions: 1 +Partition mode: ECG_overlapped +Function name: ECG_heartbeat_classifier +Processed: false >> ECG_w.Run();h>jubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%sYou can follow the evolution in the progress bar, and after a while, it ends and display the classification resultsh'Krh(]h8sYou can follow the evolution in the progress bar, and after a while, it ends and display the classification results}}(h%jh>jubah>j*ubjn)}}(h}(h]languagenoneh ]h ]linenoshighlight_args}h]h]jyjzuh#jmh$hhhh%XConfiguration ------------- + Recording: ... \example recordings\208.dat (MIT) + Mode: auto (12 clusters, 1 iterations, 75% cluster-presence)   True            | Estimated Labels   Labels          | Normal Suprav Ventri Unknow| Totals  -----------------|----------------------------|-------   Normal          | 1567      6     13      0  | 1586   Supraventricular|    2      0      0      0  |    2   Ventricular     |  255      8   1102      0  | 1365   Unknown         |    2      0      0      0  |    2  -----------------|----------------------------|-------   Totals          | 1826     14   1115      0  | 2955 Balanced Results for --------------------- | Normal    || Supravent || Ventricul ||           TOTALS            | |  Se   +P  ||  Se   +P  ||  Se   +P  ||   Acc   |   Se    |   +P    | |  99%  45% ||   0%   0% ||  81%  99% ||   60%   |   60%   |   48%   | Unbalanced Results for ----------------------- | Normal    || Supravent || Ventricul ||           TOTALS            | |  Se   +P  ||  Se   +P  ||  Se   +P  ||   Acc   |   Se    |   +P    | |  99%  86% ||   0%   0% ||  81%  99% ||   90%   |   60%   |   62%   |h'Kuh(]h8XConfiguration ------------- + Recording: ... \example recordings\208.dat (MIT) + Mode: auto (12 clusters, 1 iterations, 75% cluster-presence)   True            | Estimated Labels   Labels          | Normal Suprav Ventri Unknow| Totals  -----------------|----------------------------|-------   Normal          | 1567      6     13      0  | 1586   Supraventricular|    2      0      0      0  |    2   Ventricular     |  255      8   1102      0  | 1365   Unknown         |    2      0      0      0  |    2  -----------------|----------------------------|-------   Totals          | 1826     14   1115      0  | 2955 Balanced Results for --------------------- | Normal    || Supravent || Ventricul ||           TOTALS            | |  Se   +P  ||  Se   +P  ||  Se   +P  ||   Acc   |   Se    |   +P    | |  99%  45% ||   0%   0% ||  81%  99% ||   60%   |   60%   |   48%   | Unbalanced Results for ----------------------- | Normal    || Supravent || Ventricul ||           TOTALS            | |  Se   +P  ||  Se   +P  ||  Se   +P  ||   Acc   |   Se    |   +P    | |  99%  86% ||   0%   0% ||  81%  99% ||   90%   |   60%   |   62%   |}}(h%h&h>jubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%XThis is possible because this recording include the expert annotations, or ''ground truth'', for each heartbeat. The manual annotations in MIT format are typically included in ''.atr'' files (in this case ''208.atr''). Now you can try ''slightly-assisted'' mode, where the algorithm may ask you for help in case of cluster heterogeneity. If this happens, a window like this will appear:h'Kh(]h8XThis is possible because this recording include the expert annotations, or ''ground truth'', for each heartbeat. The manual annotations in MIT format are typically included in ''.atr'' files (in this case ''208.atr''). Now you can try ''slightly-assisted'' mode, where the algorithm may ask you for help in case of cluster heterogeneity. If this happens, a window like this will appear:}}(h%jh>jubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%|image4|h'Kh(]h)}}(h}(h]h ]h ]urihh}hhsh]h]althuh#hh$Nhhh%hh'Nh(]h>jubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%XIn this window the algorithm is asking you to label the centroid of the cluster, that is showed in the left panel. In the top of each panel some information is showed, as the amount of heartbeats in the current cluster. In the middle panel, you have some examples of heartbeats close to the centroid in a likelihood sense. The same is repeated in the right panel, but with examples far from the centroid. This manner you can have an idea of the dispersion of heartbeats within a cluster. Large differences across the panels indicates large cluster dispersion. If you decide to label the cluster, you can use one of the 4 buttons on your right. The unknown class is reserved for the cases where you can not make a confident decision. At the same time, in the command window, a suggestion appears:h'Kh(]h8XIn this window the algorithm is asking you to label the centroid of the cluster, that is showed in the left panel. In the top of each panel some information is showed, as the amount of heartbeats in the current cluster. In the middle panel, you have some examples of heartbeats close to the centroid in a likelihood sense. The same is repeated in the right panel, but with examples far from the centroid. This manner you can have an idea of the dispersion of heartbeats within a cluster. Large differences across the panels indicates large cluster dispersion. If you decide to label the cluster, you can use one of the 4 buttons on your right. The unknown class is reserved for the cases where you can not make a confident decision. At the same time, in the command window, a suggestion appears:}}(h%j8h>j0ubah>j*ubjn)}}(h}(h]jnoneh ]h ]jj}h]h]jyjzuh#jmh$hhhh%Configuration ------------- + Recording: .\example recordings\208.dat (MIT) + Mode: assisted (3 clusters, 1 iterations, 75% cluster-presence) Suggestion: Normalh'Kh(]h8Configuration ------------- + Recording: .\example recordings\208.dat (MIT) + Mode: assisted (3 clusters, 1 iterations, 75% cluster-presence) Suggestion: Normal}}(h%h&h>j@ubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%X@This means that the centroid heartbeat in the ''.atr'' file is labeled as ''Normal''. You will see this suggestion for each cluster analyzed, if there are annotations previously available. You are informed about the percentage of heartbeats already labeled with a progress bar, in the bottom of the control panel window.h'Kh(]h8X@This means that the centroid heartbeat in the ''.atr'' file is labeled as ''Normal''. You will see this suggestion for each cluster analyzed, if there are annotations previously available. You are informed about the percentage of heartbeats already labeled with a progress bar, in the bottom of the control panel window.}}(h%jZh>jRubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%XIn case you believe that a cluster includes several classes of heartbeats, you can decide to ''skip'' the classification, and try to re-cluster those heartbeats in the next iteration. You are free to perform as many iterations as you decide, by skipping clusters. The refresh button resamples heartbeats close and far from the centroid, and then redraw the middle and right panels. This feature is useful for large clusters.h'Kh(]h8XIn case you believe that a cluster includes several classes of heartbeats, you can decide to ''skip'' the classification, and try to re-cluster those heartbeats in the next iteration. You are free to perform as many iterations as you decide, by skipping clusters. The refresh button resamples heartbeats close and far from the centroid, and then redraw the middle and right panels. This feature is useful for large clusters.}}(h%jjh>jbubah>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%You can check the result of this task for every heartbeat in the recording using the :doc:`visualization functions `.h'Kh(](h8UYou can check the result of this task for every heartbeat in the recording using the }}(h%UYou can check the result of this task for every heartbeat in the recording using the h>jrubhZ)}}(h}(h]h`h ]h ]reftypedochehfh] refexplicith] refdomainh&hkplot_ecg_stripuh#hYh$hh%/:doc:`visualization functions `h'Kh(]hp)}}(h}(h]h]h ]h ](hyjeh]uh#hoh%jh(]h8visualization functions}}(h%h&h>jubah>jubah>jrubh8.}}(h%jIh>jrubeh>j*ubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%\Also check this :ref:`example ` for further information.h'Kh(](h8Also check this }}(h%Also check this h>jubhZ)}}(h}(h]h`h ]h ]reftyperefhehfh] refexplicith] refdomainstdhk"automatic_heartbeat_classificationuh#hYh$hh%3:ref:`example `h'Kh(]hinline)}}(h}(h]h]h ]h ](hyjstd-refeh]uh#jh%jh(]h8example}}(h%h&h>jubah>jubah>jubh8 for further information.}}(h% for further information.h>jubeh>j*ubhtarget)}}(h}(h]h ]h ]h]h]refidclassifier-det-result-formatuh#jh$hhhh%!.. _Classifier_det_result_format:h'Kh(]h>j*ubeh>hubh)}}(expect_referenced_by_name}classifier_det_result_formatjsh}(h](results formatjeh]h ](results-formatjeh ]h]uh#hexpect_referenced_by_id}jjsh$hhhh%h&h'Kh(](h+)}}(h}(h]h]h ]h ]h]uh#h*h$hhhh%Results formath'Kh(]h8Results format}}(h%j h>jubah>jubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%XThe result file will have two variables, the annotation type or classification label ``anntyp``, containing a ``char`` label per heartbeat. And a vector of samples called ``time`` (in correspondence with ``anntyp``), with the occurrence of all heartbeats used in this task.h'Kh(](h8UThe result file will have two variables, the annotation type or classification label }}(h%UThe result file will have two variables, the annotation type or classification label h>jubhp)}}(h}(h]h]h ]h ]h]uh#hoh% ``anntyp``h(]h8anntyp}}(h%h&h>j"ubah>jubh8, containing a }}(h%, containing a h>jubhp)}}(h}(h]h]h ]h ]h]uh#hoh%``char``h(]h8char}}(h%h&h>j8ubah>jubh85 label per heartbeat. And a vector of samples called }}(h%5 label per heartbeat. And a vector of samples called h>jubhp)}}(h}(h]h]h ]h ]h]uh#hoh%``time``h(]h8time}}(h%h&h>jNubah>jubh8 (in correspondence with }}(h% (in correspondence with h>jubhp)}}(h}(h]h]h ]h ]h]uh#hoh% ``anntyp``h(]h8anntyp}}(h%h&h>jdubah>jubh8;), with the occurrence of all heartbeats used in this task.}}(h%;), with the occurrence of all heartbeats used in this task.h>jubeh>jubeh>hubh)}}(h}(h] more aboutah]h ] more-aboutah ]h]uh#hh$hhhh%h&h'Kh(](h+)}}(h}(h]h]h ]h ]h]uh#h*h$hhhh% More Abouth'Kh(]h8 More About}}(h%jh>jubah>jzubhL)}}(h}(h]h]h ]h ]h]uh#hKh$hhhh%AHere are some external references about heartbeat classification:h'Kh(]h8AHere are some external references about heartbeat classification:}}(h%jh>jubah>jzubjb)}}(h}(h]h ]h ]h]jkjlh]uh#jah$hhhh%h&h'Kh(](jp)}}(h}(h]h]h ]h ]h]uh#joh$hhhh%}`EC-57 AAMI recommendation `__ h'Nh(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%|`EC-57 AAMI recommendation `__h'Kh(]jF)}}(h}(h]h ]h ]jN\http://marketplace.aami.org/eseries/scriptcontent/docs/Preview%20Files/EC57_1212_preview.pdfh]h]nameEC-57 AAMI recommendationuh#jEh%jh(]h8EC-57 AAMI recommendation}}(h%h&h>jubah>jubah>jubah>jubjp)}}(h}(h]h]h ]h ]h]uh#joh$hhhh%D`EP limited `__ software h'Nh(]hL)}}(h}(h]h]h ]h ]h]uh#hKh$hh%C`EP limited `__ softwareh'Kh(](jF)}}(h}(h]h ]h ]jN)http://www.eplimited.com/confirmation.htmh]h]name EP limiteduh#jEh%:`EP limited `__h(]h8 EP limited}}(h%h&h>jubah>jubh8 software}}(h% softwareh>jubeh>jubah>jubeh>jzubeh>hubheh>hububj1j*hhjjjRjKj jjjjjzuautofootnote_refs]current_sourceNrefnames}id_startKtransform_messages]hsystem_message)}}(h}(h]levelKh ]h ]sourcehh]lineKh]typeINFOuh#jh%h&h(]hL)}}(h}(h]h]h ]h ]h]uh#hKh%h&h(]h8BHyperlink target "classifier-det-result-format" is not referenced.}}(h%h&h>j ubah>jubaubasettingsdocutils.frontendValues)}}( pep_base_url https://www.python.org/dev/peps/embed_stylesheetexpose_internalsNinput_encoding_error_handlerstrictdebugNstrip_commentsN_disable_configNpep_referencesN source_linkNfootnote_backlinksKrfc_referencesNsyntax_highlightlongstrict_visitorNfile_insertion_enabled _config_files]input_encoding utf-8-sig language_codeendump_internalsN_sourcehwarning_streamNoutput_encoding_error_handlerj: strip_classesN datestampN raw_enabledK generatorNrecord_dependenciesN sectnum_xformKgettext_compactcloak_email_addresses smart_quotes rfc_base_urlhttps://tools.ietf.org/html/ docinfo_xformKerror_encoding_error_handlerbackslashreplacepep_file_url_templatepep-%04derror_encodingcp850configN halt_levelK dump_settingsNdump_transformsN _destinationNauto_id_prefixid toc_backlinksentrysectsubtitle_xform id_prefixh&output_encodingutf-8 tab_widthKtrim_footnote_reference_spaceexit_status_levelKstrip_elements_with_classesN source_urlNh*N tracebackdump_pseudo_xmlN report_levelKdoctitle_xformenvNub footnote_refs}substitution_names}image4hs nametypes}(jONj.NhNjhNj~NjNjNusymbol_footnote_refs] current_lineNindirect_targets]hhsubstitution_defs}hhsnameids}(jOjRj.j1hhjjhhj~jjj jjusymbol_footnotes]h#hparse_messages]refids}j]jasreporterNh%h&symbol_footnote_startK transformerN footnotes] citation_refs} citations] autofootnotes]autofootnote_startK decorationNh(]haub.