Device for determining the length of the cardiac activation cycle
The device addresses the challenge of determining LCL during atrial fibrillation by processing cardiac electrogram signals to extract and refine activation segments, achieving precise LCL estimation for catheter ablation procedures.
Patent Information
- Authority / Receiving Office
- FR · FR
- Patent Type
- Patents
- Current Assignee / Owner
- SUBSTRATE HD
- Filing Date
- 2022-06-30
- Publication Date
- 2026-06-26
Smart Images

Figure 00000022_0000 
Figure 00000022_0001 
Figure 00000022_0002
Abstract
Description
Title of the invention: Device for determining the length of the cardiac activation cycle
[0001] The invention relates to the field of analysis of cardiac electrogram signals (hereinafter "EGM").
[0002] Cardiac electrograms are obtained by introducing catheters into a person's heart and by measuring cardiac signals through them.
[0003] Cycle length (or "CL") is a measurement used to characterize electrical activity in the atria. This characterization is particularly useful for guiding practitioners during catheter ablation procedures. It is measured in milliseconds and generally reflects the time it takes for a complete cycle of relaxation and contraction of the atria (or ventricles, or both) to occur.
[0004] For physicians, it is important to monitor two values: a global atrial cycle length (CL) – recorded from the stable reference catheter – and a local cycle length (LCL) – a characteristic of the electrical activity under the mapping catheter that differs from the global cycle length in the pathological substrate. In the following, the term CL will be used to refer to the global cycle length, and the term LCL to refer to the cycle length of the mapping catheter.
[0005] During atrial fibrillation (or "AF"), there is no single wavefront originating from the sinoatrial node, but rather multiple wavefronts reflecting the propagation of the potential in different parts of the atria depending on the electrical remodeling of the cardiac tissue. For example, recent research has shown that areas where catheter ablation has successfully terminated persistent AF exhibit rapid and organized activity. For these reasons, LCL estimation is very important to help locate these areas quickly. The relative difference between LCL and CL length values allows for an assessment of the mapped area. Ideally, the clinician should have access to a reliable LCL estimate at a sufficient refresh rate for optimal clinical workflow.
[0006] This estimation is extremely difficult to perform. Indeed, local electrical activity is often generated by several neighboring sources with different characteristics, resulting in EGMs characterized by high variability in both amplitude and waveforms, which makes LCL analysis more difficult. Furthermore, the mapping catheter is not fixed and moves considerably during catheter ablation, causing the signals to be strongly influenced by noise. added by the various sources and the activity of the far field during the non-contact phases.
[0007] Current solutions generally fall into two categories. The first category is based on conventional signal processing methods, for example, those based on the fast Fourier transform or on the study of autocorrelation, a classic method used to evaluate cycle length for periodic signals of any kind. The second category includes various adaptive thresholding methods based on the detection of atrial activations by amplitude. These methods represent the recent trend in computational cardiology research.
[0008] Some of these methods will now be described. All of them propose their own specific preprocessing, but this is almost always based on the preprocessing introduced in the article by Botteron and Smith "A technique for measurement of the extent of spatial organization of atrial activation during atrial fibrillation in the intact human heart", IEEE Transactions on Biomedical Engineering, vol. 42, no. 6, pp. 579-586, 1995. This preprocessing begins with the application of a 40-250 Hz bandpass filter to accentuate the signal corresponding to local depolarization, followed by rectification of the resulting signal to take into account the biphasic nature of bipolar recordings, and ends with the application of a low-pass filter with a cutoff at 20 Hz to limit the spectrum to frequencies within a reasonable physiological range of activation rates, the frequency rate of AF being normally between 4 and 10 Hz.This technique makes it possible to obtain a signal whose waveforms are proportional to the amplitude of the initial components of the EGM with frequencies within the cutoff range of the bandpass filter.
[0009] The method described in the article by Everett et al., "Frequency domain algorithm for quantifying atrial fibrillation organization to increase defibrillation efficacy," IEEE Transactions on Biomedical Engineering, vol. 48, no. 9, pp. 969-978, 2001, belongs to the first family and proposes transforming the envelope of an input EGM using the Fast Fourier Transform (FFT). Before applying it, a Botteron preprocessing is first performed. Then, in order to attenuate discontinuities at the beginning and end of a segment, windowing with a rounded waveform such as the Hanning or Kaiser waveform is generally applied. The resulting signal is subjected to a Fourier transform. The resulting power spectrum generally exhibits a maximum peak in the frequency range of 3 Hz to 20 Hz, called the dominant frequency. The value of the dominant frequency corresponds approximately to the length of the atrial activation cycle.
[0010] In the thesis "Analysis of Atrial Electrograms" by Christopher Schilling, Vol. 17 Karlsruhe Transactions on Biomedical Engineering, Karlsruhe Institute of Technology (KIT) Institute of Biomedical Engineering, a comprehensive and meticulous analysis of atrial EGMs is proposed. The author presents a segmentation of the electrograms into active and inactive parts within the received input interval. The proposed algorithm is based on the Pan-Tompkins QRS detection algorithm described in the article "A real-time QRS detection algorithm", IEEE Transactions on Biomedical Engineering, pp. 230-236, 1985. Instead of directly transmitting the received EGMs as input to the algorithm, the nonlinear energy operator (NLEO) is used based on the theory presented by Kaiser et al in the article "On a simple algorithm to calculate the 'energy' of a signal", Acoustics, Speech, and Signal Processing, 1990. ICASSP-90., 1990 International Conference on, pp.381-384, 1990, which presents the NLEO as a simple time-discrete energy calculation of signals that preserves the amplitude as well as the frequency of an input signal.
[0011] After preprocessing to remove baseline noise, the NLEO operator emphasizes high-frequency and high-amplitude sections. The output is low-pass filtered to smooth the signal with a Gaussian sliding window. The effective width of the impulse response and the filter cutoff frequency are specifically chosen based on the properties of the FA activations. Non-zero parts of the resulting signal are considered active. To detect them, the author proposes an adaptive thresholding method based on the standard deviation (weighted by a factor k = 0.1) calculated for a set of overlapping windows. This method aims to highlight large peaks and ignore small ones. Using a 1-s sliding window with a 50 ms step, each point in the input signal obtains 20 thresholds (one standard value for 20 windows). For each point, the minimum standard value is chosen as the final threshold.Finally, since the gap between two active segments must be greater than 42 ms—a value related to the average duration of the refractory period—shorter inactive segments are ignored, and neighboring active segments are merged. According to physicians, active segments shorter than 10 ms have no physiological significance and are marked as inactive during this post-processing. This method is insufficiently precise and requires individual adaptation based on each person's atrial fibrillation.
[0012] The article by Osorio et al., "Comparative Study of Methods for Atrial Fibrillation Cycle Length Estimation in Fractionated Electrograms," IEEE Computing in Cardiology (CinC), 2017, describes and compares three adaptive threshold methods. The first is an amplitude threshold adaptation method described in the article by Faes L. et al., "A method for quantifying atrial fibrillation organization based on wave-morphology similarity," IEEE Transactions on Biomedical Engineering 2002;49(12) 1):1504-1513. The second is an iterative CL method described in the article by Ng J, et al., “Iterative method to detect atrial activations and measure cycle length from electrograms during atrial fibrillation,” IEEE Transactions on Biomedical Engineering 2014; 61(2):273-278. Finally, the third is a hybrid fractionation degree (FHD) method described in the article by Osorio et al., “A fractionation-based local activation wave detector for atrial electrograms of atrial fibrillation,” in Computing in Cardiology Conference (CinC), volume 44. IEEE, 2017; In press. Again, these methods do not work satisfactorily with a mapping catheter.
[0013] Finally, the article by Milad El. Haddad et al., "Algorithmic detection of the beginning and end of bipolar electrograms: Implications for novel methods to assess local activation time during atrial tachycardia," Biomedical Signal Processing and Control, Volume 8, Issue 6, November 2013, Pages 981-991, describes a method for detecting the beginning and end of each active complex presented in a sample of bipolar EGM. The two main steps of the developed algorithm are: 1) detection of the start and end times of the activation complex using the reference catheter to identify a mapping window where the search is performed, and 2) determination of the local activation time (LAT) by three different methods, as well as the signal-to-noise ratio (SNR). This method also proves unsatisfactory with a mapping catheter.
[0014] None of these methods, nor others of the first or second family, give satisfaction, both for their inability to manage cardiac signals that are too different and for their unsuitability to the particular case of AF and / or use with a mapping catheter.
[0015] The invention improves the situation. To this end, it proposes a device for determining the length of a cardiac activation cycle comprising a memory arranged to store electrogram data presenting time markers and associated with a track, a processor arranged to receive electrogram data associated with a given track and a time window of at least 1.5 seconds, to extract baseline noise and high-frequency noise and to provide pre-processed data, a detector arranged to receive the pre-processed data and to detect non-overlapping activation segments, each corresponding to a window within said time window of at least 1.5 seconds, which detector operates by determining local extrema in the pre-processed data and grouping them into activation segments,and a calculator designed to determine a periodicity condition for activations by determining a reference time in each activation segment and comparing the duration, intervals each defined by two consecutive reference times with a time window duration of at least 1.5 seconds, and, in the case of periodicity conditions indicating periodic activation segments, to determine an activation cycle length from the mean or median of the interval durations.
[0016] This device is particularly advantageous because it allows for the determination of an LCL value that is suitable for many cardiac contexts involving AF. Furthermore, this device is particularly well-suited for use during a catheter ablation procedure.
[0017] According to various embodiments, the invention may have one or more of the following features: - the calculator is further configured to determine the activation periodicity condition from the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average interval duration, - The detector is configured to calculate the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average interval duration, and to redetect activation segments by modifying extrema detection when this value exceeds a chosen threshold. - the detector is configured to perform post-processing by dividing into two or more parts activation segments whose duration exceeds twice the average duration of the activation segments, - the detector is configured to perform post-processing by segmenting the intervals into three groups according to their duration, searching for local extrema in the electrogram data corresponding to the intervals in the group of longest durations, and, where appropriate, supplementing the activation segments with activation segments derived from these extrema, - the detector is configured to perform post-processing by segmenting the intervals into three groups based on their duration, and by merging the activation segments whose reference times define the intervals of the shortest duration group, - the detector is configured to calculate the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average duration of the intervals before and after post-processing, and to apply post-processing only when this ratio decreases, and - the calculator is arranged to determine an aggregate cycle length value from the cycle length value of several electrodes with reference to the same time window.
[0018] The invention also relates to a method for determining the cardiac activation cycle length comprising: a) receive electrogram data exhibiting time markers and associated with a given track and a time window of at least 1.5 seconds, b) extract electrogram data from operation a) baseline noise and high-frequency noise to provide preprocessed data, c) detect in the preprocessed data non-overlapping activation segments, each corresponding to a window within said time window of at least 1.5 seconds, by determining local extrema in the preprocessed data and grouping them into activation segments, d) determine a periodicity condition for activations by determining in each activation segment a reference instant and comparing the duration of intervals each defined by two consecutive reference instants to the duration of the time window of at least 1.5 seconds, and, in the case of a periodicity condition indicating periodic activation segments, determine an activation cycle length from the mean or median of the interval durations.
[0019] According to various embodiments, this process may have one or more of the following characteristics: - operation d) further includes determining the periodicity condition of the activations from the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average duration of the intervals, - Operation c) includes c1) calculating the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average interval duration, and c2) redetecting the activation segments by modifying the detection of extrema when this value exceeds a chosen threshold, - operation c) includes one or more of the following post-processing operations: c3) dividing in two or more halves activation segments whose duration is greater than twice the average duration of the activation segments, c4) segmenting the intervals into three groups according to their duration, by searching for local extrema in the electrogram data corresponding to the intervals in the longest duration group, and, where appropriate, supplementing the activation segments with activation segments drawn from these extrema, c5) segmenting the intervals into three groups according to their duration, and merging the activation segments whose reference times define the intervals in the shortest duration group, and - Operation c) further includes c6) calculating the ratio of the difference between the longest interval duration and the shortest interval duration divided by the duration average the intervals before and after post-processing, and only apply post-processing when this ratio decreases.
[0020] The invention also relates to a computer program comprising instructions for executing the process according to the invention, a data storage medium on which such a computer program is recorded, and a computer system comprising a processor coupled to a memory, the memory having recorded such a computer program.
[0021] Other features and advantages of the invention will become more apparent from the following description, taken from illustrative and non-limiting examples shown in the drawings: - [Fig. 1] represents a generic diagram of a device according to the invention, - [Fig. 2] represents an example of the operating loop of the device of [Fig. 1], - [Fig.3] represents an example of the implementation of a function implemented in an operation of [Fig.2], - Figure 4 represents an example of the implementation of a function used in an operation of Figure 3, and - [Fig.5] represents an example of the implementation of a function implemented in an operation of [Fig.2].
[0022] The drawings and the description below contain, essentially, elements of a definite nature. They may therefore not only serve to better understand the present invention, but also contribute to its definition, if necessary.
[0023] This description may contain elements protected by copyright. The rights holder has no objection to the reproduction by any person of this patent document or its description, as it appears in the official files. Otherwise, the rights holder reserves all rights.
[0024] Figure 1 shows a generic diagram of a device 2 according to the invention. The device 2 comprises a memory 4, a preparer 6, a filter 8, a detector 10 and a calculator 12. As will be seen below, the filter 8 is optional.
[0025] Memory 4 receives the data that are the subject of the functions and calculations implemented by device 2. Device 2 primarily processes electrogram data, that is, electrical signals measured by a multi-electrode catheter during an intracardiac procedure. These signals are generally digital, and each sample has an amplitude value and is associated, on the one hand, with a time marker, and on the other hand, with an identifier of the electrode by which it was obtained. Other data may be associated with the electrogram data, but this data is sufficient to define what are called tracks, That is, a record of time-referenced electrical measurements. The electrode identifier allows for the identification of the fact that measurements are generally taken with several leads simultaneously, and for their differentiation. Catheters can be unipolar, bipolar, or of any other technology. As will be seen below, this data is denoised and then transformed to determine activation segments, which represent continuous portions of time during which a practitioner considers the electrogram data to indicate activation of the cardiac tissue under the electrode. These activation segments are practically defined by a start time marker and an end time marker. In the following, an activation segment will refer to both the time range corresponding to these markers and the corresponding electrogram data for the relevant electrode identifier.
[0026] Memory 4 can be any type of data storage suitable for receiving digital data: hard disk, hard disk with flash memory, flash memory in any form, RAM, magnetic disk, locally distributed storage or in the cloud, etc.
[0027] In the example described here, memory 4 receives all the data described above, and more generally all the data concerning device 2, that is, the programs and software instantiating the preparer 6, the filter 8, the detector 10, and the calculator 12, their parameters, the input data, the output data, as well as the data stored in buffer memory. The data calculated by the device can be stored on any type of memory similar to memory 4, or on memory 4 itself. This data can be erased after the device has performed its tasks or retained.
[0028] The preparer 6, the filter 8, the detector 10, and the calculator 12 access memory 4 directly or indirectly. They can be implemented as suitable computer code executed on one or more processors. The term "processors" is understood to mean any processor suitable for the calculations described below. Such a processor can be implemented in any known form, such as a microprocessor for a personal computer, laptop, tablet, or smartphone; a dedicated chip of the FPGA or SoC type; a computing resource on a grid or in the cloud; a graphics processing unit (GPU) array; a microcontroller; or any other form suitable for providing the computing power necessary for the implementation described below. One or more of these elements can also be implemented as specialized electronic circuits such as an ASIC. A combination of processor and electronic circuits can also be considered.In the case of the gradient reinforcement-based machine learning unit, dedicated machine learning processors could also be considered.
[0029] The preparer 6, the filter 8, the detector 10, and the calculator 12 are presented here separately because they perform distinct functions. This modular description aims to better illustrate the functional blocks implemented by the device 2. It goes without saying that two or more of these elements could nevertheless be grouped together provided that the functional relationships remain comparable.
[0030] Fig. 2 represents an example of the operating loop of the device of Fig. 1, allowing for a better understanding of the respective functions of the preparer 6, the filter 8, the detector 10 and the calculator 12.
[0031] In what follows, electrogram data are processed in 1.5-second time windows. Alternatively, this time window could be larger. Thus, in what follows, the expression "a signal" or "a track" will refer to the electrogram data associated with a 1.5-second time window and a given electrode identifier. Furthermore, the following description is given for one track. However, several synchronized tracks can be processed in parallel, which, as will be seen below, allows for the determination of an aggregated LCL value.
[0032] In a first operation 200, device 2 calls a PreProc() function which is executed by preparer 6. The PreProc() function receives a track as an argument and returns a preprocessed signal which will be referred to as PPS hereafter. In the example described here, the preprocessing operations include, on the one hand, the removal of baseline noise ("baseband wander removal") by means of a Butterworth filter whose critical frequency is 10 Hz, and on the other hand, the removal of high-frequency noise using the discrete wavelet transform thresholding method described in the article by Donoho et al., "De-noising by soft-thresholding", IEEE Transactions on Information Theory, vol. 41, no. 3, pp. 613-627, May 1995, doi: 10.1109 / 18.382009. Although these operations are preferred by the Applicant, other preprocessing operations may complement or replace them, such as those in the Botteron article cited above.
[0033] Next, in an optional operation 210, filter 8 executes a Nois() function that analyzes the PPS signal to determine whether it is usable or too noisy. In the example described here, the Nois() function applies three successive filters: a kurtosis analysis filter for the PPS signal, a motion detection filter, and an amplitude filter.
[0034] The cardiac signal is essentially a noisy isoelectric line with several more or less distinct monophasic or multiphasic waves representing the passage of electrical waves under the electrode. The distribution of values is therefore expected to be centered around zero, but with a significant tail (the values in the tail represent the potential associated with activations, when the signal corresponds to periodic cardiac activity). To describe For this type of probability distribution, a statistical measure of kurtosis is classically used. Kurtosis identifies whether the tails of a given distribution contain extreme values. If the kurtosis is less than 2.5, or negative, then the signal is considered noise and is discarded. Alternatively, this filter can be ignored, a different threshold can be chosen, or another method besides kurtosis can be used.
[0035] The motion detection filter aims to detect a change in activity related to movement, contact / non-contact phases, or catheter insertion. To this end, the signal is divided into three 0.5-second segments, the variance of each segment is calculated, and the ratio of the largest variance to the smallest is compared with a threshold value on the order of 10⁶. This threshold was identified as particularly advantageous by the Applicant during its work. Alternatively, this filter can be ignored, another threshold can be used, or another method can be employed.
[0036] The amplitude filter is designed to reflect the fact that extremely low voltage signals—invisible during the procedure—represent primarily noise. For this reason, the track is thresholded at 0.03 mV, meaning that all amplitudes below this threshold are set to 0. Similarly, signals with a high amplitude are characteristic of high noise during catheter insertion or saturated stimulation patterns. Therefore, the track is also thresholded at 3.6 mV, meaning that all amplitudes above this threshold are set to 3.6 mV. Alternatively, this filter can be ignored or the thresholds modified.
[0037] Next, the PPS signal (noise-free or not) is processed in operation 220 by detector 10 for the main operation of device 2: the detection of activation segments. The goal is to identify which portion of the track corresponds to cardiac activity. To do this, detector 10 executes a DetAct() function, an example of whose implementation will be described using Figures 3 and 4.
[0038] Once the activation segments are detected, the calculator 12 executes an ALCL() function in an operation 230 in order to determine an LCL value for the track if possible, as well as an aggregated LCL value when several tracks are processed and their respective LCL values allow it.
[0039] Finally, the loop ends in an operation 299, and device 2 can process one or more tracks corresponding to a later window.
[0040] Figure 3 shows an example of an implementation of the DetAct() function. In operation 300, detector 10 executes a Filt() function that performs adaptive thresholding of the PPS signal. To do this, the Filt() function analyzes the entire signal and retains only the data whose absolute amplitude value is above the 95th percentile, i.e., the 5% highest values. The other values are brought back to 0. The resulting signal is designated by the reference FPPS (for "filtered preprocessed signal").
[0041] Next, in operation 305, a function Ext() is executed on the FPPS signal to detect local extrema. Due to the preceding operation 300, the detected extrema correspond to the noise-free peaks of the initial signal. Many methods are known to those skilled in the art for identifying these local extrema, which are returned as output in an array E[].
[0042] Once the extrema are determined, a Det() function is executed in a 310 operation to identify activation segments. The general idea is that an activation segment is a part of the signal that includes relatively close extrema that can be separated by zero values, and such that between any two distinct activation segments, all signal values are zero. Therefore, the Det() function in this example uses a sliding window to which, at each time step, the number of extrema in the window is assigned. This allows for an estimation of the density of extrema. By construction, between any two segments, the value is zero—since all values are zero. This allows the boundaries of the activation segments to be defined and stored in an AS[] array.In the example described here, the AS[] array includes, for each segment, the start time marker and the end time marker, which are sufficient to identify all the corresponding electrogram data or PPS or FPPS signals. Alternatively, this data could be stored in the AS[] array. The Det() function also determines a reference time for each activation segment. In the preferred variant, this time is the one at which the signal has the highest absolute value in the FPPS signal.Alternatively, it could be chosen differently, for example by being the start time marker or the end time marker of the activation segment, in a state determined by a formula of the barycenter type of the non-zero values of the electrogram data of the activation segment concerned, or by averaging the time markers of a restricted number of electrogram data of the activation segment having the highest absolute value (for example the three largest values).
[0043] In a preferred embodiment of the invention, steps 300, 305, and 310 can be replaced by local extrema detection, whereby an extrema is retained only if it belongs to the 95th percentile. Then, a normal kernel (Gaussian window) is placed at the center of each extremum. The superimposed kernels are summed, giving an estimate of the smooth kernel density. The resulting density thus represents the distribution of extrema along the signal and therefore makes it possible to find the boundaries of the activation segments by targeting infinitesimal areas of the density. This corresponds to a kernel density estimation algorithm, as described for example at the address
[0044] http s: / / web. archive, org / web / 20220414175413 / http s: / / en. wikipedia. org / wiki / Kemel_density_estimation.
[0045] Next, a function R() is executed on the AS activation segment array in an operation 315. The reference times of each activation segment form pairwise intervals. The Applicant has discovered that these intervals are of great importance, and that it is particularly crucial that they exhibit a certain periodicity and likelihood of correlation with each other.
[0046] The function R() calculates a ratio r according to the following formula: r = (max(i) -min(i) ) / mean(i) where max(i) and min(i) are respectively the longest and shortest interval durations among the intervals defined by the reference times in table AS[], and mean(i) is the mean of the interval durations defined by the reference times in table AS[]. The r value is a variability value that is robust to absolute magnitude and accurately captures the spread of values. The Applicant observed that an r value of 0.5 is particularly discriminating for obtaining reliable results in the case of AF. Alternatively, this value could be between 0.35 and 0.75. The r ratio is a measure of the variability and range of values. Although the formula presented here is preferred, other formulas may be used to evaluate this ratio, provided they capture the measure of variability and range of values.
[0047] When the ratio r is greater than 0.5, it means that the intervals defined by the activation segments are insufficiently similar. One cause may be the Filt() function. For this reason, operations 300, 305, and 310 are repeated in operations 325, 330, and 335, with the difference that operation 325 executes a Filt2() function in which the threshold is set at the 90th percentile. Alternatively, the threshold could be set lower than the 90th percentile. An operation 340 tests whether the ratio obtained by these operations is lower than that of operation 320. If so, then the ASm[] array from operation 335 replaces the AS[] array in operation 340.
[0048] After operation 340, or when the ratio r is less than 0.5 in operation 320, or when operations 325 to 335 do not improve the ratio r, a test is performed in operation 350 to determine if the track is characteristic of a slow rhythm. For this purpose, a function SR() is executed and tests whether more than 5 activation segments have been found in the track. Indeed, if this is not the case, then the LCL value is potentially greater than 300 ms. Although this is possible, it could also be due to the various denoising operations or the influence of the field distant (or "farfield"). For this reason, when a slow rhythm is detected, operation 310 is repeated in operation 355 but with a wider sliding window. In this same operation, segments where the amplitude is less than 90% of the track's maximum amplitude are removed. Operation 360 tests whether this improves the ratio r, and if so, the AS[] array is replaced in operation 365 with the ASm[] array produced by operation 355.
[0049] Finally, the DetAct() function launches a PostProc() function in operation 370, then the DetAct() function ends with operation 399.
[0050] Operations 350, 355, 360 and 365 are optional, and operations 320, 340 and 345 could directly lead to operation 370.
[0051] An example of the implementation of the PostProc() function will now be described with reference to [Fig. 4]. The principle of the PostProc() function is as follows: - the post-processing aims for a ratio r less than 0.5, - each processing step is repeated a maximum of three times, and each iteration is accepted only if it improves the ratio r. - we first try to break down the activation segments that are too long, then we try to work on the intervals.
[0052] Thus, the PostProc() function begins an operation with a 400 error by testing the ratio r. Indeed, if the PostProc() function is called following operation 320, then the ratio r is necessarily less than 0.5 and no post-processing is required. If this is the case, then the function terminates in operation 499.
[0053] If not, initial post-processing is performed in operations 405, 410, and 415 to split excessively long activation segments. Thus, in operation 405, a Div() function is executed by detector 10 to split in two any activation segment whose duration exceeds twice the average duration of all activation segments. Operation 410 tests whether this operation improves the ratio r, and, if so, the AS[] array is replaced in operation 415 by the ASm[] array produced by operation 405.
[0054] After this first post-processing, indices i and j are initialized to 0 in an operation 420. These indices ensure that the two following post-processings are not repeated more than 3 times.
[0055] The second post-processing step comprises operations 425, 430, 435, 440, 445, 445, 450, 455, and 460. In operation 425, a function ClustL() is executed on the array AS[]. This function segments the intervals of the array AS[] into three groups: a group of "short" intervals, a group of "medium" intervals, and a group of "long" intervals. The underlying principle of this post-processing is that the group of "medium" intervals is intended to represent intervals that do not require post-processing, unlike the group of "short" intervals and the group of "long" intervals. of "long" intervals. This second post-processing, which focuses on groups of "long" intervals, uses the ClustL() function to return a C[] array containing all the intervals in the group of "long" intervals. In the example described here, this segmentation is performed using the jenkspy programming library (see https: / / pypi.org / project / jenkspy / ), which implements the Fisher-Jenks natural breaks algorithm (see, for example, https: / / web.archive.org / web / 20220617141817 / https: / / en.wikipedia.org / wiki / Jenks_natural_breaks_optimization). This algorithm has the advantage of being unsupervised. Other algorithms (kmeans, etc.) could be used.
[0056] Next, in operation 430, the original track signal S is reprocessed to try to detect activations that may have been missed within the intervals of the array C[]. The idea here is that the various denoising operations may have smoothed out some extrema, resulting in excessively long intervals. To address this, operation 430 executes the Filt2() function, but on the track signal S prior to operation 200, and only on those intervals. Operation 435, identical to operations 305 and 330, executes the Ext() function to determine the extrema in the resulting FS signal from operation 430.Next, the resulting array E[] is processed in operation 440 in a similar manner to operations 310 and 335, with the execution of a Detm() function similar to the Det() function, but which replaces the activation segments of the array AS[] corresponding to the intervals of the array C[] with those found by the Detm() function and stores everything in the array ASm[]. As before, the goal is to reduce the value of the ratio r, which is checked in operation 445. If this is the case, then the index i is incremented in operation 450, and the array AS[] is replaced by the array ASm[] in operation 455. Finally, in operation 460, the index i is tested to limit the repetition of operations 425 to 455 to 3, and, if this is the case, then the loop of the second post-processing resumes with operation 425. If this is not the case, or if the test of operation 445 is negative, then the third post-processing is launched.
[0057] The third post-processing concerns, as indicated above, the groups of "short" intervals. For this, operations 465, 470, 475, 480 and 485 are repeated up to three times, as long as the ratio r is improved.
[0058] Thus, the segmentation of operation 425 is repeated in operation 465, but with a function ClustS() that returns an array A[] containing the intervals of the "short" interval group instead of the array C[]. Then, in operation 470, a function Mg() tests the interval in array A[] and checks if its duration multiplied by 1.75 is greater than the duration of the longest interval in the "medium" interval group. If so, this means that the intervals in array A[] are not sufficiently distinct from those in the "medium" interval group and should not be segmented. the subject of post-processing. If so, then the Mg() function modifies the AS[] array in order to merge, for each interval of the A[ array], the two activation segments whose respective reference times serve as the boundary to an interval, and the result is stored in the ASm[ array]. As before, the goal is to reduce the value of the ratio r, which is checked in operation 475. If this is the case, then the index j is incremented in operation 480, and the array AS[] is replaced by the array ASm[] in operation 485. Finally, in operation 490, the index j is tested to limit the repetition of operations 465 to 485 to 3, and, if this is the case, then the second post-processing loop resumes with operation 465. If this is not the case, or if the test in operation 475 is negative, then the third post-processing is completed and the PostProc() function terminates in operation 499.
[0059] Numerous variations are possible for the PostProc() function. For example, one or two of the three post-processing steps could be omitted, or their order could be changed, although the Applicant has found that this order provides the best results. Furthermore, the second and third post-processing steps could be performed simultaneously to increase speed. In addition, the parameters of these post-processing steps, such as the ratio thresholds or the number of iterations, could be varied.
[0060] In the DetAct() and PostProc() functions, many reprocessing operations are conditioned by a decrease in the ratio r. In some variants, this condition could be omitted.
[0061] Once the DetAct() function has finished, the AS[] array therefore includes all the detected activation segments, as well as the corresponding reference times that define the intervals.
[0062] Fig. 5 represents an example of the implementation of the ALCL() function implemented by the calculator 12 to estimate the LCL value and possibly an agglomerated LCL value.
[0063] The ALCL() function comprises two parts. In the first part, this function calculates the LCL value for the track that has just been processed, then it seeks to determine if an agglomerated LCL value can also be calculated.
[0064] The first part begins with a 500 operation in which a Per() function is executed. The purpose of the Per() function is to determine whether the intervals defined by the activation segments define a periodic activation. To this end, in the example described here, the Per() function tests three conditions: - The duration of each interval is calculated to ensure that none of them exceeds one quarter of the track. - the total duration of the activation segments is measured to verify that it occupies more than half of the track, and - the ratio r is recalculated to verify that it is less than 0.6.
[0065] If one of these three conditions is not met, then the track is considered unusable and the LCL value is set to 0 in a 502 operation.
[0066] Otherwise, the track is considered periodic, and an optional 505 operation checks whether the track rate is slow or not. If so, then in an also optional 510 operation, the AS[] array is padded with previous AS[] array data in buffer memory to have enough activation segments to calculate the LCL value.
[0067] Next, in a 515 operation, a function Calc() determines from the array AS[] an LCL value and a CV value representing the variance of the interval durations within the array AS[]. In the example described here, the LCL value is obtained by determining the median of the interval durations in the array AS[]. Alternatively, the mean or a value derived from the median, mean, or otherwise centered could be used. In the example described here, the CV value is obtained by dividing the standard deviation of the interval durations by their mean.
[0068] The CV value is then tested in operation 520 to determine if the intervals are sufficiently homogeneous. If this value exceeds 0.5, then it is considered that this is not the case, and the LCL value is set to 0 in operation 502.
[0069] Finally, the first part of the ALCL() function ends in an operation 530 in which the LCL value is introduced into an LCL[] array. The value "0" indicates that the LCL value is either associated with a non-periodic track or is insufficiently homogeneous.
[0070] When the LCL[] array receives all the LCL values from each track for a given period of time, the ALCL() function can in the second part try to determine an aggregated LCL value.
[0071] Thus, in operation 535, a function LCL() tests the array LCL[] to determine if it contains enough usable LCL values. If not, then the function terminates in operation 599.
[0072] If so, then in operation 540, an ALCL[] array receives the usable LCL values through the execution of a Sel() function. Then, in operation 545 identical to operation 515, the calculator 12 executes the Calc() function, which determines an aggregated ALCL LCL value and a CV value for the LCL values. Alternatively, a Calc2() function can be applied, which segments the ALCL[] array into two groups and, if the midpoints of the two groups are separated by more than 15%, returns a value taken from the mean, median, or otherwise centroid of the group with the highest values.
[0073] The CV value is then tested in a 550 operation by a CV() function which determines two conditions in the example described here: - the first condition is that the CV value must be less than 0.3, and - the second condition verifies that the ALCL value does not show more than 50% difference with the immediately preceding ALCL value.
[0074] The first condition relates to the consistency of the LCL values, given that these are local measurements taken in close proximity. The second condition is operational in nature and aims to avoid sending potentially contradictory information to the practitioner.
[0075] If either of these two conditions is not met, then the ALCL value is considered unusable, and it is set to 0 in an operation 555. Otherwise, an estimate of the agglomerated LCL value has been successfully calculated and can be returned with the set of LCL values of the corresponding electrodes.
Claims
Demands
1. A device for determining cardiac activation cycle length comprising a memory (4) arranged to store electrogram data containing time markers and associated with a track, a preparer (6) arranged to receive electrogram data associated with a given track and a time window of at least 1.5 seconds, to extract baseline noise and high-frequency noise and to provide preprocessed data, a detector (10) arranged to receive the preprocessed data and to detect therein non-overlapping activation segments each corresponding to a window within said time window of at least 1.5 seconds, said detector (10) operates by determining local extrema in the preprocessed data and grouping them into activation segments,and a calculator (12) arranged to determine a periodicity condition for activations by determining a reference instant in each activation segment and comparing the duration of intervals, each defined by two consecutive reference instants, to the duration of the time window of at least 1.5 seconds, and, in the case of a periodicity condition indicating periodic activation segments, to determine an activation cycle length from the mean or median of the interval durations.
2. Device according to claim 1, wherein the calculator (12) is further arranged to determine the activation periodicity condition from the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average of the interval durations.
3. A device according to any one of the preceding claims, wherein the detector (10) is arranged to calculate the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average of the interval durations, and to redetect the activation segments by modifying the detection of the extrema when this value exceeds a chosen threshold.
4. A device according to any one of the preceding claims, wherein the detector (10) is arranged to perform post-processing by cutting the activation segments, including the duration is greater than twice the average duration of the activation segments.
5. A device according to any one of the preceding claims, wherein the detector (10) is arranged to perform post-processing by segmenting the intervals into three groups according to their duration, by searching for local extrema in the electrogram data corresponding to the intervals in the group of longest durations, and, where appropriate, by supplementing the activation segments with activation segments taken from these extrema.
6. Device according to any one of the preceding claims, wherein the detector (10) is arranged to perform post-processing by segmenting the intervals into three groups according to their duration, and by merging the activation segments whose reference times define the intervals of the shortest duration group.
7. A device according to any one of claims 4 to 6, wherein the detector (10) is arranged to calculate the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average duration of the intervals before and after post-processing, and to apply post-processing only when this ratio decreases.
8. Device according to any one of the preceding claims, wherein the calculator (12) is arranged to determine an aggregated cycle length value from the cycle length value of several electrodes with reference to the same time window.
9. A method for determining a cardiac activation cycle length comprising: a. acquiring electrogram data having time markers and associated with a given track and a time window of at least 1.5 seconds, b. extracting electrogram data from operation a) baseline noise and high-frequency noise to provide preprocessed data, c. detecting in the preprocessed data non-overlapping activation segments each corresponding to a window within said time window of at least 1.5 seconds, by determining local extrema in the preprocessed data and grouping them into activation segments, d.determine a periodicity condition for activations by determining in each activation segment a reference instant and comparing the duration of intervals each defined by two consecutive reference instants to the duration of the time window of at least 1.5 seconds, and, in the case of a periodicity condition indicating periodic activation segments, determine an activation cycle length from the mean or median of the interval durations.
10. A method according to claim 9, wherein operation d) further comprises determining the activation periodicity condition from the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average of the interval durations.
11. Method according to claim 9 or 10, wherein operation c) comprises c1) calculating the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average of the interval durations, and c2) redetecting the activation segments by modifying the detection of extrema when this value exceeds a chosen threshold.
12. A method according to any one of claims 9 to 11, wherein operation c) comprises one or more of the following post-processing operations: c3) divide in two or more parts the activation segments whose duration is greater than twice the average duration of the activation segments, c4) segment the intervals into three groups according to their duration, by searching for local extrema in the electrogram data corresponding to the intervals of the longest duration group, and, where appropriate, supplementing the activation segments with activation segments taken from these extrema, c5) segment the intervals into three groups according to their duration, and by merging the activation segments whose reference times define the intervals of the shortest duration group.
13. A method according to claim 12, wherein operation c) further comprises c6) calculating the ratio of the difference between the longest interval duration and the shortest interval duration divided by the average duration of the intervals before and after post-processing, and applying post-processing only when this ratio decreases.
14. Computer program comprising instructions for carrying out the process according to any one of claims 10 to 13 when said computer program is implemented by computer.
15. Computer-readable data storage medium on which the computer program according to claim 14 is recorded.