Module: cardiac

Cardiac analysis nodes.

These nodes analyze cardiac data, for instance from ECG or PPG sensors.

HeartRate

Calculate the heart rate (BPM) from detected R peaks in QRS complexes.

The input to this node should be the output of the RDetection node, or a packet having a marker stream ending in -peaks with events corresponding to the R peaks and having an instance axis where the times array holds the timestamps of those peaks. The calculated BMP is based on the event markers contained within a sliding window of the defined length. The output of this node is a new stream with the same name as the input stream except peaks is replaced by hr (i.e., eeg-hr). This stream will contain a time axis with an irregular sampling rate, and a feature axis with a single element named HR.

More Info...

Version 1.0.0

Ports/Properties

  • metadata
    User-definable meta-data associated with the node. Usually reserved for technical purposes.

    • verbose name: Metadata
    • default value: {}
    • port type: DictPort
    • value type: dict (can be None)
  • data
    Data to process.

    • verbose name: Data
    • default value: None
    • port type: DataPort
    • value type: Packet (can be None)
    • data direction: INOUT
  • window_length
    Sliding window length (beats or seconds). If the length of data is more than this length, the data will be segmented into this processing window. If the length of data is less than this window, the data will be buffered to get more data.

    • verbose name: Processing Sliding Window Length
    • default value: 10
    • port type: FloatPort
    • value type: float (can be None)
  • window_shift
    Shift window length (beats or seconds). The processing window is shifted by this length. Therefore, it should be less than or equal to the processing window. If it is less than the processing window, there will be overlap between two consecutive processing windows. If shift window is the same as the processing window, then there will be no overlap between two consecutive processing windows.

    • verbose name: Shift Window Length
    • default value: 3
    • port type: FloatPort
    • value type: float (can be None)
  • window_length_unit
    Unit in which the window length is given.

    • verbose name: Window Length Unit
    • default value: seconds
    • port type: EnumPort
    • value type: str (can be None)
  • override_axes
    Replace the incoming instance axis with a time axis, add a feature axis with a single element named HR. If False, a feature axis will not be added, and instead a field will be added to the incoming instance axis.

    • verbose name: Override Axes
    • default value: True
    • port type: BoolPort
    • value type: bool (can be None)
  • field_name
    The name of the new instance axis field or FeatureAxis name if using override_axes.

    • verbose name: Field Name
    • default value: HR
    • port type: StringPort
    • value type: str (can be None)
  • set_breakpoint
    Set a breakpoint on this node. If this is enabled, your debugger (if one is attached) will trigger a breakpoint.

    • verbose name: Set Breakpoint (Debug Only)
    • default value: False
    • port type: BoolPort
    • value type: bool (can be None)

HeartRateVariability

This node calculates heart rate variability (HRV) from the detected R peaks in QRS complexes.

The input to this node should be the output of the RDetection node, or a packet having a marker stream named -peaks with events corresponding to the R peaks and having an instance axis where the times array holds the timestamps of those peaks. The calculated HRV statistics are based on the event markers contained within a sliding window of the defined length. The following 8 time-domain heart variability measures or statistics are calculated: - RRI (ms): R peak-to-peak interval. - SDNN (ms): the standard deviation of peak intervals - RMSSD (ms): root mean square of successive peak interval differences - SDSD (ms): standard deviation of successive peak interval differences - NN50 (#): the number of pairs of adjacent peak intervals that differ more than 50 ms - pNN50 (%): the percentage of adjacent peal interval differences that differ from each other more than 50 ms - NN20 (#): the number of pairs of adjacent peak intervals that differ more than 20 ms - pNN20 (%), the percentage of adjacent peak interval differences that differ from each other more than 20 ms. The output of this node is a new stream having the same name as the input stream except that peaks is replaced by hrv (i.e., eeg-hrv), containing a feature axis with 8 elements named as shown above.

More Info...

Version 1.2.0

Ports/Properties

  • metadata
    User-definable meta-data associated with the node. Usually reserved for technical purposes.

    • verbose name: Metadata
    • default value: {}
    • port type: DictPort
    • value type: dict (can be None)
  • data
    Data to process.

    • verbose name: Data
    • default value: None
    • port type: DataPort
    • value type: Packet (can be None)
    • data direction: INOUT
  • window_length
    Sliding window length (beats or seconds). A history of events spanning this duration (or this many events) will be used to calculate heart rate variability statistics.

    • verbose name: Processing Sliding Window Length
    • default value: 300
    • port type: FloatPort
    • value type: float (can be None)
  • window_length_unit
    Unit in which the window length is given.

    • verbose name: Window Length Unit
    • default value: seconds
    • port type: EnumPort
    • value type: str (can be None)
  • wait_full_buffer
    Wait for the full sliding window buffer to be filled before calculating and outputting HRV statistics.

    • verbose name: Wait For Full Buffer
    • default value: False
    • port type: BoolPort
    • value type: bool (can be None)
  • override_axes
    Replace the incoming instance axis with a time axis, add a feature axis with a single element named HRV. If False, a feature axis will not be added, and instead a field will be added to the incoming instance axis.

    • verbose name: Override Axes
    • default value: True
    • port type: BoolPort
    • value type: bool (can be None)
  • window_shift

    • verbose name: Window Shift
    • default value: 0
    • port type: FloatPort
    • value type: float (can be None)
  • set_breakpoint
    Set a breakpoint on this node. If this is enabled, your debugger (if one is attached) will trigger a breakpoint.

    • verbose name: Set Breakpoint (Debug Only)
    • default value: False
    • port type: BoolPort
    • value type: bool (can be None)

RDetection

Detect R peaks in QRS complexes in ECG time series and peaks in PPG time series base on a modified version of the Pan-Tompkin algorithm.

It can also detect peaks in PPG signals. The input stream should contain ECG or PPG data in a single channel. (If your data has multiple ECG channels, use the Mean node before this one to average them.) The time of the detected peaks will be placed in an instance axis of a new stream with the name of the input stream appended by "-peaks" (i.e., eee-peaks). The values (amplitudes) of the input signal at the peak times are also saved in the data tensor of the new stream. This node is typically followed with either the HeartRate, HeartRateVariability or RespirationRate nodes, all of which can take in its output.

More Info...

Version 1.2.0

Ports/Properties

  • metadata
    User-definable meta-data associated with the node. Usually reserved for technical purposes.

    • verbose name: Metadata
    • default value: {}
    • port type: DictPort
    • value type: dict (can be None)
  • data
    Data to process.

    • verbose name: Data
    • default value: None
    • port type: DataPort
    • value type: Packet (can be None)
    • data direction: INOUT
  • win_processing
    Sliding window length in second. If the length of data is more than this length, the data will be segmented into this processing window. If the length of data is less than this window, the data will be buffered to get more data.

    • verbose name: Processing Sliding Window Length
    • default value: 7
    • port type: FloatPort
    • value type: float (can be None)
  • win_shift
    Shift window length in seconds. The processing window is shifted by this length. Therefore, it should be less than or equal to the processing window. If it is less than the processing window, there will be overlap between two consecutive processing windows. If shift window is the same as the processing window, then there will be no overlap between two consecutive processing windows.

    • verbose name: Shift Window Length
    • default value: 1
    • port type: FloatPort
    • value type: float (can be None)
  • sensitivity_threshold
    The peaks with an amplitude less than the average amplitude in the processing window multiplied by this value (between 0 and 1) will not be detected. In a noisy data recording, decreasing this value decreases false positive rate. In a clean data recording, increasing this value reduces false negative rate.

    • verbose name: Sensitivity
    • default value: 0.4
    • port type: FloatPort
    • value type: float (can be None)
  • max_heartrate
    This is the maximum heart rate (beats per minute) that is assumed to exist in the data.

    • verbose name: Max Heart Rate
    • default value: 240
    • port type: FloatPort
    • value type: float (can be None)
  • win_ave
    Window length in seconds used to smooth the incoming data before detection.

    • verbose name: Smoothing Window Length
    • default value: 0.15
    • port type: FloatPort
    • value type: float (can be None)
  • win_median
    Window length in seconds to be used to find the median of the incoming data.

    • verbose name: Median Window Length
    • default value: 0.055
    • port type: FloatPort
    • value type: float (can be None)
  • set_breakpoint
    Set a breakpoint on this node. If this is enabled, your debugger (if one is attached) will trigger a breakpoint.

    • verbose name: Set Breakpoint (Debug Only)
    • default value: False
    • port type: BoolPort
    • value type: bool (can be None)

RespRate

Calculate the respiratory rate from R peaks detected from ECG or PPG data.

This node should usually be preceded by the RDetection node (or another node that outputs data in the same format, that is: the incoming packet must have a stream with the ECG or PPG time series, and a marker stream with a name ending in '-peaks' and having the detected R peaks as events). This node calculates the respiration rate (breaths per minute) over a sliding window of the defined length. The output of this node is a stream with a feature axis having a single element named RR and a time axis with the heart beat timestamps (irregular rate). The output stream name will be the same as the input stream, replacing -peaks with -resp-rate.

More Info...

Version 1.0.0

Ports/Properties

  • metadata
    User-definable meta-data associated with the node. Usually reserved for technical purposes.

    • verbose name: Metadata
    • default value: {}
    • port type: DictPort
    • value type: dict (can be None)
  • data
    Data to process.

    • verbose name: Data
    • default value: None
    • port type: DataPort
    • value type: Packet (can be None)
    • data direction: INOUT
  • window_length
    Sliding window length (beats or seconds). If the length of data is more than this length, the data will be segmented into this processing window. If the length of data is less than this window, the data will be buffered to get more data.

    • verbose name: Processing Sliding Window Length
    • default value: 60
    • port type: FloatPort
    • value type: float (can be None)
  • wait_full_buffer
    Wait for the full window buffer as specified above before outputting Respiration Rate values

    • verbose name: Wait For Full Buffer
    • default value: False
    • port type: BoolPort
    • value type: bool (can be None)
  • window_shift
    Shift window length (beats or seconds). The processing window is shifted by this length. Therefore, it should be less than or equal to the processing window. If it is less than the processing window, there will be an overlap between two consecutive processing windows. If the shift window is the same as the processing window, then there will be no overlap between two consecutive processing windows.

    • verbose name: Shift Window Length
    • default value: 1
    • port type: FloatPort
    • value type: float (can be None)
  • window_length_unit
    Unit in which the window length is given.

    • verbose name: Window Length Unit
    • default value: seconds
    • port type: EnumPort
    • value type: str (can be None)
  • minimum_respiration_rate
    The assumed minimum respiration rate (breaths per minute).

    • verbose name: Minimum Respiration Rate
    • default value: 10
    • port type: FloatPort
    • value type: float (can be None)
  • maximum_respiration_rate
    The assumed maximum respiration rate (breaths per minute).

    • verbose name: Maximum Respiration Rate (Respiration Per Minute)
    • default value: 28
    • port type: FloatPort
    • value type: float (can be None)
  • smooth_it
    Smooth the calculated respiration rate output with an exponential decay. If False, the output will may have significant variability and is best followed by a MovingAverage node.

    • verbose name: Smooth Rate
    • default value: True
    • port type: BoolPort
    • value type: bool (can be None)
  • override_axes
    Replace the incoming instance axis with a time axis, add a feature axis with a single element named RR. If False, a feature axis will not be added, and instead a field will be added to the incoming instance axis.

    • verbose name: Override Axes
    • default value: True
    • port type: BoolPort
    • value type: bool (can be None)
  • field_name
    The name of the element in the feature axis.

    • verbose name: Field Name
    • default value: RR
    • port type: StringPort
    • value type: str (can be None)
  • set_breakpoint
    Set a breakpoint on this node. If this is enabled, your debugger (if one is attached) will trigger a breakpoint.

    • verbose name: Set Breakpoint (Debug Only)
    • default value: False
    • port type: BoolPort
    • value type: bool (can be None)