docutils.nodesdocument)}}(reporterNsymbol_footnote_startKcurrent_sourceN footnote_refs}transform_messages]tagnameh decorationN transformerN rawsourcechildren]hsection)}}(parenthhhh](htitle)}}(hhhECGtask attributes}(ids]classes]backrefs]names]dupnames]uh]hTextECGtask}}(hhhh ubasource6D:\Mariano\misc\ecg-kit\help\sphinx\source\ECGtask.rsth hlineKhhubh paragraph)}}(hhhrPerform an specific task to an ECG signal. This document defines the standard interface that tasks must implement.h]h/rPerform an specific task to an ECG signal. This document defines the standard interface that tasks must implement.}}(hh;hh=ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubhcompound)}}(hhhhh]sphinx.addnodestoctree)}}(hhMhhh5h6h!}(numberedKh%]h+] includehiddenhECGtaskh#]captionN includefiles]( QRS_detection QRScorrectorABP_PPG_peak_detectionABP_PPG_peak_correctionECGdelineationECG_delineation_correctorECG_heartbeat_classifierArbitrary_taskseh)]h']maxdepthKglob titlesonlyhiddenentries]( QRS detectionh`QRS correctionhaABP/PPG peak detectionhbABP/PPG peak correctionhcECG delineationhdECG delineation correctionheHeartbeat classificationhfArbitrary taskshgeuh]h hQh7Kubah!}(h#]h%]toctree-wrapperah']h)]h+]uh5h6h hJh7Nhhubh)}}(hhhhh](h)}}(hhh Descriptionh!}(h#]h%]h']h)]h+]uh]h/ Description}}(hhhhubah5h6h hh7Khhubh9)}}(hhhXThe ECGtask is an abstract class definition where the minimum interface requirements are specified, in order that your own tasks can be safely plugged into `ECGwrapper ` objects. As an example of how to use this interface, see the derived classes for :doc:`QRS detection ` and :doc:`ECG delineation `, among others that can be listed with the :doc:`list\_all\_ECGtask ` function:h](h/The ECGtask is an abstract class definition where the minimum interface requirements are specified, in order that your own tasks can be safely plugged into }}(hhhThe ECGtask is an abstract class definition where the minimum interface requirements are specified, in order that your own tasks can be safely plugged into ubhtitle_reference)}}(hhh`ECGwrapper `h]h/ECGwrapper }}(hhhhubah!}(h#]h%]h']h)]h+]uh hubh/R objects. As an example of how to use this interface, see the derived classes for }}(hhhR objects. As an example of how to use this interface, see the derived classes for ubhP pending_xref)}}(hhh$:doc:`QRS detection `h]hliteral)}}(hhhhh]h/ QRS detection}}(hhhhubah!}(h#]h%](xrefdoceh']h)]h+]uh hubah!}(refdoch[h%] reftarget QRS_detectionh']reftypehh#]h+] refdomainhrefwarn refexplicith)]uh5h6h hh7Kubh/ and }}(hhh and ubh)}}(hhh':doc:`ECG delineation `h]h)}}(hhhhh]h/ECG delineation}}(hhhhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ECGdelineationh']reftypehh#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7Kubh/+, among others that can be listed with the }}(hhh+, among others that can be listed with the ubh)}}(hhh,:doc:`list\_all\_ECGtask `h]h)}}(hjhjh]h/list_all_ECGtask}}(hjhhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌list_all_ECGtaskh']reftypej"h#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7Kubh/ function:}}(hhh function:ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubh bullet_list)}}(hhhhh!}(h%]bullet-h']h#]h+]h)]uh](h list_item)}}(hj?h$:doc:`QRS detection `h!}(h#]h%]h']h)]h+]uh]h9)}}(hjMhjOh]h)}}(hjXhjOh]h)}}(hj\hjOh]h/ QRS detection}}(hj`hhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ QRS_detectionh']reftypejkh#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7K"ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K"ubah5h6h jJh7NhhubjK)}}(hj?h$:doc:`QRS correction `h!}(h#]h%]h']h)]h+]uh]h9)}}(hjhjh]h)}}(hjhjh]h)}}(hjhjh]h/QRS correction}}(hjhhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ QRScorrectorh']reftypejh#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7K#ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K#ubah5h6h jJh7NhhubjK)}}(hj?h':doc:`ECG delineation `h!}(h#]h%]h']h)]h+]uh]h9)}}(hjhjh]h)}}(hjhjh]h)}}(hjhjh]h/ECG delineation}}(hjhhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ECGdelineationh']reftypejh#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7K$ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K$ubah5h6h jJh7NhhubjK)}}(hj?h=:doc:`ECG delineation correction `h!}(h#]h%]h']h)]h+]uh]h9)}}(hjhjh]h)}}(hjhjh]h)}}(hjhjh]h/ECG delineation correction}}(hjhhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ECG_delineation_correctorh']reftypejh#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7K%ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K%ubah5h6h jJh7NhhubjK)}}(hj?h6:doc:`ABP/PPG peak detection `h!}(h#]h%]h']h)]h+]uh]h9)}}(hjhjh]h)}}(hj$hjh]h)}}(hj(hjh]h/ABP/PPG peak detection}}(hj,hhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ABP_PPG_peak_detectionh']reftypej7h#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7K&ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K&ubah5h6h jJh7NhhubjK)}}(hj?h8:doc:`ABP/PPG peak correction `h!}(h#]h%]h']h)]h+]uh]h9)}}(hjLhjNh]h)}}(hjWhjNh]h)}}(hj[hjNh]h/ABP/PPG peak correction}}(hj_hhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ABP_PPG_peak_correctionh']reftypejjh#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7K'ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K'ubah5h6h jJh7NhhubjK)}}(hj?h::doc:`Heartbeat classification `h!}(h#]h%]h']h)]h+]uh]h9)}}(hjhjh]h)}}(hjhjh]h)}}(hjhjh]h/Heartbeat classification}}(hjhhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ECG_heartbeat_classifierh']reftypejh#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7K(ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K(ubah5h6h jJh7NhhubjK)}}(hj?h):doc:`Arbitrary tasks ` h!}(h#]h%]h']h)]h+]uh]h9)}}(hjh(:doc:`Arbitrary tasks `h]h)}}(hjhjh]h)}}(hjhjh]h/Arbitrary tasks}}(hjhhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌Arbitrary_tasksh']reftypejh#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7K)ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K)ubah5h6h jJh7Nhhubeh5h6h j<h7K"hhubh9)}}(hhhThese tasks are the core of this kit and you will probably refer to them before you extend the functionality with your own tasks.h]h/These tasks are the core of this kit and you will probably refer to them before you extend the functionality with your own tasks.}}(hjhjubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K+hhubeh!}(h#] descriptionah%]h']h)] descriptionah+]uh5h6h hh7Khhubh)}}(hhhhh](h)}}(hjh Propertiesh!}(h#]h%]h']h)]h+]uh]h/ Properties}}(hjhjubah5h6h hh7K/hhubh9)}}(hjhFAll tasks must implement the following properties with its attributes:h]h/FAll tasks must implement the following properties with its attributes:}}(hjhjubah!}(h#]h%]h']h)]h+]uh5h6h h8h7K1hhubh literal_block)}}(hjh(properties(GetAccess = public, Constant)h]h/(properties(GetAccess = public, Constant)}}(hj$hj&ubah!}(h%]codeah']h#]h+] xml:spacepreserveh)]uh5h6h j!h7K7hhubh9)}}(hjh"``name`` — The name of the task.h](h)}}(hj7h``name``h]h/name}}(hj<hhubah!}(h#]h%]h']h)]h+]uh hubh/ — The name of the task.}}(hj7h — The name of the task.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7K8hhubh9)}}(hjhP``target_units`` — The signal units required by the task. Possible values are:h](h)}}(hjXh``target_units``h]h/ target_units}}(hj]hhubah!}(h#]h%]h']h)]h+]uh hubh/@ — The signal units required by the task. Possible values are:}}(hjXh@ — The signal units required by the task. Possible values are:ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7K:hhubh block_quote)}}(hjhhh](h9)}}(hj{hADCu, raw ADC samples.h]h/ADCu, raw ADC samples.}}(hjhjubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubeh!}(h#]h%]h']h)]h+]uh5h6h jxh7Nhhubh9)}}(hjhL``doPayload`` — Boolean. Does this task generates a payload to be stored ?h](h)}}(hjh ``doPayload``h]h/ doPayload}}(hjhhubah!}(h#]h%]h']h)]h+]uh hubh/? — Boolean. Does this task generates a payload to be stored ?}}(hjh? — Boolean. Does this task generates a payload to be stored ?ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7K@hhubj")}}(hjh3properties(GetAccess = public, SetAccess = private)h]h/3properties(GetAccess = public, SetAccess = private)}}(hjhjubah!}(h%]j/ah']h#]h+]j3j4h)]uh5h6h j!h7KGhhubh9)}}(hjh``memory_constant`` — A coefficient to indicate the ECGwrapper how big should be a batch processing part. The size of each part is calculated ash](h)}}(hjh``memory_constant``h]h/memory_constant}}(hjhhubah!}(h#]h%]h']h)]h+]uh hubh/ — A coefficient to indicate the ECGwrapper how big should be a batch processing part. The size of each part is calculated as}}(hjh — A coefficient to indicate the ECGwrapper how big should be a batch processing part. The size of each part is calculated asubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7KHhhubj")}}(hjhIuser = memory; batch_size = memory_constant * user.MaxPossibleArrayBytes;h]h/Iuser = memory; batch_size = memory_constant * user.MaxPossibleArrayBytes;}}(hjhIuser = memory; batch_size = memory_constant * user.MaxPossibleArrayBytes;ubah!}(h%]j/ah']h#]h+]j3j4h)]uh5h6h j!h7KPhhubh9)}}(hjhA``started`` — Boolean. Did the task executed the Start method ?h](h)}}(hjh ``started``h]h/started}}(hj hhubah!}(h#]h%]h']h)]h+]uh hubh/6 — Boolean. Did the task executed the Start method ?}}(hjh6 — Boolean. Did the task executed the Start method ?ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7KQhhubj")}}(hjh2properties(GetAccess = public, SetAccess = public)h]h/2properties(GetAccess = public, SetAccess = public)}}(hj)hj+ubah!}(h%]j/ah']h#]h+]j3j4h)]uh5h6h j!h7KYhhubh9)}}(hjh``progress_handle`` — is a handle to a :doc:`progress\_bar ` object, that can be used to track the progress within your function.h](h)}}(hj9h``progress_handle``h]h/progress_handle}}(hj>hhubah!}(h#]h%]h']h)]h+]uh hubh/ — is a handle to a }}(hj9h — is a handle to a ubh)}}(hj9h#:doc:`progress\_bar `h]h)}}(hjThjVh]h/ progress_bar}}(hjYhhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ progress_barh']reftypejdh#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7KZubh/E object, that can be used to track the progress within your function.}}(hj9hE object, that can be used to track the progress within your function.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7KZhhubh9)}}(hjh2``tmp_path`` — The path to store temporary data.h](h)}}(hjh ``tmp_path``h]h/tmp_path}}(hjhhubah!}(h#]h%]h']h)]h+]uh hubh/& — The path to store temporary data.}}(hjh& — The path to store temporary data.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7K]hhubeh!}(h#] propertiesah%]h']h)] propertiesah+]uh5h6h hh7K/hhubh)}}(hhhhh](h)}}(hjhMethodsh!}(h#]h%]h']h)]h+]uh]h/Methods}}(hjhjubah5h6h hh7Kahhubh9)}}(hjh/All tasks must implement the following methods:h]h//All tasks must implement the following methods:}}(hjhjubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Kchhubh9)}}(hjh-``Start`` — The task initialization method.h](h)}}(hjh ``Start``h]h/Start}}(hjhhubah!}(h#]h%]h']h)]h+]uh hubh/$ — The task initialization method.}}(hjh$ — The task initialization method.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kfhhubh9)}}(hjh2This task initialize specific aspects of the task.h]h/2This task initialize specific aspects of the task.}}(hjhjubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhhubj")}}(hjh'Start(obj, ECG_header, ECG_annotations)h]h/'Start(obj, ECG_header, ECG_annotations)}}(hjhjubah!}(h%]j/ah']h#]h+]j3j4h)]uh5h6h j!h7Knhhubh9)}}(hjhwhere the arguments are:h]h/where the arguments are:}}(hj hjubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Kohhubjy)}}(hjhhh](h9)}}(hjhx**ECG\_header**, is a struct with info about the ECG signal, See :ref:`here ` for a description.h](hstrong)}}(hj!h**ECG\_header**h]h/ ECG_header}}(hj(hhubah!}(h#]h%]h']h)]h+]uh j%ubh/2, is a struct with info about the ECG signal, See }}(hj!h2, is a struct with info about the ECG signal, See ubh)}}(hj!h$:ref:`here `h]hinline)}}(hj>hj@h]h/here}}(hjEhhubah!}(h#]h%](hԌstdstd-refeh']h)]h+]uh jBubah!}(hh[h%]h܌ecg_header_descriptionh']reftyperefh#]h+] refdomainjPh㈌ refexplicith)]uh5h6h hh7Kqubh/ for a description.}}(hj!h for a description.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kqubh9)}}(hjh**ECG_annotations**, Commonly QRS detections, signal quality annotations or other type of measurements included with the recordings. Some documentation about annotations in `Physionet `__.h](j&)}}(hjmh**ECG_annotations**h]h/ECG_annotations}}(hjrhhubah!}(h#]h%]h']h)]h+]uh j%ubh/, Commonly QRS detections, signal quality annotations or other type of measurements included with the recordings. Some documentation about annotations in }}(hjmh, Commonly QRS detections, signal quality annotations or other type of measurements included with the recordings. Some documentation about annotations in ubh reference)}}(hjmh!}(h%]name Physioneth']h#]h+]h)]refuri5http://www.physionet.org/physiobank/annotations.shtmluhE`Physionet `__h]h/ Physionet}}(hjhhubah jubh/.}}(hjmh.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Ktubeh!}(h#]h%]h']h)]h+]uh5h6h jxh7Nhhubh9)}}(hjh2``Process`` — The task core processing function.h](h)}}(hjh ``Process``h]h/Process}}(hjhhubah!}(h#]h%]h']h)]h+]uh hubh/' — The task core processing function.}}(hjh' — The task core processing function.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kxhhubh9)}}(hjhThis task is the responsible of do the actual work of the ECGtask. This mehtod is called by an ECGwrapper all the times needed to process the whole recording.h]h/This task is the responsible of do the actual work of the ECGtask. This mehtod is called by an ECGwrapper all the times needed to process the whole recording.}}(hjhjubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Kzhhubj")}}(hjhpayload = Process(ECG, ECG_start_offset, ECG_sample_start_end_idx, ECG_header, ECG_annotations, ECG_annotations_start_end_idx )h]h/payload = Process(ECG, ECG_start_offset, ECG_sample_start_end_idx, ECG_header, ECG_annotations, ECG_annotations_start_end_idx )}}(hjhpayload = Process(ECG, ECG_start_offset, ECG_sample_start_end_idx, ECG_header, ECG_annotations, ECG_annotations_start_end_idx )ubah!}(h%]j/ah']h#]h+]j3j4h)]uh5h6h j!h7Khhubh9)}}(hjhwhere the arguments are:h]h/where the arguments are:}}(hjhjubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubjy)}}(hjhhh](h9)}}(hjh@**ECG**, is a matrix size ``[ECG_header.nsamp ECG_header.nsig]``h](j&)}}(hjh**ECG**h]h/ECG}}(hj hhubah!}(h#]h%]h']h)]h+]uh j%ubh/, is a matrix size }}(hjh, is a matrix size ubh)}}(hjh&``[ECG_header.nsamp ECG_header.nsig]``h]h/"[ECG_header.nsamp ECG_header.nsig]}}(hj!hhubah!}(h#]h%]h']h)]h+]uh hubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubh9)}}(hjhL**ECG\_start\_offset**, is the location of ECG(1,:) within the whole signal.h](j&)}}(hj7h**ECG\_start\_offset**h]h/ECG_start_offset}}(hj<hhubah!}(h#]h%]h']h)]h+]uh j%ubh/6, is the location of ECG(1,:) within the whole signal.}}(hj7h6, is the location of ECG(1,:) within the whole signal.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubh9)}}(hjhx**ECG\_header**, is a struct with info about the ECG signal, See :ref:`here ` for a description.h](j&)}}(hjXh**ECG\_header**h]h/ ECG_header}}(hj]hhubah!}(h#]h%]h']h)]h+]uh j%ubh/2, is a struct with info about the ECG signal, See }}(hjXh2, is a struct with info about the ECG signal, See ubh)}}(hjXh$:ref:`here `h]jC)}}(hjshjuh]h/here}}(hjxhhubah!}(h#]h%](hԌstdstd-refeh']h)]h+]uh jBubah!}(hh[h%]h܌ecg_header_descriptionh']reftyperefh#]h+] refdomainjh㈌ refexplicith)]uh5h6h hh7Kubh/ for a description.}}(hjXh for a description.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubh9)}}(hjh**ECG_annotations**, Commonly QRS detections, signal quality annotations or other type of measurements included with the recordings. Some documentation about annotations in `Physionet `__.h](j&)}}(hjh**ECG_annotations**h]h/ECG_annotations}}(hjhhubah!}(h#]h%]h']h)]h+]uh j%ubh/, Commonly QRS detections, signal quality annotations or other type of measurements included with the recordings. Some documentation about annotations in }}(hjh, Commonly QRS detections, signal quality annotations or other type of measurements included with the recordings. Some documentation about annotations in ubj)}}(hjh!}(h%]name Physioneth']h#]h+]h)]j5http://www.physionet.org/physiobank/annotations.shtmluhE`Physionet `__h]h/ Physionet}}(hjhhubah jubh/.}}(hjhjubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubh9)}}(hjh**ECG\_annotations\_start\_end\_idx**, are the start and end indexes corresponding to the first and last element of ECG_annotations in the current iteration.h](j&)}}(hjh%**ECG\_annotations\_start\_end\_idx**h]h/ECG_annotations_start_end_idx}}(hjhhubah!}(h#]h%]h']h)]h+]uh j%ubh/x, are the start and end indexes corresponding to the first and last element of ECG_annotations in the current iteration.}}(hjhx, are the start and end indexes corresponding to the first and last element of ECG_annotations in the current iteration.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubeh!}(h#]h%]h']h)]h+]uh5h6h jxh7Nhhubh9)}}(hjhlas a result, this method must produce a **payload** variable, that will be handled by the ECGwrapper object.h](h/(as a result, this method must produce a }}(hjh(as a result, this method must produce a ubj&)}}(hjh **payload**h]h/payload}}(hj hhubah!}(h#]h%]h']h)]h+]uh j%ubh/9 variable, that will be handled by the ECGwrapper object.}}(hjh9 variable, that will be handled by the ECGwrapper object.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubh9)}}(hjh]``Concatenate`` — This method is responsible of the payload union after all the processing.h](h)}}(hj'h``Concatenate``h]h/ Concatenate}}(hj,hhubah!}(h#]h%]h']h)]h+]uh hubh/N — This method is responsible of the payload union after all the processing.}}(hj'hN — This method is responsible of the payload union after all the processing.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubh9)}}(hjhAfter the execution of all *Process* steps, each payload must be put together with this method. The ECGwrapper object will call this method once for each payload created, building a final payload.h](h/After the execution of all }}(hjHhAfter the execution of all ubhemphasis)}}(hjHh *Process*h]h/Process}}(hjUhhubah!}(h#]h%]h']h)]h+]uh jRubh/ steps, each payload must be put together with this method. The ECGwrapper object will call this method once for each payload created, building a final payload.}}(hjHh steps, each payload must be put together with this method. The ECGwrapper object will call this method once for each payload created, building a final payload.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubj")}}(hjhpayload = Concatenate(plA, plB)h]h/payload = Concatenate(plA, plB)}}(hjqhjsubah!}(h%]j/ah']h#]h+]j3j4h)]uh5h6h j!h7Khhubh9)}}(hjhwhere the arguments are:h]h/where the arguments are:}}(hjhjubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubjy)}}(hjhhh]h9)}}(hjhH**plA** and **plB**, are two payloads created with the *Process* method.h](j&)}}(hjh**plA**h]h/plA}}(hjhhubah!}(h#]h%]h']h)]h+]uh j%ubh/ and }}(hjh and ubj&)}}(hjh**plB**h]h/plB}}(hjhhubah!}(h#]h%]h']h)]h+]uh j%ubh/$, are two payloads created with the }}(hjh$, are two payloads created with the ubjS)}}(hjh *Process*h]h/Process}}(hjhhubah!}(h#]h%]h']h)]h+]uh jRubh/ method.}}(hjh method.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubah!}(h#]h%]h']h)]h+]uh5h6h jxh7Nhhubh9)}}(hjhSand as a result, this method creates **payload**, the union of **plA** and **plB**.h](h/%and as a result, this method creates }}(hjh%and as a result, this method creates ubj&)}}(hjh **payload**h]h/payload}}(hjhhubah!}(h#]h%]h']h)]h+]uh j%ubh/, the union of }}(hjh, the union of ubj&)}}(hjh**plA**h]h/plA}}(hj hhubah!}(h#]h%]h']h)]h+]uh j%ubh/ and }}(hjh and ubj&)}}(hjh**plB**h]h/plB}}(hjhhubah!}(h#]h%]h']h)]h+]uh j%ubh/.}}(hjhjubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubh9)}}(hjhM``Finish`` — This task perform the last calculation over the whole payload.h](h)}}(hj:h ``Finish``h]h/Finish}}(hj?hhubah!}(h#]h%]h']h)]h+]uh hubh/C — This task perform the last calculation over the whole payload.}}(hj:hC — This task perform the last calculation over the whole payload.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubh9)}}(hjhoAfter the concatenation of payloads, the whole payload is sent to this method to perform any final calculation.h]h/oAfter the concatenation of payloads, the whole payload is sent to this method to perform any final calculation.}}(hj[hj]ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubj")}}(hjh*payload = Finish(obj, payload, ECG_header)h]h/*payload = Finish(obj, payload, ECG_header)}}(hjkhjmubah!}(h%]j/ah']h#]h+]j3j4h)]uh5h6h j!h7Khhubh9)}}(hjhwhere the arguments are:h]h/where the arguments are:}}(hj{hj}ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubjy)}}(hjhhh](h9)}}(hjhQ**payload**, is the payload created with all the *Concatenate* method invocation.h](j&)}}(hjh **payload**h]h/payload}}(hjhhubah!}(h#]h%]h']h)]h+]uh j%ubh/&, is the payload created with all the }}(hjh&, is the payload created with all the ubjS)}}(hjh *Concatenate*h]h/ Concatenate}}(hjhhubah!}(h#]h%]h']h)]h+]uh jRubh/ method invocation.}}(hjh method invocation.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubh9)}}(hjhx**ECG\_header**, is a struct with info about the ECG signal, See :ref:`here ` for a description.h](j&)}}(hjh**ECG\_header**h]h/ ECG_header}}(hjhhubah!}(h#]h%]h']h)]h+]uh j%ubh/2, is a struct with info about the ECG signal, See }}(hjh2, is a struct with info about the ECG signal, See ubh)}}(hjh$:ref:`here `h]jC)}}(hjhjh]h/here}}(hjhhubah!}(h#]h%](hԌstdstd-refeh']h)]h+]uh jBubah!}(hh[h%]h܌ecg_header_descriptionh']reftyperefh#]h+] refdomainjh㈌ refexplicith)]uh5h6h hh7Kubh/ for a description.}}(hjh for a description.ubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubeh!}(h#]h%]h']h)]h+]uh5h6h jxh7Nhhubh9)}}(hjhaAs a result, the final payload is generated, which later will be stored by the ECGwrapper object.h]h/aAs a result, the final payload is generated, which later will be stored by the ECGwrapper object.}}(hj hj ubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubeh!}(h#]methodsah%]h']h)]methodsah+]uh5h6h hh7Kahhubh)}}(hhhhh](h)}}(hj, h More Abouth!}(h#]h%]h']h)]h+]uh]h/ More About}}(hj0 hj2 ubah5h6h hh7Khhubj=)}}(hj, hhh!}(h%]jCjDh']h#]h+]h)]uh](jK)}}(hj@ h)`Physionet.org `__h!}(h#]h%]h']h)]h+]uh]h9)}}(hjJ hjL h]j)}}(hjU h!}(h%]name Physionet.orgh']h#]h+]h)]jhttp://physionet.org/uhjL h]h/ Physionet.org}}(hjY hhubah jubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubah5h6h jJh7NhhubjK)}}(hj@ hI`Telemetric and Holter ECG Warehouse (THEW) `__h!}(h#]h%]h']h)]h+]uh]h9)}}(hjq hI`Telemetric and Holter ECG Warehouse (THEW) `__h]j)}}(hj| h!}(h%]name*Telemetric and Holter ECG Warehouse (THEW)h']h#]h+]h)]jhttp://thew-project.org/uhj~ h]h/*Telemetric and Holter ECG Warehouse (THEW)}}(hj hhubah jubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubah5h6h jJh7NhhubjK)}}(hj@ h`Pablo Laguna research group at University of Zaragoza `__h!}(h#]h%]h']h)]h+]uh]h9)}}(hj h`Pablo Laguna research group at University of Zaragoza `__h]j)}}(hj h!}(h%]name5Pablo Laguna research group at University of Zaragozah']h#]h+]h)]jFhttp://diec.unizar.es/~laguna/personal/publicaciones/publicaciones.htmuhj h]h/5Pablo Laguna research group at University of Zaragoza}}(hj hhubah jubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubah5h6h jJh7NhhubjK)}}(hj@ h1`Computing in Cardiology `__ h!}(h#]h%]h']h)]h+]uh]h9)}}(hj h.`Computing in Cardiology `__h]j)}}(hj h!}(h%]nameComputing in Cardiologyh']h#]h+]h)]jhttp://cinc.org/uhj h]h/Computing in Cardiology}}(hj hhubah jubah!}(h#]h%]h']h)]h+]uh5h6h h8h7Kubah5h6h jJh7Nhhubeh5h6h j<h7Khhubeh!}(h#] more-aboutah%]h']h)] more aboutah+]uh5h6h hh7Khhubh)}}(hhhhh](h)}}(hj hSee Alsoh!}(h#]h%]h']h)]h+]uh]h/See Also}}(hj hj ubah5h6h hh7Khhubh9)}}(hj hz:doc:`ECGwrapper ` \| :doc:`ECG\_delineation ` \| :doc:`list\_all\_ECGtask `h](h)}}(hj h:doc:`ECGwrapper `h]h)}}(hj hj h]h/ ECGwrapper}}(hj hhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ ECGwrapperh']reftypej h#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7Kubh/ | }}(hj h \| ubh)}}(hj h(:doc:`ECG\_delineation `h]h)}}(hj/ hj1 h]h/ECG_delineation}}(hj4 hhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌ECGdelineationh']reftypej? h#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7Kubh/ | }}(hj h \| ubh)}}(hj h,:doc:`list\_all\_ECGtask `h]h)}}(hjT hjV h]h/list_all_ECGtask}}(hjY hhubah!}(h#]h%](hԌdoceh']h)]h+]uh hubah!}(hh[h%]h܌list_all_ECGtaskh']reftypejd h#]h+] refdomainhh㈌ refexplicith)]uh5h6h hh7Kubeh!}(h#]h%]h']h)]h+]uh5h6h h8h7Khhubeh!}(h#]see-alsoah%]h']h)]see alsoah+]uh5h6h hh7Khhubeh!}(h#]ecgtaskah%]h']h)]ecgtaskah+]uh5h6h hh7Khhubaautofootnote_refs]settingsdocutils.frontendValues)}}(envNhNconfigN source_urlNauto_id_prefixid generatorNtrim_footnote_reference_space toc_backlinksentryexit_status_levelKdump_pseudo_xmlNgettext_compactwarning_streamN _destinationNoutput_encodingutf-8 language_codeenstrip_commentsN sectnum_xformKsyntax_highlightlong docinfo_xformKpep_referencesN rfc_base_urlhttps://tools.ietf.org/html/error_encoding_error_handlerbackslashreplacesectsubtitle_xform dump_settingsN datestampNdump_transformsNrfc_referencesN pep_base_url https://www.python.org/dev/peps/debugN strip_classesN halt_levelK smart_quotesstrict_visitorN raw_enabledKpep_file_url_templatepep-%04d _config_files]strip_elements_with_classesNinput_encoding_error_handlerstrictfootnote_backlinksKerror_encodingcp850 report_levelKinput_encoding utf-8-sig_disable_configN traceback id_prefixhcloak_email_addresses tab_widthKoutput_encoding_error_handlerj file_insertion_enabledexpose_internalsNrecord_dependenciesN_sourceh6dump_internalsNembed_stylesheetdoctitle_xform source_linkNub current_lineN citation_refs}parse_messages]substitution_names}h!}(h%]sourceh6h']h#]h+]h)]u citations]hhids}(j j, j hj% jjjjhjz j urefnames}refids}symbol_footnote_refs]symbol_footnotes]substitution_defs}id_startKnameids}(j~ jz j j j) j% jjjjj j u nametypes}(j~ Nj Nj) NjNjNj Nuautofootnote_startKindirect_targets] autofootnotes] footnotes]ub.