#docutils.nodesdocument)}}( footnotes] transformerN citations]autofootnote_refs]substitution_defs}symbol_footnote_refs] citation_refs} footnote_refs}refnames}ids}(results-formathsection)}}( attributes}(backrefs]dupnames]ids](hqrs-det-result-formatenames](results formatqrs_det_result_formateclasses]uchildren](htitle)}}(h}(h!]h#]h%]h(]h,]uh.]hTextResults format}}( rawsourceResults formatparenth3ubahEhhhhChDtagnameh0source`__hFjubahEjhCjhFhJhGhHhIKubahEjhhhCjhFjhGhHhINubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(j3http://www.physionet.org/physiotools/wag/gqrs-1.htmnamegqrsh,]h#]h%]h!]h(]uh.]h=gqrs}}(hChmhEjubahEjhC>`gqrs `__hFjubahEjhCjhFhJhGhHhIKubahEjhhhCjhFjhGhHhINubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(j3http://www.physionet.org/physiotools/wag/wqrs-1.htmnamewqrsh,]h#]h%]h!]h(]uh.]h=wqrs}}(hChmhEjubahEjhC>`wqrs `__hFjubahEjhCjhFhJhGhHhIKubahEjhhhCjhFjhGhHhINubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(jNhttp://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=4122029namePan and Tompkinsh,]h#]h%]h!]h(]uh.]h=Pan and Tompkins}}(hChmhEjubahEjhCe`Pan and Tompkins `__hFjubahEjhCj,hFhJhGhHhIKubahEjhhhCe`Pan and Tompkins `__hFjhGhHhINubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(j/http://www.physionet.org/physiotools/ecgpuwave/name ECGpuwaveh,]h#]h%]h!]h(]uh.]h= ECGpuwave}}(hChmhEjCubahEj9hC?`ECGpuwave `__hFjubahEj/hCjThFhJhGhHhIKubahEjhhhCjThFjhGhHhINubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(j)http://www.eplimited.com/confirmation.htmname EP limitedh,]h#]h%]h!]h(]uh.]h= EP limited}}(hChmhEjjubahEj`hC:`EP limited `__hFjubahEjVhCj{hFhJhGhHhIKubahEjhhhCj{hFjhGhHhINubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h=(Aristotle (not distributed with the kit)}}(hC(Aristotle (not distributed with the kit)hEjubahEj}hCjhFhJhGhHhIKubahEjhhhC)Aristotle (not distributed with the kit) hFjhGhHhINubehEjShhhChmhFj~hGhHhIKubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h=You can use any or all the algorithms as you will see below or you can even add your own algorithms if you follow an easy interface, as described }}(hCYou can use any or all the algorithms as you will see below or you can even add your own algorithms if you follow an easy interface, as described hEjubsphinx.addnodes pending_xref)}}(h}( refdomainstd reftarget#adding_a_custom_detection_algorithmrefdoc QRS_detectionh,]h#]refwarnh%] refexplicith!]reftyperefh(]uh.]hinline)}}(h}(h!]h#]h%]h(]h,](xrefjstd-refeuh.]h=below}}(hChmhEjubahEjhC2:ref:`below `hFjubahEjhCjhFjhGhHhIKubh=g. The results are stored in a single file, that you can use to perform other subsequent tasks, such as }}(hCg. The results are stored in a single file, that you can use to perform other subsequent tasks, such as hEjubj)}}(h}( refdomainhmjECGdelineationjjh,]h#]jh%] refexplicith!]reftypedoch(]uh.]h])}}(h}(h!]h#]h%]h(]h,](jjeuh.]h=ECG delineation}}(hChmhEjubahEjhC':doc:`ECG delineation `hFh\ubahEjhCjhFjhGhHhIKubh= or even the visual }}(hC or even the visual hEjubj)}}(h}( refdomainhmjplot_ecg_stripjjh,]h#]jh%] refexplicith!]reftypedoch(]uh.]h])}}(h}(h!]h#]h%]h(]h,](jj euh.]h= inspection}}(hChmhEj ubahEjhC":doc:`inspection `hFh\ubahEjhCjhFjhGhHhIKubh= or }}(hC or hEjubj)}}(h}( refdomainhmj QRScorrectorjjh,]h#]jh%] refexplicith!]reftypedoch(]uh.]h])}}(h}(h!]h#]h%]h(]h,](jj.euh.]h= correction}}(hChmhEj2ubahEj#hC :doc:`correction `hFh\ubahEjhCj@hFjhGhHhIKubh=h of the algorithms results. For a quick reference about heartbeat detection you may want to check this }}(hCh of the algorithms results. For a quick reference about heartbeat detection you may want to check this hEjubj)}}(h}( refdomainstdjqrs_automatic_detectionjjh,]h#]jh%] refexplicith!]reftyperefh(]uh.]j)}}(h}(h!]h#]h%]h(]h,](jjLstd-refeuh.]h=example}}(hChmhEjXubahEjHhC(:ref:`example `hFjubahEjhCjghFjhGhHhIKubehEjShhhCX<You can use any or all the algorithms as you will see below or you can even add your own algorithms if you follow an easy interface, as described :ref:`below `. The results are stored in a single file, that you can use to perform other subsequent tasks, such as :doc:`ECG delineation ` or even the visual :doc:`inspection ` or :doc:`correction ` of the algorithms results. For a quick reference about heartbeat detection you may want to check this :ref:`example `hFhJhGhHhIKubehEj'hhhChmhFhhGhHhIKubh)}}(h}(h!]h#]h%]input-argumentsah(]input argumentsah,]uh.](h1)}}(h}(h!]h#]h%]h(]h,]uh.]h=Input Arguments}}(hCInput ArgumentshEjvubahEjjhhhCjhFh0hGhHhIK$ubhK)}}(h}(h!]h#]h%]h(]h,]uh.]h=5The properties that this task uses are the following:}}(hC5The properties that this task uses are the following:hEjubahEjjhhhCjhFhJhGhHhIK&ubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h])}}(h}(h!]h#]h%]h(]h,]uh.]h=progress_handle}}(hChmhEjubahEjhC``progress_handle``hFh\ubh=6 — Used to track the progress within your function. }}(hC6 — Used to track the progress within your function. hEjubh])}}(h}(h!]h#]h%]h(]h,]uh.]h= [] (default)}}(hChmhEjubahEjhC``[] (default)``hFh\ubehEjjhhhCY``progress_handle`` — Used to track the progress within your function. ``[] (default)``hFhJhGhHhIK(ubh block_quote)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.](h="progress_handle, is a handle to a }}(hC#progress\_handle, is a handle to a hEjubj)}}(h}( refdomainhmj progress_barjjh,]h#]jh%] refexplicith!]reftypedoch(]uh.]h])}}(h}(h!]h#]h%]h(]h,](jjeuh.]h= progress_bar}}(hChmhEjubahEjhC#:doc:`progress\_bar `hFh\ubahEjhCjhFjhGhHhIK*ubh=E object, that can be used to track the progress within your function.}}(hCE object, that can be used to track the progress within your function.hEjubehEjhCprogress\_handle, is a handle to a :doc:`progress\_bar ` object, that can be used to track the progress within your function.hFhJhGhHhIK*ubahEjjhhhChmhFjhGhHhINubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h])}}(h}(h!]h#]h%]h(]h,]uh.]h=tmp_path}}(hChmhEjubahEj hC ``tmp_path``hFh\ubh=' — The path to store temporary data. }}(hC' — The path to store temporary data. hEj ubh])}}(h}(h!]h#]h%]h(]h,]uh.]h=tempdir() (default)}}(hChmhEj)ubahEj hC``tempdir() (default)``hFh\ubehEjjhhhCJ``tmp_path`` — The path to store temporary data. ``tempdir() (default)``hFhJhGhHhIK-ubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h=/Full path to a directory with write privileges.}}(hC/Full path to a directory with write privileges.hEjDubahEj:hCjRhFhJhGhHhIK/ubahEjjhhhChmhFjhGhHhINubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h])}}(h}(h!]h#]h%]h(]h,]uh.]h= detectors}}(hChmhEj^ubahEjThC ``detectors``hFh\ubh=* — The QRS detection algorithms to use. }}(hC* — The QRS detection algorithms to use. hEjTubh])}}(h}(h!]h#]h%]h(]h,]uh.]h='all-detectors' (default)}}(hChmhEjtubahEjThC``'all-detectors' (default)``hFh\ubehEjjhhhCT``detectors`` — The QRS detection algorithms to use. ``'all-detectors' (default)``hFhJhGhHhIK1ubj)}}(h}(h!]h#]h%]h(]h,]uh.](hK)}}(h}(h!]h#]h%]h(]h,]uh.]h=mThis property controls which algorithms are used. A cell string or char array with any of the following names}}(hCmThis property controls which algorithms are used. A cell string or char array with any of the following nameshEjubahEjhCjhFhJhGhHhIK3ubj)}}(h}(h,]h#]jjh%]h!]h(]uh.](j)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h= all-detectors}}(hC all-detectorshEjubahEjhCjhFhJhGhHhIK5ubahEjhCjhFjubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(jGhttp://diec.unizar.es/~laguna/personal/publicaciones/wavedet_tbme04.pdfnamewavedeth,]h#]h%]h!]h(]uh.]h=wavedet}}(hChmhEjubahEjhCU`wavedet `__hFjubahEjhCjhFhJhGhHhIK6ubahEjhCjhFjubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(jNhttp://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=4122029namepantomh,]h#]h%]h!]h(]uh.]h=pantom}}(hChmhEjubahEjhC[`pantom `__hFjubahEjhCjhFhJhGhHhIK7ubahEjhCjhFjubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h= aristotle}}(hC aristotlehEjubahEjhCj)hFhJhGhHhIK8ubahEjhCj)hFjubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(j3http://www.physionet.org/physiotools/wag/gqrs-1.htmnamegqrsh,]h#]h%]h!]h(]uh.]h=gqrs}}(hChmhEj?ubahEj5hC>`gqrs `__hFjubahEj+hCjPhFhJhGhHhIK9ubahEjhCjPhFjubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(j3http://www.physionet.org/physiotools/wag/sqrs-1.htmnamesqrsh,]h#]h%]h!]h(]uh.]h=sqrs}}(hChmhEjfubahEj\hC>`sqrs `__hFjubahEjRhCjwhFhJhGhHhIK:ubahEjhCjwhFjubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(j3http://www.physionet.org/physiotools/wag/gqrs-1.htmnamewqrsh,]h#]h%]h!]h(]uh.]h=wqrs}}(hChmhEjubahEjhC>`wqrs `__hFjubahEjyhCjhFhJhGhHhIK;ubahEjhCjhFjubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(j/http://www.physionet.org/physiotools/ecgpuwave/name ecgpuwaveh,]h#]h%]h!]h(]uh.]h= ecgpuwave}}(hChmhEjubahEjhC?`ecgpuwave `__hFjubahEjhCjhFhJhGhHhIK`__hFjubahEjhCjhFhJhGhHhIK=ubahEjhCM`epltdqrs1 or epltdqrs2 `__ hFjubehEjhChmhFj~ubehEjjhhhChmhFjhGNhINubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h])}}(h}(h!]h#]h%]h(]h,]uh.]h=only_ECG_leads}}(hChmhEjubahEjhC``only_ECG_leads``hFh\ubh= — Process only ECG signals. }}(hC — Process only ECG signals. hEjubh])}}(h}(h!]h#]h%]h(]h,]uh.]h=true (default)}}(hChmhEjubahEjhC``true (default)``hFh\ubehEjjhhhCC``only_ECG_leads`` — Process only ECG signals. ``true (default)``hFhJhGhHhIK?ubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h=PBoolean value. Find out which signals are ECG based on their header description.}}(hCPBoolean value. Find out which signals are ECG based on their header description.hEj*ubahEj hCj8hFhJhGhHhIKAubahEjjhhhChmhFjhGhHhINubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h])}}(h}(h!]h#]h%]h(]h,]uh.]h=gqrs_config_filename}}(hChmhEjDubahEj:hC``gqrs_config_filename``hFh\ubh=6 — A configuration filename for the gqrs algorithm. }}(hC6 — A configuration filename for the gqrs algorithm. hEj:ubh])}}(h}(h!]h#]h%]h(]h,]uh.]h= [] (default)}}(hChmhEjZubahEj:hC``[] (default)``hFh\ubehEjjhhhC^``gqrs_config_filename`` — A configuration filename for the gqrs algorithm. ``[] (default)``hFhJhGhHhIKDubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.](h=QA full filename with the configuration for the gqrs algorithm. See the algorithm }}(hCQA full filename with the configuration for the gqrs algorithm. See the algorithm hEjuubj)}}(h}(j3http://www.physionet.org/physiotools/wag/gqrs-1.htmnamewebh,]h#]h%]h!]h(]uh.]h=web}}(hChmhEjubahEjuhC=`web `__hFjubh= page for details.}}(hC page for details.hEjuubehEjkhCA full filename with the configuration for the gqrs algorithm. See the algorithm `web `__ page for details.hFhJhGhHhIKFubahEjjhhhChmhFjhGhHhINubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h])}}(h}(h!]h#]h%]h(]h,]uh.]h=detection_threshold}}(hChmhEjubahEjhC``detection_threshold``hFh\ubh== — A threshold to control the sensitivity of the detector. }}(hC= — A threshold to control the sensitivity of the detector. hEjubh])}}(h}(h!]h#]h%]h(]h,]uh.]h= 1 (default)}}(hChmhEjubahEjhC``1 (default)``hFh\ubehEjjhhhCc``detection_threshold`` — A threshold to control the sensitivity of the detector. ``1 (default)``hFhJhGhHhIKJubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h=cUse higher values to reduce false detections, or lower values to reduce the number of missed beats.}}(hCcUse higher values to reduce false detections, or lower values to reduce the number of missed beats.hEjubahEjhCjhFhJhGhHhIKLubahEjjhhhChmhFjhGhHhINubhtarget)}}(h}(refid payload-proph,]h#]h%]h!]h(]uh.]hEjjhhhC.. _payload_prop:hFjhGhHhIKNubhK)}}(h}(h!]h#]h%]jah(] payload_propah,]uh.](h])}}(h}(h!]h#]h%]h(]h,]uh.]h=payload}}(hChmhEjubahEjhC ``payload``hFh\ubh=O — An arbitrary format variable to be passed to your user-defined algorithm. }}(hCO — An arbitrary format variable to be passed to your user-defined algorithm. hEjubh])}}(h}(h!]h#]h%]h(]h,]uh.]h= [] (default)}}(hChmhEjubahEjhC``[] (default)``hFh\ubehEjjexpect_referenced_by_name}jjshhhCj``payload`` — An arbitrary format variable to be passed to your user-defined algorithm. ``[] (default)``hFhJhGhHhIKPexpect_referenced_by_id}jjsubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.](h=jThis variable can be useful for passing data to your own function, in addition to the interface described }}(hCjThis variable can be useful for passing data to your own function, in addition to the interface described hEj9ubj)}}(h}( refdomainstdj#adding_a_custom_detection_algorithmjjh,]h#]jh%] refexplicith!]reftyperefh(]uh.]j)}}(h}(h!]h#]h%]h(]h,](jjMstd-refeuh.]h=below}}(hChmhEjYubahEjIhC2:ref:`below `hFjubahEj9hCjhhFjhGhHhIKRubh=.}}(hC.hEj9ubehEj/hCThis variable can be useful for passing data to your own function, in addition to the interface described :ref:`below `.hFhJhGhHhIKRubahEjjhhhChmhFjhGhHhINubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h])}}(h}(h!]h#]h%]h(]h,]uh.]h=CalculatePerformance}}(hChmhEj{ubahEjqhC``CalculatePerformance``hFh\ubh=S — Calculate algorithm performances based on gold standard reference detections. }}(hCS — Calculate algorithm performances based on gold standard reference detections. hEjqubh])}}(h}(h!]h#]h%]h(]h,]uh.]h=false (default)}}(hChmhEjubahEjqhC``false (default)``hFh\ubehEjjhhhC~``CalculatePerformance`` — Calculate algorithm performances based on gold standard reference detections. ``false (default)``hFhJhGhHhIKUubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h=Boolean value. Calculate the algorithm performance based on the reference annotations found by the ECGwrapper object in the same folder where the signals are. This reference annotations are loaded, if detected, in the ECG_annotations property.}}(hCBoolean value. Calculate the algorithm performance based on the reference annotations found by the ECGwrapper object in the same folder where the signals are. This reference annotations are loaded, if detected, in the ECG\_annotations property.hEjubahEjhCBoolean value. Calculate the algorithm performance based on the reference annotations found by the ECGwrapper object in the same folder where the signals are. This reference annotations are loaded, if detected, in the ECG\_annotations property.hFhJhGhHhIKWubahEjjhhhChmhFjhGhHhINubj)}}(h}(j#adding-a-custom-detection-algorithmh,]h#]h%]h!]h(]uh.]hEjjhhhC(.. _Adding_a_custom_detection_algorithm:hFjhGhHhIK\ubehEj'hhhChmhFhhGhHhIK$ubh)}}(h}(h!]h#]h%](jid1eh(](#adding a custom detection algorithm#adding_a_custom_detection_algorithmeh,]uh.](h1)}}(h}(h!]h#]h%]h(]h,]uh.]h=#Adding a custom detection algorithm}}(hC#Adding a custom detection algorithmhEjubahEjhhhCjhFh0hGhHhIK_ubhK)}}(h}(h!]h#]h%]h(]h,]uh.]h=mAdding your own QRS detectors to the kit is very simple. Ensure that your function implements this interface:}}(hCmAdding your own QRS detectors to the kit is very simple. Ensure that your function implements this interface:hEjubahEjhhhCjhFhJhGhHhIKaubh literal_block)}}(h}( xml:spacepreserveh,]codeah#]h%]h!]h(]uh.]h=function [positions_single_lead, position_multilead] = your_QRS_detector( ECG_matrix, ECG_header, progress_handle, payload_in)}}(hCfunction [positions_single_lead, position_multilead] = your_QRS_detector( ECG_matrix, ECG_header, progress_handle, payload_in)hEjubahEjhhhCfunction [positions_single_lead, position_multilead] = your_QRS_detector( ECG_matrix, ECG_header, progress_handle, payload_in)hFjhGhHhIKjubhK)}}(h}(h!]h#]h%]h(]h,]uh.]h=where the arguments are:}}(hCwhere the arguments are:hEj ubahEjhhhCjhFhJhGhHhIKkubj)}}(h}(h!]h#]h%]h(]h,]uh.](hK)}}(h}(h!]h#]h%]h(]h,]uh.](hstrong)}}(h}(h!]h#]h%]h(]h,]uh.]h= ECG_matrix}}(hChmhEj2ubahEj&hC**ECG\_matrix**hFj/ubh=, is a matrix size }}(hC, is a matrix size hEj&ubh])}}(h}(h!]h#]h%]h(]h,]uh.]h=$[ECG\_header.nsamp ECG\_header.nsig]}}(hChmhEjHubahEj&hC(``[ECG\_header.nsamp ECG\_header.nsig]``hFh\ubehEjhCJ**ECG\_matrix**, is a matrix size ``[ECG\_header.nsamp ECG\_header.nsig]``hFhJhGhHhIKmubhK)}}(h}(h!]h#]h%]h(]h,]uh.](j0)}}(h}(h!]h#]h%]h(]h,]uh.]h= ECG_header}}(hChmhEjcubahEjYhC**ECG\_header**hFj/ubh=2, is a struct with info about the ECG signal, see }}(hC2, is a struct with info about the ECG signal, see hEjYubj)}}(h}( refdomainstdjecg_header_descriptionjjh,]h#]jh%] refexplicith!]reftyperefh(]uh.]j)}}(h}(h!]h#]h%]h(]h,](jj}std-refeuh.]h= ECG header}}(hChmhEjubahEjyhC*:ref:`ECG header `hFjubahEjYhCjhFjhGhHhIKoubh= for details.}}(hC for details.hEjYubehEjhCx**ECG\_header**, is a struct with info about the ECG signal, see :ref:`ECG header ` for details.hFhJhGhHhIKoubhK)}}(h}(h!]h#]h%]h(]h,]uh.](j0)}}(h}(h!]h#]h%]h(]h,]uh.]h=progress_handle}}(hChmhEjubahEjhC**progress\_handle**hFj/ubh=, is a handle to a }}(hC, is a handle to a hEjubj)}}(h}(jprogress_bar.htmname progress_barh,]h#]h%]h!]h(]uh.]h= progress_bar}}(hChmhEjubahEjhC$`progress\_bar `__hFjubh=E object, that can be used to track the progress within your function.}}(hCE object, that can be used to track the progress within your function.hEjubehEjhC**progress\_handle**, is a handle to a `progress\_bar `__ object, that can be used to track the progress within your function.hFhJhGhHhIKrubhK)}}(h}(h!]h#]h%]h(]h,]uh.](j0)}}(h}(h!]h#]h%]h(]h,]uh.]h= payload_in}}(hChmhEjubahEjhC**payload\_in**hFj/ubh=c, is a user variable, of arbitrary format, allowed to be sent to your function. It is sent via the }}(hCc, is a user variable, of arbitrary format, allowed to be sent to your function. It is sent via the hEjubj)}}(h}( refdomainstdj payload_propjjh,]h#]jh%] refexplicith!]reftyperefh(]uh.]j)}}(h}(h!]h#]h%]h(]h,](jjstd-refeuh.]h=payload property}}(hChmhEj ubahEjhC&:ref:`payload property `hFjubahEjhCj hFjhGhHhIKuubh= of this class, for example:}}(hC of this class, for example:hEjubehEjhC**payload\_in**, is a user variable, of arbitrary format, allowed to be sent to your function. It is sent via the :ref:`payload property ` of this class, for example:hFhJhGhHhIKuubehEjhhhChmhFjhGhHhINubj)}}(h}(jjh,]jah#]h%]h!]h(]uh.]h=X% One variable this_ECG_wrapper.ECGtaskHandle.payload = your_variable; % Several variables with a cell container this_ECG_wrapper.ECGtaskHandle.payload = {your_var1 your_var2}; % Or the result of a previous task, in this case QRS manual correction (if available) % or the automatic detection if not. cached_filenames = this_ECG_wrapper.GetCahchedFileName({'QRS_corrector' 'QRS_detection'}); this_ECG_wrapper.ECGtaskHandle.payload = load(cached_filenames);}}(hCX% One variable this_ECG_wrapper.ECGtaskHandle.payload = your_variable; % Several variables with a cell container this_ECG_wrapper.ECGtaskHandle.payload = {your_var1 your_var2}; % Or the result of a previous task, in this case QRS manual correction (if available) % or the automatic detection if not. cached_filenames = this_ECG_wrapper.GetCahchedFileName({'QRS_corrector' 'QRS_detection'}); this_ECG_wrapper.ECGtaskHandle.payload = load(cached_filenames);hEj# ubahEjhhhCX% One variable this_ECG_wrapper.ECGtaskHandle.payload = your_variable; % Several variables with a cell container this_ECG_wrapper.ECGtaskHandle.payload = {your_var1 your_var2}; % Or the result of a previous task, in this case QRS manual correction (if available) % or the automatic detection if not. cached_filenames = this_ECG_wrapper.GetCahchedFileName({'QRS_corrector' 'QRS_detection'}); this_ECG_wrapper.ECGtaskHandle.payload = load(cached_filenames);hFjhGhHhIKubhK)}}(h}(h!]h#]h%]h(]h,]uh.]h=(and the output of your function must be:}}(hC(and the output of your function must be:hEj4 ubahEjhhhCjB hFhJhGhHhIKubj)}}(h}(h!]h#]h%]h(]h,]uh.](hK)}}(h}(h!]h#]h%]h(]h,]uh.](j0)}}(h}(h!]h#]h%]h(]h,]uh.]h=positions_single_lead}}(hChmhEjX ubahEjN hC**positions\_single\_lead**hFj/ubh=V, a cell array size ECG_header.nsig with the QRS sample locations found in each lead.}}(hCW, a cell array size ECG\_header.nsig with the QRS sample locations found in each lead.hEjN ubehEjD hCr**positions\_single\_lead**, a cell array size ECG\_header.nsig with the QRS sample locations found in each lead.hFhJhGhHhIKubhK)}}(h}(h!]h#]h%]h(]h,]uh.](j0)}}(h}(h!]h#]h%]h(]h,]uh.]h=position_multilead}}(hChmhEjy ubahEjo hC**position\_multilead**hFj/ubh=K, a numeric vector with the QRS locations calculated using multilead rules.}}(hCK, a numeric vector with the QRS locations calculated using multilead rules.hEjo ubehEjD hCb**position\_multilead**, a numeric vector with the QRS locations calculated using multilead rules.hFhJhGhHhIKubehEjhhhChmhFjhGhHhINubehEj'j)}jjshhhChmhFhhGhHhIK_j,}jjsubh)}}(h}(h!]h#]h%]examplesah(]examplesah,]uh.](h1)}}(h}(h!]h#]h%]h(]h,]uh.]h=Examples}}(hCExampleshEj ubahEj hhhCj hFh0hGhHhIKubhK)}}(h}(h!]h#]h%]h(]h,]uh.]h=(Create the ECGtask_QRS_detection object.}}(hC*Create the ECGtask\_QRS\_detection object.hEj ubahEj hhhC*Create the ECGtask\_QRS\_detection object.hFhJhGhHhIKubj)}}(h}(jjh,]jah#]h%]h!]h(]uh.]h=% with the task name ECG_w.ECGtaskHandle = 'QRS_detection'; % or create an specific handle to have more control ECGt_QRSd = ECGtask_QRS_detection();}}(hC% with the task name ECG_w.ECGtaskHandle = 'QRS_detection'; % or create an specific handle to have more control ECGt_QRSd = ECGtask_QRS_detection();hEj ubahEj hhhC% with the task name ECG_w.ECGtaskHandle = 'QRS_detection'; % or create an specific handle to have more control ECGt_QRSd = ECGtask_QRS_detection();hFjhGhHhIKubhK)}}(h}(h!]h#]h%]h(]h,]uh.]h=pand then you are ready to set the algorithms to use. In the following example you have several possible set-ups.}}(hCpand then you are ready to set the algorithms to use. In the following example you have several possible set-ups.hEj ubahEj hhhCj hFhJhGhHhIKubj)}}(h}(jjh,]jah#]h%]h!]h(]uh.]h=X % select an specific algorithm. Default: Run all detectors ECGt_QRSd.detectors = 'wavedet'; % Wavedet algorithm based on ECGt_QRSd.detectors = 'pantom';  % Pan-Tompkins alg. ECGt_QRSd.detectors = 'gqrs';    % WFDB gqrs algorithm. % Example of how you can add your own QRS detector. ECGt_QRSd.detectors = 'user:example_worst_ever_QRS_detector'; % "your_QRS_detector_func_name" can be your own detector. ECGt_QRSd.detectors = 'user:your_QRS_detector_func_name'; ECGt_QRSd.detectors = {'wavedet' 'gqrs' 'user:example_worst_ever_QRS_detector'};}}(hCX % select an specific algorithm. Default: Run all detectors ECGt_QRSd.detectors = 'wavedet'; % Wavedet algorithm based on ECGt_QRSd.detectors = 'pantom';  % Pan-Tompkins alg. ECGt_QRSd.detectors = 'gqrs';    % WFDB gqrs algorithm. % Example of how you can add your own QRS detector. ECGt_QRSd.detectors = 'user:example_worst_ever_QRS_detector'; % "your_QRS_detector_func_name" can be your own detector. ECGt_QRSd.detectors = 'user:your_QRS_detector_func_name'; ECGt_QRSd.detectors = {'wavedet' 'gqrs' 'user:example_worst_ever_QRS_detector'};hEj ubahEj hhhCX % select an specific algorithm. Default: Run all detectors ECGt_QRSd.detectors = 'wavedet'; % Wavedet algorithm based on ECGt_QRSd.detectors = 'pantom';  % Pan-Tompkins alg. ECGt_QRSd.detectors = 'gqrs';    % WFDB gqrs algorithm. % Example of how you can add your own QRS detector. ECGt_QRSd.detectors = 'user:example_worst_ever_QRS_detector'; % "your_QRS_detector_func_name" can be your own detector. ECGt_QRSd.detectors = 'user:your_QRS_detector_func_name'; ECGt_QRSd.detectors = {'wavedet' 'gqrs' 'user:example_worst_ever_QRS_detector'};hFjhGhHhIKubhK)}}(h}(h!]h#]h%]h(]h,]uh.]h=AFinally set the task to the wrapper object, and execute the task.}}(hCAFinally set the task to the wrapper object, and execute the task.hEj ubahEj hhhCj hFhJhGhHhIKubj)}}(h}(jjh,]jah#]h%]h!]h(]uh.]h=?ECG_w.ECGtaskHandle= ECGt_QRSd; % set the ECG task ECG_w.Run();}}(hC?ECG_w.ECGtaskHandle= ECGt_QRSd; % set the ECG task ECG_w.Run();hEj ubahEj hhhC?ECG_w.ECGtaskHandle= ECGt_QRSd; % set the ECG task ECG_w.Run();hFjhGhHhIKubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h=7You can check the result of this task, with either the }}(hC7You can check the result of this task, with either the hEj ubj)}}(h}( refdomainhmj QRScorrectorjjh,]h#]jh%] refexplicith!]reftypedoch(]uh.]h])}}(h}(h!]h#]h%]h(]h,](jj- euh.]h=detection corrector}}(hChmhEj1 ubahEj" hC):doc:`detection corrector `hFh\ubahEj hCj? hFjhGhHhIKubh= or the }}(hC or the hEj ubj)}}(h}( refdomainhmjplot_ecg_stripjjh,]h#]jh%] refexplicith!]reftypedoch(]uh.]h])}}(h}(h!]h#]h%]h(]h,](jjR euh.]h=visualization functions}}(hChmhEjV ubahEjG hC/:doc:`visualization functions `hFh\ubahEj hCjd hFjhGhHhIKubh=.}}(hCjnhEj ubehEj hhhCYou can check the result of this task, with either the :doc:`detection corrector ` or the :doc:`visualization functions `.hFhJhGhHhIKubhK)}}(h}(h!]h#]h%]h(]h,]uh.](h=Also check this }}(hCAlso check this hEjl ubj)}}(h}( refdomainstdjqrs_automatic_detectionjjh,]h#]jh%] refexplicith!]reftyperefh(]uh.]j)}}(h}(h!]h#]h%]h(]h,](jj std-refeuh.]h=example}}(hChmhEj ubahEj| hC(:ref:`example `hFjubahEjl hCj hFjhGhHhIKubh= for further information.}}(hC for further information.hEjl ubehEj hhhCQAlso check this :ref:`example ` for further information.hFhJhGhHhIKubj)}}(h}(jh'h,]h#]h%]h!]h(]uh.]hEj hhhC.. _QRS_det_result_format:hFjhGhHhIKubehEj'hhhChmhFhhGhHhIKubhh)}}(h}(h!]h#]h%] more-aboutah(] more aboutah,]uh.](h1)}}(h}(h!]h#]h%]h(]h,]uh.]h= More About}}(hC More AbouthEj ubahEj hhhCj hFh0hGhHhIKubhK)}}(h}(h!]h#]h%]h(]h,]uh.]h=`__hFjubahEj hCj hFhJhGhHhIKubahEj hhhC[`PhysioNet/Computing in Cardiology Challenge 2014 `__hFjhGhHhINubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]j)}}(h}(jhttp://www.physionet.org/name Physioneth,]h#]h%]h!]h(]uh.]h= Physionet}}(hChmhEj! ubahEj hC)`Physionet `__hFjubahEj hCj2 hFhJhGhHhIKubahEj hhhCj2 hFjhGhHhINubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.](h=A video demo in }}(hCA video demo in hEj> ubj)}}(h}(j[https://www.youtube.com/watch?v=QrM-aYANUns&index=2&list=PLlD2eDv5CIe9sA2atmnb-DX48FIRG46z7nameYoutubeh,]h#]h%]h!]h(]uh.]h=Youtube}}(hChmhEjN ubahEj> hCi`Youtube `__hFjubehEj4 hCyA video demo in `Youtube `__hFhJhGhHhIKubahEj hhhCzA video demo in `Youtube `__ hFjhGhHhINubehEj hhhChmhFj~hGhHhIKubehEj'hhhChmhFhhGhHhIKubh)}}(h}(h!]h#]h%]see-alsoah(]see alsoah,]uh.](h1)}}(h}(h!]h#]h%]h(]h,]uh.]h=See Also}}(hCSee AlsohEjo ubahEjc hhhCj} hFh0hGhHhIKubj)}}(h}(h!]h#]h%]h(]h,]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.](j)}}(h}( refdomainhmjECGtaskjjh,]h#]jh%] refexplicith!]reftypedoch(]uh.]h])}}(h}(h!]h#]h%]h(]h,](jj euh.]h=ECGtask}}(hChmhEj ubahEj hC:doc:`ECGtask `hFh\ubahEj hCj hFjhGhHhIKubh= | }}(hC \| hEj ubj)}}(h}( refdomainhmjECGdelineationjjh,]h#]jh%] refexplicith!]reftypedoch(]uh.]h])}}(h}(h!]h#]h%]h(]h,](jj euh.]h=ECG delineation}}(hChmhEj ubahEj hC':doc:`ECG delineation `hFh\ubahEj hCj hFjhGhHhIKubh= | }}(hC \| hEj ubj)}}(h}( refdomainhmjexamplesjjh,]h#]jh%] refexplicith!]reftypedoch(]uh.]h])}}(h}(h!]h#]h%]h(]h,](jj euh.]h=examples}}(hChmhEj ubahEj hC:doc:`examples `hFh\ubahEj hCj hFjhGhHhIKubehEj hCa:doc:`ECGtask ` \| :doc:`ECG delineation ` \| :doc:`examples `hFhJhGhHhIKubahEjc hhhChmhFjhGhHhINubehEj'hhhChmhFhhGhHhIKubehEhhhhChmhFhhGhHhIKubj)}h+j shhhChmhFhhGhHhIKj,}h'j subjjj-j'jYjSjjji jc jjh'hjpjjj j j j ucurrent_sourceNparse_messages]indirect_targets]refids}(h']j aj]jaj]jaunameids}(jrjpjjj j jk ji j[jYh+h'h*hjjj j jjj/j-u current_lineNhhhChmsettingsdocutils.frontendValues)}}( toc_backlinksentrywarning_streamN language_codeendump_internalsNoutput_encodingutf-8debugNstrict_visitorN report_levelK rfc_base_urlhttps://tools.ietf.org/html/ strip_classesNinput_encoding utf-8-sig_disable_configNdump_pseudo_xmlN raw_enabledKdoctitle_xformerror_encoding_error_handlerbackslashreplacesectsubtitle_xform source_linkN docinfo_xformK source_urlNcloak_email_addresses id_prefixhm halt_levelKexit_status_levelKfile_insertion_enabledembed_stylesheetstrip_commentsN sectnum_xformKerror_encodingcp850expose_internalsNstrip_elements_with_classesNinput_encoding_error_handlerstrictpep_referencesNpep_file_url_templatepep-%04dconfigNrfc_referencesN_sourcehHenvN pep_base_url https://www.python.org/dev/peps/ smart_quotes tab_widthK generatorN traceback _config_files] datestampNsyntax_highlightlong dump_settingsNfootnote_backlinksKrecord_dependenciesNgettext_compacth0Noutput_encoding_error_handlerj9 auto_id_prefixid _destinationNdump_transformsNtrim_footnote_reference_spaceubautofootnote_startKsubstitution_names}reporterNsymbol_footnotes] autofootnotes]id_startKh}(h,]h#]sourcehHh%]h!]h(]uh.]j'ahFhsymbol_footnote_startKtransform_messages](hsystem_message)}}(h}(levelKh,]h#]sourcehHtypeINFOlineKNh%]h!]h(]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h=2Hyperlink target "payload-prop" is not referenced.}}(hChmhEj| ubahEjm hChmhFhJubahChmhFjj ubjk )}}(h}(levelKh,]h#]sourcehHtypeju lineK\h%]h!]h(]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h=IHyperlink target "adding-a-custom-detection-algorithm" is not referenced.}}(hChmhEj ubahEj hChmhFhJubahChmhFjj ubjk )}}(h}(levelKh,]h#]sourcehHtypeju lineKh%]h!]h(]uh.]hK)}}(h}(h!]h#]h%]h(]h,]uh.]h=;Hyperlink target "qrs-det-result-format" is not referenced.}}(hChmhEj ubahEj hChmhFhJubahChmhFjj ube decorationN nametypes}(jrNjj Njk Nj[Nh+h*Njj NjNj/Nuub.