€•*­Œdocutils.nodes”Œdocument”“”)}”’”}”(Œreporter”NŒsymbol_footnote_start”KŒcurrent_source”NŒ footnote_refs”}”Œtransform_messages”]”hŒsystem_message”“”)}”’”}”(Œ rawsource”Œ”Œchildren”]”hŒ paragraph”“”)}”’”}”(Œparent”hhhh]”hŒText”“”Œ=Hyperlink target "arbitrary-result-format" is not referenced.”…”}”’”}”(hhhhubaŒ attributes”}”(Œids”]”Œclasses”]”Œbackrefs”]”Œnames”]”Œdupnames”]”uŒtagname”hubah$}”(h(]”Œsource”Œ>D:\Mariano\misc\ecg-kit\help\sphinx\source\Arbitrary_tasks.rst”Œlevel”Kh*]”h&]”h.]”Œtype”ŒINFO”h,]”Œline”M uh0h ubah0hŒ decoration”NŒ transformer”Nhhh]”hŒsection”“”)}”’”}”(hhhhh]”(hŒtitle”“”)}”’”}”(hhChŒArbitrary tasks”h$}”(h&]”h(]”h*]”h,]”h.]”uh]”hŒArbitrary tasks”…”}”’”}”(hhIhhKubaŒsource”h4h0hFŒline”Khhubh)}”’”}”(hhChŒCThis document describes how to use arbitrary tasks with the ECGkit.”h]”hŒCThis document describes how to use arbitrary tasks with the ECGkit.”…”}”’”}”(hh[hh]ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKhhubhA)}”’”}”(hhChhh]”(hG)}”’”}”(hhkhŒ Description”h$}”(h&]”h(]”h*]”h,]”h.]”uh]”hŒ Description”…”}”’”}”(hhohhqubahXh4h0hFhYK hhubh)}”’”}”(hhkhXSometimes the task you need to perform on ECG signals is too simple to develop a new ECGtask, like computing some statistics, or apply a linear filter, or any type of transformation you may need to perform to the signal. For those cases you may found arbitrary tasks useful.”h]”hXSometimes the task you need to perform on ECG signals is too simple to develop a new ECGtask, like computing some statistics, or apply a linear filter, or any type of transformation you may need to perform to the signal. For those cases you may found arbitrary tasks useful.”…”}”’”}”(hhhh�ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK hhubeh$}”(h&]”Œ description”ah(]”h*]”h,]”Œ description”ah.]”uhXh4h0h@hYK hhubhA)}”’”}”(hhChhh]”(hG)}”’”}”(hh—hŒInput Arguments”h$}”(h&]”h(]”h*]”h,]”h.]”uh]”hŒInput Arguments”…”}”’”}”(hh›hh�ubahXh4h0hFhYKhhubh)}”’”}”(hh—hŒ5The properties that this task uses are the following:”h]”hŒ5The properties that this task uses are the following:”…”}”’”}”(hh«hh­ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKhhubh)}”’”}”(hh—hŒY``progress_handle`` — Used to track the progress within your function. ``[] (default)``”h]”(hŒliteral”“”)}”’”}”(hh»hŒ``progress_handle``”h]”hŒprogress_handle”…”}”’”}”(hhÂhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ6 — Used to track the progress within your function. ”…”}”’”}”(hh»hŒ6 — Used to track the progress within your function. ”ubhÀ)}”’”}”(hh»hŒ``[] (default)``”h]”hŒ [] (default)”…”}”’”}”(hhØhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKhhubhŒ block_quote”“”)}”’”}”(hh—hhh]”h)}”’”}”(hhðhŒ‹progress\_handle, is a handle to a :doc:`progress\_bar ` object, that can be used to track the progress within your function.”h]”(hŒ"progress_handle, is a handle to a ”…”}”’”}”(hhôhŒ#progress\_handle, is a handle to a ”ubŒsphinx.addnodes”Œ pending_xref”“”)}”’”}”(hhôhŒ#:doc:`progress\_bar `”h]”hÀ)}”’”}”(hjhjh]”hŒ progress_bar”…”}”’”}”(hjhhubah$}”(h&]”h(]”(Œxref”Œdoc”eh*]”h,]”h.]”uh0h¿ubah$}”(Œrefdoc”ŒArbitrary_tasks”h(]”Œ reftarget”Œ progress_bar”h*]”Œreftype”jh&]”h.]”Œ refdomain”hŒrefwarn”ˆŒ refexplicit”ˆh,]”uhXh4h0hÿhYKubhŒE object, that can be used to track the progress within your function.”…”}”’”}”(hhôhŒE object, that can be used to track the progress within your function.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubh)}”’”}”(hh—hŒJ``tmp_path`` — The path to store temporary data. ``tempdir() (default)``”h]”(hÀ)}”’”}”(hj8hŒ ``tmp_path``”h]”hŒtmp_path”…”}”’”}”(hj=hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ' — The path to store temporary data. ”…”}”’”}”(hj8hŒ' — The path to store temporary data. ”ubhÀ)}”’”}”(hj8hŒ``tempdir() (default)``”h]”hŒtempdir() (default)”…”}”’”}”(hjShhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKhhubhî)}”’”}”(hh—hhh]”h)}”’”}”(hjihŒ/Full path to a directory with write privileges.”h]”hŒ/Full path to a directory with write privileges.”…”}”’”}”(hjmhjoubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubh)}”’”}”(hh—hŒB``only_ECG_leads`` — Process only ECG signals ``true (default)``”h]”(hÀ)}”’”}”(hjƒhŒ``only_ECG_leads``”h]”hŒonly_ECG_leads”…”}”’”}”(hjˆhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ — Process only ECG signals ”…”}”’”}”(hjƒhŒ — Process only ECG signals ”ubhÀ)}”’”}”(hjƒhŒ``true (default)``”h]”hŒtrue (default)”…”}”’”}”(hjžhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK hhubhî)}”’”}”(hh—hhh]”h)}”’”}”(hj´hŒ]Boolean value. Find out which signals are ECG based on their ``ECG_header.desc`` description.”h]”(hŒ=Boolean value. Find out which signals are ECG based on their ”…”}”’”}”(hj¸hŒ=Boolean value. Find out which signals are ECG based on their ”ubhÀ)}”’”}”(hj¸hŒ``ECG_header.desc``”h]”hŒECG_header.desc”…”}”’”}”(hjÃhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ description.”…”}”’”}”(hj¸hŒ description.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK"ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubh)}”’”}”(hh—hŒ\``payload`` — An arbitrary format variable to be passed to your function. ``[] (default)``”h]”(hÀ)}”’”}”(hjåhŒ ``payload``”h]”hŒpayload”…”}”’”}”(hjêhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒA — An arbitrary format variable to be passed to your function. ”…”}”’”}”(hjåhŒA — An arbitrary format variable to be passed to your function. ”ubhÀ)}”’”}”(hjåhŒ``[] (default)``”h]”hŒ [] (default)”…”}”’”}”(hjhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK$hhubhî)}”’”}”(hh—hhh]”h)}”’”}”(hjhŒBThis variable can be useful for passing data to your own function.”h]”hŒBThis variable can be useful for passing data to your own function.”…”}”’”}”(hjhjubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK&ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubh)}”’”}”(hh—hŒf``signal_payload`` — Consider the result of your arbitrary function as a signal. ``false (default)``”h]”(hÀ)}”’”}”(hj0hŒ``signal_payload``”h]”hŒsignal_payload”…”}”’”}”(hj5hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒA — Consider the result of your arbitrary function as a signal. ”…”}”’”}”(hj0hŒA — Consider the result of your arbitrary function as a signal. ”ubhÀ)}”’”}”(hj0hŒ``false (default)``”h]”hŒfalse (default)”…”}”’”}”(hjKhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK(hhubhî)}”’”}”(hh—hhh]”h)}”’”}”(hjahŒ\Boolean value that indicates the ECGwrapper to produce a signal instead of a result payload.”h]”hŒ\Boolean value that indicates the ECGwrapper to produce a signal instead of a result payload.”…”}”’”}”(hjehjgubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK*ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubh)}”’”}”(hh—hŒT``lead_idx`` — The signal indexes that your function will affect. ``[] (default)``”h]”(hÀ)}”’”}”(hj{hŒ ``lead_idx``”h]”hŒlead_idx”…”}”’”}”(hj€hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ8 — The signal indexes that your function will affect. ”…”}”’”}”(hj{hŒ8 — The signal indexes that your function will affect. ”ubhÀ)}”’”}”(hj{hŒ``[] (default)``”h]”hŒ [] (default)”…”}”’”}”(hj–hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK,hhubhî)}”’”}”(hh—hhh]”h)}”’”}”(hj¬hŒCA positive integer array with values from 1 to ``ECG_header.nsig``.”h]”(hŒ/A positive integer array with values from 1 to ”…”}”’”}”(hj°hŒ/A positive integer array with values from 1 to ”ubhÀ)}”’”}”(hj°hŒ``ECG_header.nsig``”h]”hŒECG_header.nsig”…”}”’”}”(hj»hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ.”…”}”’”}”(hj°hŒ.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK.ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubh)}”’”}”(hh—hŒQ``function_pointer`` — The pointer to your arbitrary function. ``[] (default)``”h]”(hÀ)}”’”}”(hjÝhŒ``function_pointer``”h]”hŒfunction_pointer”…”}”’”}”(hjâhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ- — The pointer to your arbitrary function. ”…”}”’”}”(hjÝhŒ- — The pointer to your arbitrary function. ”ubhÀ)}”’”}”(hjÝhŒ``[] (default)``”h]”hŒ [] (default)”…”}”’”}”(hjøhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK0hhubh)}”’”}”(hh—hŒ)Your function must follow this prototype:”h]”hŒ)Your function must follow this prototype:”…”}”’”}”(hjhjubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK2hhubhŒ literal_block”“”)}”’”}”(hh—hŒUfunction result = your_function( ECG_matrix, ECG_header, progress_handle, payload_in)”h]”hŒUfunction result = your_function( ECG_matrix, ECG_header, progress_handle, payload_in)”…”}”’”}”(hj hj"ubah$}”(h(]”Œcode”ah*]”h&]”h.]”Œ xml:space”Œpreserve”h,]”uhXh4h0jhYK8hhubh)}”’”}”(hh—hŒwhere the arguments are:”h]”hŒwhere the arguments are:”…”}”’”}”(hj3hj5ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK9hhubhî)}”’”}”(hh—hhh]”(h)}”’”}”(hjChŒJ**ECG\_matrix**, is a matrix size ``[ECG\_header.nsamp ECG\_header.nsig]``”h]”(hŒstrong”“”)}”’”}”(hjGhŒ**ECG\_matrix**”h]”hŒ ECG_matrix”…”}”’”}”(hjNhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ, is a matrix size ”…”}”’”}”(hjGhŒ, is a matrix size ”ubhÀ)}”’”}”(hjGhŒ(``[ECG\_header.nsamp ECG\_header.nsig]``”h]”hŒ$[ECG\_header.nsamp ECG\_header.nsig]”…”}”’”}”(hjdhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK;ubh)}”’”}”(hjChŒE**ECG\_header**, is a struct with info about the ECG signal, such as:”h]”(jL)}”’”}”(hjzhŒ**ECG\_header**”h]”hŒ ECG_header”…”}”’”}”(hjhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ6, is a struct with info about the ECG signal, such as:”…”}”’”}”(hjzhŒ6, is a struct with info about the ECG signal, such as:”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK=ubhî)}”’”}”(hjChhh]”(hŒ bullet_list”“”)}”’”}”(hj›h$}”(h(]”Œbullet”Œ-”h*]”h&]”h.]”h,]”uhhh]”(hŒ list_item”“”)}”’”}”(hj¡h$}”(h&]”h(]”h*]”h,]”h.]”uhŒ9*freq*, is the sampling frequency of ECG\_matrix signal. ”h]”h)}”’”}”(hj¯hŒ8*freq*, is the sampling frequency of ECG\_matrix signal.”h]”(hŒemphasis”“”)}”’”}”(hjºhŒ*freq*”h]”hŒfreq”…”}”’”}”(hjÁhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0j¾ubhŒ1, is the sampling frequency of ECG_matrix signal.”…”}”’”}”(hjºhŒ2, is the sampling frequency of ECG\_matrix signal.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK?ubah0j¬ubj­)}”’”}”(hj¡h$}”(h&]”h(]”h*]”h,]”h.]”uhŒ=*desc*, description strings about each of the leads/signals. ”h]”h)}”’”}”(hjÝhŒ<*desc*, description strings about each of the leads/signals.”h]”(j¿)}”’”}”(hjèhŒ*desc*”h]”hŒdesc”…”}”’”}”(hjíhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0j¾ubhŒ6, description strings about each of the leads/signals.”…”}”’”}”(hjèhŒ6, description strings about each of the leads/signals.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKAubah0j¬ubj­)}”’”}”(hj¡h$}”(h&]”h(]”h*]”h,]”h.]”uhŒ1*nsamp* is the number of samples of ECG\_matrix. ”h]”h)}”’”}”(hj hŒ0*nsamp* is the number of samples of ECG\_matrix.”h]”(j¿)}”’”}”(hjhŒ*nsamp*”h]”hŒnsamp”…”}”’”}”(hjhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0j¾ubhŒ( is the number of samples of ECG_matrix.”…”}”’”}”(hjhŒ) is the number of samples of ECG\_matrix.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKCubah0j¬ubj­)}”’”}”(hj¡h$}”(h&]”h(]”h*]”h,]”h.]”uhŒ9*nsig* is the amount of leads or signals of ECG\_matrix. ”h]”h)}”’”}”(hj5hŒ8*nsig* is the amount of leads or signals of ECG\_matrix.”h]”(j¿)}”’”}”(hj@hŒ*nsig*”h]”hŒnsig”…”}”’”}”(hjEhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0j¾ubhŒ1 is the amount of leads or signals of ECG_matrix.”…”}”’”}”(hj@hŒ2 is the amount of leads or signals of ECG\_matrix.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKEubah0j¬ubj­)}”’”}”(hj¡h$}”(h&]”h(]”h*]”h,]”h.]”uhŒS*gain* is a vector of [nsig × 1] with the gain of each lead ( ADCsamples / μV ). ”h]”h)}”’”}”(hjahŒR*gain* is a vector of [nsig × 1] with the gain of each lead ( ADCsamples / μV ).”h]”(j¿)}”’”}”(hjlhŒ*gain*”h]”hŒgain”…”}”’”}”(hjqhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0j¾ubhŒL is a vector of [nsig × 1] with the gain of each lead ( ADCsamples / μV ).”…”}”’”}”(hjlhŒL is a vector of [nsig × 1] with the gain of each lead ( ADCsamples / μV ).”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKGubah0j¬ubj­)}”’”}”(hj¡h$}”(h&]”h(]”h*]”h,]”h.]”uhŒR*adczero* is a vector of [nsig × 1] with the offset of each lead in ADC samples. ”h]”h)}”’”}”(hj�hŒQ*adczero* is a vector of [nsig × 1] with the offset of each lead in ADC samples.”h]”(j¿)}”’”}”(hj˜hŒ *adczero*”h]”hŒadczero”…”}”’”}”(hj�hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0j¾ubhŒH is a vector of [nsig × 1] with the offset of each lead in ADC samples.”…”}”’”}”(hj˜hŒH is a vector of [nsig × 1] with the offset of each lead in ADC samples.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKIubah0j¬ubeh0jžubh)}”’”}”(hj›hŒiand others described in the `Physionet header `__.”h]”(hŒand others described in the ”…”}”’”}”(hj¹hŒand others described in the ”ubhŒ reference”“”)}”’”}”(hj¹h$}”(h(]”Œname”ŒPhysionet header”h*]”h&]”h.]”h,]”Œrefuri”Œ5http://www.physionet.org/physiotools/wag/header-5.htm”uhŒL`Physionet header `__”h]”hŒPhysionet header”…”}”’”}”(hjÆhhubah0jÃubhŒ.”…”}”’”}”(hj¹hjÏubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKKubeh$}”(h&]”h(]”h*]”h,]”h.]”uh0híubh)}”’”}”(hjChŒ�**progress\_handle**, is a handle to a :doc:`progress\_bar ` object, that can be used to track the progress within your function.”h]”(jL)}”’”}”(hjëhŒ**progress\_handle**”h]”hŒprogress_handle”…”}”’”}”(hjðhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ, is a handle to a ”…”}”’”}”(hjëhŒ, is a handle to a ”ubj)}”’”}”(hjëhŒ#:doc:`progress\_bar `”h]”hÀ)}”’”}”(hjhjh]”hŒ progress_bar”…”}”’”}”(hj hhubah$}”(h&]”h(]”(jŒdoc”eh*]”h,]”h.]”uh0h¿ubah$}”(jjh(]”jŒ progress_bar”h*]”Œreftype”jh&]”h.]”Œ refdomain”hj"ˆŒ refexplicit”ˆh,]”uhXh4h0hÿhYKMubhŒE object, that can be used to track the progress within your function.”…”}”’”}”(hjëhŒE object, that can be used to track the progress within your function.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKMubh)}”’”}”(hjChŒ´**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:”h]”(jL)}”’”}”(hj1hŒ**payload\_in**”h]”hŒ payload_in”…”}”’”}”(hj6hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒc, is a user variable, of arbitrary format, allowed to be sent to your function. It is sent via the ”…”}”’”}”(hj1hŒc, is a user variable, of arbitrary format, allowed to be sent to your function. It is sent via the ”ubj)}”’”}”(hj1hŒ&:ref:`payload property `”h]”hŒinline”“”)}”’”}”(hjLhjNh]”hŒpayload property”…”}”’”}”(hjShhubah$}”(h&]”h(]”(jŒstd”Œstd-ref”eh*]”h,]”h.]”uh0jPubah$}”(jjh(]”jŒ payload_prop”h*]”Œreftype”Œref”h&]”h.]”Œ refdomain”j^j"ˆŒ refexplicit”ˆh,]”uhXh4h0hÿhYKPubhŒ of this class, for example:”…”}”’”}”(hj1hŒ of this class, for example:”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKPubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubj)}”’”}”(hh—hXÉ% 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);”h]”hXÉ% 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);”…”}”’”}”(hj�hXÉ% 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);”ubah$}”(h(]”j+ah*]”h&]”h.]”j/j0h,]”uhXh4h0jhYKahhubh)}”’”}”(hh—hŒ”and the output of your function must be a struct variable **result**, or if it is a signal, ensure to make ``true`` the ``signal_payload`` property.”h]”(hŒ:and the output of your function must be a struct variable ”…”}”’”}”(hj’hŒ:and the output of your function must be a struct variable ”ubjL)}”’”}”(hj’hŒ **result**”h]”hŒresult”…”}”’”}”(hj�hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ', or if it is a signal, ensure to make ”…”}”’”}”(hj’hŒ', or if it is a signal, ensure to make ”ubhÀ)}”’”}”(hj’hŒ``true``”h]”hŒtrue”…”}”’”}”(hj³hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ the ”…”}”’”}”(hj’hŒ the ”ubhÀ)}”’”}”(hj’hŒ``signal_payload``”h]”hŒsignal_payload”…”}”’”}”(hjÉhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ property.”…”}”’”}”(hj’hŒ property.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKbhhubh)}”’”}”(hh—hŒo``finish_func_pointer`` — A pointer to your arbitrary finish function. ``@default_finish_function (default)``”h]”(hÀ)}”’”}”(hjåhŒ``finish_func_pointer``”h]”hŒfinish_func_pointer”…”}”’”}”(hjêhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ2 — A pointer to your arbitrary finish function. ”…”}”’”}”(hjåhŒ2 — A pointer to your arbitrary finish function. ”ubhÀ)}”’”}”(hjåhŒ&``@default_finish_function (default)``”h]”hŒ"@default_finish_function (default)”…”}”’”}”(hjhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKehhubh)}”’”}”(hh—hX+A function that will operate over the whole result of your arbitrary function, after the payloads resulting of each iteration were concatenated. This is only used when the result of your ``function_pointer`` is **not** a signal (``signal_payload = false``). Your function must follow this prototype:”h]”(hŒ»A function that will operate over the whole result of your arbitrary function, after the payloads resulting of each iteration were concatenated. This is only used when the result of your ”…”}”’”}”(hjhŒ»A function that will operate over the whole result of your arbitrary function, after the payloads resulting of each iteration were concatenated. This is only used when the result of your ”ubhÀ)}”’”}”(hjhŒ``function_pointer``”h]”hŒfunction_pointer”…”}”’”}”(hj!hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ is ”…”}”’”}”(hjhŒ is ”ubjL)}”’”}”(hjhŒ**not**”h]”hŒnot”…”}”’”}”(hj7hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ a signal (”…”}”’”}”(hjhŒ a signal (”ubhÀ)}”’”}”(hjhŒ``signal_payload = false``”h]”hŒsignal_payload = false”…”}”’”}”(hjMhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ,). Your function must follow this prototype:”…”}”’”}”(hjhŒ,). Your function must follow this prototype:”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKghhubj)}”’”}”(hh—hŒ3payload = your_finish_function(payload, ECG_header)”h]”hŒ3payload = your_finish_function(payload, ECG_header)”…”}”’”}”(hjihjkubah$}”(h(]”j+ah*]”h&]”h.]”j/j0h,]”uhXh4h0jhYKohhubh)}”’”}”(hh—hŒwhere the arguments are:”h]”hŒwhere the arguments are:”…”}”’”}”(hjyhj{ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKphhubhî)}”’”}”(hh—hhh]”(h)}”’”}”(hj‰hŒ%**payload**, is the complete payload.”h]”(jL)}”’”}”(hj�hŒ **payload**”h]”hŒpayload”…”}”’”}”(hj’hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ, is the complete payload.”…”}”’”}”(hj�hŒ, is the complete payload.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKrubh)}”’”}”(hj‰hŒU**ECG\_header**, is a struct with info about the ECG signal, see above for reference.”h]”(jL)}”’”}”(hj®hŒ**ECG\_header**”h]”hŒ ECG_header”…”}”’”}”(hj³hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒF, is a struct with info about the ECG signal, see above for reference.”…”}”’”}”(hj®hŒF, is a struct with info about the ECG signal, see above for reference.”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKtubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubh)}”’”}”(hh—hŒuand this function will change the payload variable as according to your needs and return it to the ECGwrapper object.”h]”hŒuand this function will change the payload variable as according to your needs and return it to the ECGwrapper object.”…”}”’”}”(hjÕhj×ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKvhhubh)}”’”}”(hh—hŒ|``concate_func_pointer`` — The pointer to your arbitrary concatenate function. ``@default_concatenate_function (default)``”h]”(hÀ)}”’”}”(hjåhŒ``concate_func_pointer``”h]”hŒconcate_func_pointer”…”}”’”}”(hjêhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ9 — The pointer to your arbitrary concatenate function. ”…”}”’”}”(hjåhŒ9 — The pointer to your arbitrary concatenate function. ”ubhÀ)}”’”}”(hjåhŒ+``@default_concatenate_function (default)``”h]”hŒ'@default_concatenate_function (default)”…”}”’”}”(hjhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKxhhubh)}”’”}”(hh—hŒïA function that will concatenate or integrate the information produced in each part of your recording, when the result of your ``function_pointer`` is **not** a signal (``signal_payload = false``). Your function must follow this prototype:”h]”(hŒA function that will concatenate or integrate the information produced in each part of your recording, when the result of your ”…”}”’”}”(hjhŒA function that will concatenate or integrate the information produced in each part of your recording, when the result of your ”ubhÀ)}”’”}”(hjhŒ``function_pointer``”h]”hŒfunction_pointer”…”}”’”}”(hj!hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ is ”…”}”’”}”(hjhŒ is ”ubjL)}”’”}”(hjhŒ**not**”h]”hŒnot”…”}”’”}”(hj7hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ a signal (”…”}”’”}”(hjhŒ a signal (”ubhÀ)}”’”}”(hjhŒ``signal_payload = false``”h]”hŒsignal_payload = false”…”}”’”}”(hjMhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ,). Your function must follow this prototype:”…”}”’”}”(hjhŒ,). Your function must follow this prototype:”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYKzhhubj)}”’”}”(hh—hŒ-payload = your_concatenate_function(plA, plB)”h]”hŒ-payload = your_concatenate_function(plA, plB)”…”}”’”}”(hjihjkubah$}”(h(]”j+ah*]”h&]”h.]”j/j0h,]”uhXh4h0jhYK�hhubh)}”’”}”(hh—hŒwhere the arguments are:”h]”hŒwhere the arguments are:”…”}”’”}”(hjyhj{ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK‚hhubhî)}”’”}”(hh—hhh]”h)}”’”}”(hj‰hŒ7**plA** and **plB** are the two payloads to concatenate”h]”(jL)}”’”}”(hj�hŒ**plA**”h]”hŒplA”…”}”’”}”(hj’hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ and ”…”}”’”}”(hj�hŒ and ”ubjL)}”’”}”(hj�hŒ**plB**”h]”hŒplB”…”}”’”}”(hj¨hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ$ are the two payloads to concatenate”…”}”’”}”(hj�hŒ$ are the two payloads to concatenate”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK„ubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubh)}”’”}”(hh—hŒåand this function will integrate or concatenate both payloads into the resulting payload. This resulting payload, will be plA in the next iteration of concatenation. The ``default_concatenate_function`` just concatenate payloads:”h]”(hŒªand this function will integrate or concatenate both payloads into the resulting payload. This resulting payload, will be plA in the next iteration of concatenation. The ”…”}”’”}”(hjÊhŒªand this function will integrate or concatenate both payloads into the resulting payload. This resulting payload, will be plA in the next iteration of concatenation. The ”ubhÀ)}”’”}”(hjÊhŒ ``default_concatenate_function``”h]”hŒdefault_concatenate_function”…”}”’”}”(hjÕhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubhŒ just concatenate payloads:”…”}”’”}”(hjÊhŒ just concatenate payloads:”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK†hhubj)}”’”}”(hh—hŒ¸% The default behavior of the concatenate function is to concatenate % payloads vertically or row-wise. if( isempty(plA) ) payload = plB; else payload = [plA; plB]; end”h]”hŒ¸% The default behavior of the concatenate function is to concatenate % payloads vertically or row-wise. if( isempty(plA) ) payload = plB; else payload = [plA; plB]; end”…”}”’”}”(hjñhŒ¸% The default behavior of the concatenate function is to concatenate % payloads vertically or row-wise. if( isempty(plA) ) payload = plB; else payload = [plA; plB]; end”ubah$}”(h(]”j+ah*]”h&]”h.]”j/j0h,]”uhXh4h0jhYK“hhubeh$}”(h&]”Œinput-arguments”ah(]”h*]”h,]”Œinput arguments”ah.]”uhXh4h0h@hYKhhubhA)}”’”}”(hhChhh]”(hG)}”’”}”(hj hŒExamples”h$}”(h&]”h(]”h*]”h,]”h.]”uh]”hŒExamples”…”}”’”}”(hjhjubahXh4h0hFhYK•hhubhŒenumerated_list”“”)}”’”}”(hj hhh]”j­)}”’”}”(hj hŒ2Arbitrary task producing a **signal** as a result ”h$}”(h&]”h(]”h*]”h,]”h.]”uh]”h)}”’”}”(hj$hŒ1Arbitrary task producing a **signal** as a result”h]”(hŒArbitrary task producing a ”…”}”’”}”(hj/hŒArbitrary task producing a ”ubjL)}”’”}”(hj/hŒ **signal**”h]”hŒsignal”…”}”’”}”(hj:hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubhŒ as a result”…”}”’”}”(hj/hŒ as a result”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK—ubahXh4h0j¬hYNhhubah$}”(Œenumtype”Œarabic”h(]”Œsuffix”jÏh*]”h&]”h.]”Œprefix”hh,]”uhXh4h0jhYK—hhubhî)}”’”}”(hj hhh]”(h)}”’”}”(hj`hŒ�This example is used in the QRScorrector function to perform template-matching on an ECGwrapper (arbitrary big recording) object.”h]”hŒ�This example is used in the QRScorrector function to perform template-matching on an ECGwrapper (arbitrary big recording) object.”…”}”’”}”(hjdhjfubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK™ubj)}”’”}”(hj`hX¼aux_w = ECGwrapper('recording_name', 'your_path/recname'); aux_w.ECGtaskHandle = 'arbitrary_function'; % This is in case you want always to recalculate results, no caching aux_w.cacheResults = false; % Use first and third columns-signals aux_w.ECGtaskHandle.lead_idx = [1 3]; % Produce a signal as a result aux_w.ECGtaskHandle.signal_payload = true; % Add a user-string to identify the run aux_w.ECGtaskHandle.user_string = ['similarity_calc_for_lead_' num2str(sort(lead_idx)) ]; % add your function pointer aux_w.ECGtaskHandle.function_pointer = @similarity_calculation; % and any data your function may need. aux_w.ECGtaskHandle.payload = pattern2detect; % and you are ready to go ! aux_w.Run”h]”hX¼aux_w = ECGwrapper('recording_name', 'your_path/recname'); aux_w.ECGtaskHandle = 'arbitrary_function'; % This is in case you want always to recalculate results, no caching aux_w.cacheResults = false; % Use first and third columns-signals aux_w.ECGtaskHandle.lead_idx = [1 3]; % Produce a signal as a result aux_w.ECGtaskHandle.signal_payload = true; % Add a user-string to identify the run aux_w.ECGtaskHandle.user_string = ['similarity_calc_for_lead_' num2str(sort(lead_idx)) ]; % add your function pointer aux_w.ECGtaskHandle.function_pointer = @similarity_calculation; % and any data your function may need. aux_w.ECGtaskHandle.payload = pattern2detect; % and you are ready to go ! aux_w.Run”…”}”’”}”(hjthX¼aux_w = ECGwrapper('recording_name', 'your_path/recname'); aux_w.ECGtaskHandle = 'arbitrary_function'; % This is in case you want always to recalculate results, no caching aux_w.cacheResults = false; % Use first and third columns-signals aux_w.ECGtaskHandle.lead_idx = [1 3]; % Produce a signal as a result aux_w.ECGtaskHandle.signal_payload = true; % Add a user-string to identify the run aux_w.ECGtaskHandle.user_string = ['similarity_calc_for_lead_' num2str(sort(lead_idx)) ]; % add your function pointer aux_w.ECGtaskHandle.function_pointer = @similarity_calculation; % and any data your function may need. aux_w.ECGtaskHandle.payload = pattern2detect; % and you are ready to go ! aux_w.Run”ubah$}”(h(]”j+ah*]”h&]”h.]”j/j0h,]”uh0jubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXNh0híhYNhhubj)}”’”}”(hj hhh]”j­)}”’”}”(hj‹hŒ1Arbitrary task producing an **arbitrary result** ”h$}”(h&]”h(]”h*]”h,]”h.]”uh]”h)}”’”}”(hj�hŒ0Arbitrary task producing an **arbitrary result**”h]”(hŒArbitrary task producing an ”…”}”’”}”(hjšhŒArbitrary task producing an ”ubjL)}”’”}”(hjšhŒ**arbitrary result**”h]”hŒarbitrary result”…”}”’”}”(hj¥hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0jKubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK·ubahXh4h0j¬hYNhhubah$}”(jVjWh(]”jYjÏh*]”h&]”h.]”j]hh,]”Œstart”KuhXh4h0jhYK·hhubhî)}”’”}”(hj hhh]”(h)}”’”}”(hjÂhŒJThis is achieved by defining 3 properties (function handles) that perform:”h]”hŒJThis is achieved by defining 3 properties (function handles) that perform:”…”}”’”}”(hjÆhjÈubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK¹ubjŸ)}”’”}”(hjÂh$}”(h(]”j¥j¦h*]”h&]”h.]”h,]”uhhh]”(j­)}”’”}”(hjÖh$}”(h&]”h(]”h*]”h,]”h.]”uhŒLThe arbitrary task, which produces an arbitrary result ``function_pointer`` ”h]”h)}”’”}”(hjàhŒKThe arbitrary task, which produces an arbitrary result ``function_pointer``”h]”(hŒ7The arbitrary task, which produces an arbitrary result ”…”}”’”}”(hjëhŒ7The arbitrary task, which produces an arbitrary result ”ubhÀ)}”’”}”(hjëhŒ``function_pointer``”h]”hŒfunction_pointer”…”}”’”}”(hjöhhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0h¿ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYK»ubah0j¬ubj­)}”’”}”(hjÖh$}”(h&]”h(]”h*]”h,]”h.]”uhŒ. Otherwise, the results depends on the user-defined output of”…”}”’”}”(hjõ hŒ>. Otherwise, the results depends on the user-defined output of”ubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYMhhubeh$}”(h&]”(Œresults-format”jÖ eh(]”h*]”h,]”(Œresults format”Œarbitrary_result_format”eh.]”uhXh4Œexpect_referenced_by_id”}”jÖ jÌ sŒexpect_referenced_by_name”}”j< jÌ sh0h@hYM hhubhA)}”’”}”(hhChhh]”(hG)}”’”}”(hjC hŒSee Also”h$}”(h&]”h(]”h*]”h,]”h.]”uh]”hŒSee Also”…”}”’”}”(hjG hjI ubahXh4h0hFhYMhhubhî)}”’”}”(hjC hhh]”h)}”’”}”(hjW hŒ‰:doc:`ECGtask ` \| :doc:`QRS detection ` \| :doc:`ECG delineation ` \| :doc:`examples `”h]”(j)}”’”}”(hj[ hŒ:doc:`ECGtask `”h]”hÀ)}”’”}”(hj` hjb h]”hŒECGtask”…”}”’”}”(hje hhubah$}”(h&]”h(]”(jŒdoc”eh*]”h,]”h.]”uh0h¿ubah$}”(jjh(]”jŒECGtask”h*]”Œreftype”jp h&]”h.]”Œ refdomain”hj"ˆŒ refexplicit”ˆh,]”uhXh4h0hÿhYMubhŒ | ”…”}”’”}”(hj[ hŒ \| ”ubj)}”’”}”(hj[ hŒ$:doc:`QRS detection `”h]”hÀ)}”’”}”(hj… hj‡ h]”hŒ QRS detection”…”}”’”}”(hjŠ hhubah$}”(h&]”h(]”(jŒdoc”eh*]”h,]”h.]”uh0h¿ubah$}”(jjh(]”jŒ QRS_detection”h*]”Œreftype”j• h&]”h.]”Œ refdomain”hj"ˆŒ refexplicit”ˆh,]”uhXh4h0hÿhYMubhŒ | ”…”}”’”}”(hj[ hŒ \| ”ubj)}”’”}”(hj[ hŒ':doc:`ECG delineation `”h]”hÀ)}”’”}”(hjª hj¬ h]”hŒECG delineation”…”}”’”}”(hj¯ hhubah$}”(h&]”h(]”(jŒdoc”eh*]”h,]”h.]”uh0h¿ubah$}”(jjh(]”jŒECGdelineation”h*]”Œreftype”jº h&]”h.]”Œ refdomain”hj"ˆŒ refexplicit”ˆh,]”uhXh4h0hÿhYMubhŒ | ”…”}”’”}”(hj[ hŒ \| ”ubj)}”’”}”(hj[ hŒ:doc:`examples `”h]”hÀ)}”’”}”(hjÏ hjÑ h]”hŒexamples”…”}”’”}”(hjÔ hhubah$}”(h&]”h(]”(jŒdoc”eh*]”h,]”h.]”uh0h¿ubah$}”(jjh(]”jŒexamples”h*]”Œreftype”jß h&]”h.]”Œ refdomain”hj"ˆŒ refexplicit”ˆh,]”uhXh4h0hÿhYMubeh$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0hhYMubah$}”(h&]”h(]”h*]”h,]”h.]”uhXh4h0híhYNhhubjÊ )}”’”}”(hjC hŒG.. _`MIT format`: http://www.physionet.org/physiotools/wag/signal-5.htm”h]”Œ referenced”Kh$}”(h(]”jÐj! h*]”h&]”Œ mit-format”ah.]”h,]”Œ mit format”auhXh4h0jÉ hYMhhubeh$}”(h&]”Œsee-also”ah(]”h*]”h,]”Œsee also”ah.]”uhXh4h0h@hYMhhubeh$}”(h&]”Œarbitrary-tasks”ah(]”h*]”h,]”Œarbitrary tasks”ah.]”uhXh4h0h@hYKhhubaŒautofootnote_refs”]”Œsettings”Œdocutils.frontend”ŒValues”“”)}”’”}”(Œenv”NhFNŒconfig”NŒ source_url”NŒauto_id_prefix”Œid”Œ generator”NŒtrim_footnote_reference_space”‰Œ toc_backlinks”Œentry”Œexit_status_level”KŒdump_pseudo_xml”NŒgettext_compact”ˆŒwarning_stream”NŒ _destination”NŒoutput_encoding”Œutf-8”Œ language_code”Œen”Œstrip_comments”NŒ sectnum_xform”KŒsyntax_highlight”Œlong”Œ docinfo_xform”KŒpep_references”NŒ rfc_base_url”Œhttps://tools.ietf.org/html/”Œerror_encoding_error_handler”Œbackslashreplace”Œsectsubtitle_xform”‰Œ dump_settings”NŒ datestamp”NŒdump_transforms”NŒrfc_references”NŒ pep_base_url”Œ https://www.python.org/dev/peps/”Œdebug”NŒ strip_classes”NŒ halt_level”KŒ smart_quotes”‰Œstrict_visitor”NŒ raw_enabled”KŒpep_file_url_template”Œpep-%04d”Œ _config_files”]”Œstrip_elements_with_classes”NŒinput_encoding_error_handler”Œstrict”Œfootnote_backlinks”KŒerror_encoding”Œcp850”Œ report_level”KŒinput_encoding”Œ utf-8-sig”Œ_disable_config”NŒ traceback”ˆŒ id_prefix”hŒcloak_email_addresses”ˆŒ tab_width”KŒoutput_encoding_error_handler”jO Œfile_insertion_enabled”ˆŒexpose_internals”NŒrecord_dependencies”NŒ_source”h4Œdump_internals”NŒembed_stylesheet”‰Œdoctitle_xform”‰Œ source_link”NubŒ current_line”NŒ citation_refs”}”Œparse_messages”]”h)}”’”}”(hj hhh]”h)}”’”}”(hjj hhh]”hŒ:Enumerated list start value not ordinal-1: "2" (ordinal 2)”…”}”’”}”(hjn hhubah$}”(h&]”h(]”h*]”h,]”h.]”uh0hubah$}”(h(]”Œsource”h4Œlevel”Kh*]”h&]”h.]”Œtype”h:h,]”Œline”KuhXh4h0h hYK·hhubaŒsubstitution_names”}”h$}”(h(]”Œsource”h4h*]”h&]”h.]”h,]”uŒ citations”]”hhŒids”}”(j7 já j jú jh—jÖ já h�hkj hCjÚ j j jC uŒrefnames”}”Œ mit format”]”j asŒrefids”}”jÖ ]”jÌ asŒsymbol_footnote_refs”]”Œsymbol_footnotes”]”Œsubstitution_defs”}”Œid_start”KŒnameids”}”(j j j< jÖ jjj; j7 h”h�j j jÞ jÚ j j uŒ nametypes”}”(j Nj< ˆjNj; Nh”Nj NjÞ Nj ˆuŒautofootnote_start”KŒindirect_targets”]”Œ autofootnotes”]”Œ footnotes”]”ub.