Brevet FR3137269A1 — publié le 20240105

Dispositif de détermination d’une longueur de cycle d’activation cardiaque Un dispositif de détermination d’une longueur de cycle d’activation cardiaque comprend une mémoire (4) agencée pour stocker des données d’électrogrammes présentant des marqueurs de temps et associées à une piste, un préparateur (6) agencé pour recevoir des données d’électrogrammes associées à une piste donnée et à une fenêtre temporelle d’au moins 1,5 seconde, pour en extraire du bruit de ligne de base et du bruit haute-fréquence et pour fournir des données prétraitées, un détecteur (10) agencé pour recevoir les données prétraitées et pour y détecter des segments d’activation sans chevauchement qui correspondent chacun à une fenêtre au sein de ladite fenêtre temporelle d’au moins 1,5 seconde, lequel détecteur (10) opère en déterminant des extrema locaux dans les données prétraitées et en les regroupant en segments d’activation, et un calculateur (12) agencé pour déterminer une condition de périodicité des activations en déterminant dans chaque segment d’activation un instant de référence et en comparant la durée d’intervalles chacun défini par deux instants de référence consécutifs à la durée de la fenêtre temporelle d’au moins 1,5 seconde, et, en cas de condition de périodicité indiquant des segments d’activation périodiques, pour déterminer une longueur de cycle d’activation à partir de la moyenne ou de la médiane des durées d’intervalles. Fig.1 Dispositif de détermination d’une longueur de cycle d’activation cardiaque L’invention concerne le domaine de l’analyse des signaux d’électrogrammes cardiaques (ci-après "EGM"). Les électrogrammes cardiaques sont obtenus par l’introduction de cathéters dans le cœur d’une personne et par la mesure des signaux cardiaques grâce à ceux-ci. La longueur du cycle (ou "CL" pour "Cycle Length" en anglais) est une mesure utilisée pour la caractérisation de l'activité électrique dans les oreillettes. Cette caractérisation sert notamment à guider les praticiens lors d'opérations d'ablation par cathéter. Elle est mesurée en millisecondes et reflète d'une manière générale le temps pendant lequel un cycle complet de relaxation et de contraction des oreillettes (ou des ventricules, ou des deux) se produit. Pour les médecins, il est important de suivre deux valeurs : une CL globale des oreillettes – enregistrée à partir du cathéter de référence stable – et une CL locale (ou "LCL" pour "Local Cycle Length" en anglais) – caractéristique de l'activité électrique sous le cathéter de cartographie qui se différencie de la CL globale dans le substrat pathologique. Dans la suite, on utilisera l'expression CL pour qualifier la CL globale, et l'expression LCL pour qualifier la CL du cathéter de cartographie. Pendant une fibrillation atriale (ou "FA"), il n'y a pas de front d'onde commun provenant du nœud sinusal, mais plusieurs fronts d'onde reflétant la propagation du potentiel dans différentes parties des oreillettes en fonction du remodelage électrique du tissu cardiaque. Par exemple, des recherches récentes ont montré que les zones où l'ablation par cathéter a permis de mettre fin à une FA persistante présentent une activité rapide et organisée. Pour ces raisons, l'estimation de la LCL est très important pour aider à trouver ces zones rapidement. La différence relative entre les valeurs de LCL et de longueur de CL permet de juger de la zone cartographiée. Idéalement, le clinicien doit avoir accès à une estimation fiable de la LCL, à un taux de rafraîchissement suffisant pour un flux de travail clinique optimal. Cette estimation est extrêmement difficile à réaliser. En effet, l'activité électrique locale est souvent générée par plusieurs sources voisines ayant des caractéristiques différentes, ce qui donne des EGM caractérisés par une grande variabilité à la fois en termes d'amplitude et de formes d'onde, ce qui rend l'analyse des LCL plus difficile. En outre, le cathéter de cartographie n'est pas fixe et se déplace beaucoup pendant l'ablation par cathéter, ce qui fait que les signaux sont fortement influencés par le bruit ajouté par les différentes sources et l'activité du champ lointain pendant les phases sans contact. Les solutions actuelles appartiennent généralement à deux familles. La première famille est basée sur des méthodes de traitement du signal conventionnelles, par exemple basées sur la transformée de Fourier rapide ou sur l'étude de l'autocorrélation qui est une méthode classique utilisée pour évaluer la longueur du cycle pour les signaux périodiques de toute nature. La deuxième famille comprend différentes méthodes de seuillage adaptatif basées sur la détection des activations auriculaires par l'amplitude. Ces méthodes forment la tendance récente dans le domaine de la recherche en cardiologie computationnelle. Certaines de ces méthodes seront maintenant décrites. Toutes proposent un propre prétraitement spécifique, mais ce dernier est quasi systématiquement basé sur le prétraitement introduit dans l'article de Botteron et 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. Ce prétraitement commence par l'application d'un filtre passe-bande de 40-250 Hz pour accentuer le signal correspondant à la dépolarisation locale, suivi d'une rectification du signal résultant pour prendre en compte la nature biphasique des enregistrements bipolaires, et se termine par l'application d'un filtre passe-bas avec une coupure à 20 Hz pour limiter le spectre aux fréquences comprises dans une gamme physiologique raisonnable de taux d'activation, le taux de fréquence de la FA étant normalement compris entre 4 et 10 Hz. Cette technique permet d'obtenir un signal dont les formes d'onde sont proportionnelles à l'amplitude des composantes initiales de l'EGM avec des fréquences comprises dans l'intervalle des coupures du filtre passe-bande. La méthode décrite dans l'article de 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 appartient à la première famille et propose de transformer l'enveloppe d'un EGM d'entrée en utilisant la transformation de Fourier rapide (FFT). Avant de l'appliquer, un prétraitement de Botteron est d'abord effectué. Ensuite, afin d'atténuer les discontinuités au début et à la fin d'un segment, un fenêtrage avec une forme d'onde arrondie comme celle de Hanning ou de Kaiser est généralement appliqué. Le signal résultant fait l'objet d'une transformée de Fourier. Le spectre de puissance obtenu présente généralement un pic maximal dans la gamme de fréquences de 3 Hz à 20 Hz, appelé fréquence dominante. La valeur de fréquence dominante correspond approximativement à la longueur du cycle d'activation auriculaire. Dans la thèse " Analysis of Atrial Electrograms " de Christopher Schilling, Vol. 17 Karlsruhe Transactions on Biomedical Engineering, Karlsruhe Institute of Technology (KIT) Institute of Biomedical Engineering, une vaste et méticuleuse analyse des EGM atriaux est proposée. L'auteur y présente une segmentation des électrogrammes en parties actives et inactives dans l'intervalle reçu en entrée. L'algorithme proposé est basé sur l'algorithme de détection des QRS de Pan-Tompkins décrit dans l'article " A real-time QRS detection algorithm ", IEEE Transactions on Biomedical Engineering, pp.230–236, 1985. Au lieu de transmettre directement les EGM reçus en entrée à l'algorithme, l'opérateur d'énergie non linéaire (NLEO) est utilisé sur la base de la théorie présentée par Kaiser et al dans l'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, qui présente le NLEO comme un simple calcul d'énergie de signaux discrets dans le temps qui préserve l'amplitude ainsi que la fréquence d'un signal d'entrée. Après un prétraitement pour retirer le bruit de ligne de base, l'opérateur NLEO met l'accent sur les sections à hautes fréquences et à grandes amplitudes. La sortie est filtrée en passe-bas afin de lisser le signal avec une fenêtre glissante gaussienne. La largeur effective de la réponse impulsionnelle ainsi que la fréquence de coupure du filtre sont spécifiquement choisies en fonction des propriétés des activations de la FA. Les parties non nulles du signal obtenu sont considérées comme actives. Pour les détecter, l'auteur propose une méthode de seuillage adaptative basée sur la déviation standard (pondérée par un facteur k = 0,1) calculée pour un ensemble de fenêtres se chevauchant. Cette partie vise à surligner les grands pics et à ignorer les petits. En utilisant une fenêtre glissante de 1 s avec un pas de 50 ms, chaque point du signal d'entrée obtient 20 seuils (une valeur standard pour 20 fenêtres). Pour chaque point, le standard minimal est choisi comme seuil final. Enfin, comme l'écart entre deux segments actifs doit être supérieur à 42 ms – valeur liée à la durée moyenne de la période réfractaire – les segments inactifs plus courts sont ignorés et les segments actifs voisins sont fusionnés. Selon les médecins, les segments actifs de moins de 10 ms n'ont aucune signification physiologique et sont marqués comme inactifs lors de ce posttraitement. Cette méthode est insuffisamment précise et nécessite une adaptation particulière à chaque personne, en fonction de sa FA. L'article de Osorio et al. " Comparative Study of Methods for Atrial Fibrillation Cycle Length Estimation in Fractionated Electrograms ", IEEE Computing in Cardiology (CinC), 2017, décrit et compare trois méthodes à seuil adaptatif. La première est une méthode à adaptation de seuil d'amplitude décrite dans l'article de Faes L. et al. " A method for quantifying atrial fibrillation organization based on wave-morphology similarity ", IEEE Transactions on Biomedical Engineering 2002;49(12 I):1504–1513. La deuxième est une méthode à CL itératif décrite dans l'article de 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. Enfin, la troisième est une méthode à degré de fractionation hybride (ou "FHD" pour "hybrid fractionation degree" en anglais) décrite dans l'article d'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. Là encore, ces méthodes ne fonctionnent pas de manière satisfaisante avec un cathéter de cartographie. Enfin, l'article de 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, décrit une méthode de détection du début et de la fin de chaque complexe actif présenté dans un échantillon d'EGM bipolaire. Les deux étapes principales de l'algorithme développé sont : 1) la détection de l'instant de début et de l'instant de fin du complexe d'activation en utilisant le cathéter de référence pour identifier une fenêtre de cartographie où la recherche est effectuée, et 2) la détermination du l'instant d'activation locale (ou "LAT" pour "Local Activation Time" en anglais par trois méthodes différentes, ainsi que le rapport signal/bruit (SNR). Cette méthode ne donne pas non plus satisfaction avec un cathéter de cartographie. Aucune de ces méthodes, ni d'autres de la première famille ou de la deuxième famille ne donne satisfaction, tant pour leur incapacité à gérer des signaux cardiaques trop différents que pour leur inadaptation au cas particulier de la FA et/ou l'utilisation avec un cathéter de cartographie. L’invention vient améliorer la situation. À cet effet, elle propose un dispositif de détermination d’une longueur de cycle d’activation cardiaque comprenant une mémoire agencée pour stocker des données d’électrogrammes présentant des marqueurs de temps et associées à une piste, un préparateur agencé pour recevoir des données d’électrogrammes associées à une piste donnée et à une fenêtre temporelle d’au moins 1,5 seconde, pour en extraire du bruit de ligne de base et du bruit haute-fréquence et pour fournir des données prétraitées, un détecteur agencé pour recevoir les données prétraitées et pour y détecter des segments d’activation sans chevauchement qui correspondent chacun à une fenêtre au sein de ladite fenêtre temporelle d’au moins 1,5 seconde, lequel détecteur opère en déterminant des extrema locaux dans les données prétraitées et en les regroupant en segments d’activation, et un calculateur agencé pour déterminer une condition de périodicité des activations en déterminant dans chaque segment d’activation un instant de référence et en comparant la durée d’intervalles chacun défini par deux instants de référence consécutifs à la durée de la fenêtre temporelle d’au moins 1,5 seconde, et, en cas de condition de périodicité indiquant des segments d’activation périodiques, pour déterminer une longueur de cycle d’activation à partir de la moyenne ou de la médiane des durées d’intervalles. Ce dispositif est particulièrement avantageux car il permet de déterminer une valeur de LCL qui s'adapte à de nombreux contextes cardiaques impliquant de la FA. De plus, ce dispositif se prête tout particulièrement à une utilisation pendant une procédure d'ablation par cathéter. Selon divers modes de réalisation, l’invention peut présenter une ou plusieurs des caractéristiques suivantes : - le calculateur est en outre agencé pour déterminer la condition de périodicité des activations à partir du rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la moyenne de la durée des intervalles, - le détecteur est agencé pour calculer le rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la moyenne de la durée des intervalles, et pour redétecter les segments d'activation en modifiant la détection des extrema lorsque cette valeur excède un seuil choisi, - le détecteur est agencé pour effectuer un posttraitement en coupant en deux ou plus de deux les segments d'activation dont la durée est supérieure à deux fois la moyenne des durées des segments d'activation, - le détecteur est agencé pour effectuer un posttraitement en segmentant en trois groupes les intervalles en fonction de leur durée, en recherchant des extrema locaux dans les données d'électrogrammes correspondant aux intervalles du groupe de durées les plus longues, et, le cas échéant en complétant les segments d'activation avec des segments d'activation tirés de ces extrema, - le détecteur est agencé pour effectuer un posttraitement en segmentant en trois groupes les intervalles en fonction de leur durée, et en fusionnant les segments d'activations dont les instants de référence définissent les intervalles du groupe de durées les plus courtes, - le détecteur est agencé pour calculer le rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la durée moyenne des intervalles avant et après posttraitement, et pour n'appliquer le posttraitement que lorsque ce rapport diminue, et - le calculateur est agencé pour déterminer une valeur de longueur de cycle agglomérée à partir de la valeur de longueur de cycle de plusieurs électrodes en référence à la même fenêtre temporelle. L’invention concerne également un procédé de détermination d’une longueur de cycle d’activation cardiaque comprenant : a) recevoir des données d’électrogrammes présentant des marqueurs de temps et associées à une piste donnée et à une fenêtre temporelle d’au moins 1,5 seconde, b) extraire des données d'électrogrammes de l'opération a) du bruit de ligne de base et du bruit haute-fréquence pour fournir des données prétraitées, c) détecter dans les données prétraitées des segments d’activation sans chevauchement qui correspondent chacun à une fenêtre au sein de ladite fenêtre temporelle d’au moins 1,5 seconde, en déterminant des extrema locaux dans les données prétraitées et en les regroupant en segments d’activation, d) déterminer une condition de périodicité des activations en déterminant dans chaque segment d’activation un instant de référence et en comparant la durée d’intervalles chacun défini par deux instants de référence consécutifs à la durée de la fenêtre temporelle d’au moins 1,5 seconde, et, en cas de condition de périodicité indiquant des segments d’activation périodiques, déterminer une longueur de cycle d’activation à partir de la moyenne ou de la médiane des durées d’intervalles. Selon divers modes de réalisation, ce procédé peut présenter une ou plusieurs des caractéristiques suivantes : - l'opération d) comprend en outre déterminer la condition de périodicité des activations à partir du rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la moyenne de la durée des intervalles, - l'opération c) comprend c1) calculer le rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la moyenne de la durée des intervalles, et c2) redétecter les segments d'activation en modifiant la détection des extrema lorsque cette valeur excède un seuil choisi, - l'opération c) comprend une ou plusieurs des opérations de posttraitement suivantes : c3) couper en deux ou plus de deux les segments d'activation dont la durée est supérieure à deux fois la moyenne des durées des segments d'activation, c4) segmenter en trois groupes les intervalles en fonction de leur durée, en recherchant des extrema locaux dans les données d'électrogrammes correspondant aux intervalles du groupe de durées les plus longues, et, le cas échéant en complétant les segments d'activation avec des segments d'activation tirés de ces extrema, c5) segmenter en trois groupes les intervalles en fonction de leur durée, et en fusionnant les segments d'activations dont les instants de référence définissent les intervalles du groupe de durées les plus courtes, et - l'opération c) comprend en outre c6) calculer le rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la durée moyenne des intervalles avant et après posttraitement, et n'appliquer le posttraitement que lorsque ce rapport diminue. L’invention concerne également un programme informatique comprenant des instructions pour exécuter le procédé selon l'invention, un support de stockage de données sur lequel est enregistré un tel programme informatique et un système informatique comprenant un processeur couplé à une mémoire, la mémoire ayant enregistré un tel programme informatique. D’autres caractéristiques et avantages de l’invention apparaîtront mieux à la lecture de la description qui suit, tirée d’exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels : - la représente un diagramme générique d'un dispositif selon l'invention, - la représente un exemple de boucle de fonctionnement du dispositif de la , - la représente un exemple de mise en œuvre d'une fonction mise en œuvre dans une opération de la , - la représente un exemple de mise en œuvre d'une fonction mise en œuvre dans une opération de la , et - la représente un exemple de mise en œuvre d'une fonction mise en œuvre dans une opération de la . Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d’auteur et/ou le copyright. Le titulaire des droits n’a pas d’objection à la reproduction à l’identique par quiconque du présent document de brevet ou de sa description, telle qu’elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits. La représente un diagramme générique d'un dispositif 2 selon l'invention. Le dispositif 2 comprend une mémoire 4, un préparateur 6, un filtre 8, un détecteur 10 et un calculateur 12. Comme on le verra plus bas, le filtre 8 est optionnel. La mémoire 4 reçoit les données qui font l'objet des fonctions et calculs mis en œuvre par le dispositif 2. Le dispositif 2 traite principalement des données d’électrogrammes, c’est-à-dire des signaux électriques mesurés par un cathéter à plusieurs électrodes lors d'une procédure intracardiaque. Ces signaux sont généralement numériques, et chaque échantillon présente une valeur d'amplitude et est associé d'une part à un marqueur de temps, et d'autre part à un identifiant d'électrode par lequel il a été obtenu. D'autres données peuvent être associées aux données d'électrogrammes, mais ces données suffisent à définir ce que l'on appelle des pistes, c’est-à-dire un relevé de mesure électriques référencées dans le temps. L'identifiant d'électrode permet de tenir compte du fait que les mesures sont en général réalisées avec plusieurs pistes simultanément, et de les distinguer. Les cathéters peuvent être unipolaires ou bipolaires ou selon toute autre technologie. Comme on le verra plus bas, ces données sont débruitées puis transformées afin de déterminer des segments d'activation, qui représentent des portions continues de temps pendant lequel un praticien considère que les données d'électrogrammes indiquent une activation du tissu cardiaque sous l’électrode. Ces segments d'activation sont de manière pratique définis par un marqueur de temps de début et un marqueur de temps de fin. Dans la suite, un segment d'activation désignera aussi bien la plage temporelle correspondant à ces marqueurs que les données d'électrogrammes correspondantes, pour l'identifiant d'électrode concerné. La mémoire 4 peut être tout type de stockage de données propre à recevoir des données numériques : disque dur, disque dur à mémoire flash, mémoire flash sous toute forme, mémoire vive, disque magnétique, stockage distribué localement ou dans le cloud, etc. Dans l'exemple décrit ici, la mémoire 4 reçoit toutes les données décrites ci-dessus, et plus généralement toutes les données qui concernent le dispositif 2, c’est-à-dire les programmes et logiciels instanciant le préparateur 6, le filtre 8, le détecteur 10 et le calculateur 12, leurs paramètres, les données reçues en entrée, les données en sortie, ainsi que les données stockées en mémoire tampon. Les données calculées par le dispositif peuvent être stockées sur tout type de mémoire similaire à la mémoire 4, ou sur celle-ci. Ces données peuvent être effacées après que le dispositif a effectué ses tâches ou conservées. Le préparateur 6, le filtre 8, le détecteur 10 et le calculateur 12 accèdent directement ou indirectement à la mémoire 4. Ils peuvent être réalisés sous la forme d’un code informatique approprié exécuté sur un ou plusieurs processeurs. Par processeurs, il doit être compris tout processeur adapté aux calculs décrits plus bas. Un tel processeur peut être réalisé de toute manière connue, sous la forme d’un microprocesseur pour ordinateur personnel, portable, tablette ou smartphone, d’une puce dédiée de type FPGA ou SoC, d’une ressource de calcul sur une grille ou dans le cloud, d’une grappe de processeurs graphiques (GPUs), d’un microcontrôleur, ou de toute autre forme propre à fournir la puissance de calcul nécessaire à la réalisation décrite plus bas. Un ou plusieurs de ces éléments peuvent également être réalisés sous la forme de circuits électroniques spécialisés tel un ASIC. Une combinaison de processeur et de circuits électroniques peut également être envisagée. Dans le cas de l’unité d’apprentissage automatique basé sur renforcement du gradient, des processeurs dédiés à l’apprentissage automatique pourront aussi être envisagés. Le préparateur 6, le filtre 8, le détecteur 10 et le calculateur 12 sont présentés ici séparément car ils réalisent des fonctions distinctes. Cette description modulaire vise à mieux faire comprendre les blocs fonctionnels mis en œuvre par le dispositif 2. Il va de soi que deux ou plus de ces éléments pourraient néanmoins être regroupés dès lors que les relations fonctionnelles restent comparables. La représente un exemple de boucle de fonctionnement du dispositif de la permettant de mieux comprendre les fonctions respectives du préparateur 6, du filtre 8, du détecteur 10 et du calculateur 12. Dans ce qui suit, les données d'électrogrammes sont traitées par fenêtre temporelle de 1,5 seconde. En variante, cette fenêtre temporelle pourrait être plus importante. Ainsi, dans ce qui suit, l'expression "un signal" ou "une piste" désignera les données d'électrogrammes associées à une fenêtre temporelle de 1,5 seconde et à un identifiant d'électrode donné. De plus, la description qui suit est donnée pour une piste. Néanmoins, plusieurs pistes synchronisées peuvent être traitées en parallèle, ce qui permet comme on le verra plus bas de déterminer une valeur LCL agglomérée. Dans une première opération 200, le dispositif 2 appelle une fonction PreProc() qui est exécutée par le préparateur 6. La fonction PreProc() reçoit comme argument une piste et retour un signal prétraité qui sera référencé PPS dans la suite. Dans l'exemple décrit ici, les opérations de prétraitement comprennent d'une part la suppression du bruit de ligne de base (" baseband wander removal " en anglais) au moyen d'un filtre de Butterworth dont la fréquence critique est 10 Hz, et d'autre part la suppression du bruit haute-fréquence en utilisant la méthode de seuillage par transformée en ondelette discrète décrite dans l'article de Donoho et al." De-nois ing by soft- thresholding ", IEEE Transactions on Information Theory, vol. 41, no. 3, pp. 613-627, May 1995, doi: 10.1109/18.382009. Bien que ces opérations soient préférées par la Demanderesse, d'autres opérations de prétraitement pourront les compléter ou les remplacer, comme celles de l'article de Botteron cité précédemment. Ensuite, dans une opération 210 optionnelle, le filtre 8 exécute une fonction Nois() qui analyse le signal PPS pour déterminer s'il est exploitable ou s'il est trop bruité. Dans l'exemple décrit ici, la fonction Nois() applique trois filtres successifs : un filtre d'analyse de kurtosis du signal PPS, un filtre de détection de mouvement et un filtre d'amplitude. Le signal cardiaque est essentiellement une ligne isoélectrique bruitée avec plusieurs ondes monophasiques ou multiphasiques plus ou moins nettes qui représentent des passages d'ondes électriques sous l'électrode. On s'attend donc à ce que la distribution des valeurs soit centrée autour de zéro, mais avec une queue (" tail " en anglais) importante (les valeurs dans la queue représentent le potentiel lié aux activations, lorsque le signal correspond à une activité cardiaque périodique). Pour décrire cette forme de distribution de probabilité, une mesure statistique du kurtosis est classiquement utilisée. Le kurtosis identifie si les queues d'une distribution donnée contiennent des valeurs extrêmes. Si le kurtosis est inférieur à 2,5, ou négatif, alors le signal est considéré comme du bruit et est écarté. En variante, ce filtre peut être ignoré, un seuil différent peut être choisi ou une autre méthode que le kurtosis peut être utilisée. Le filtre de détection de mouvement vise à détecter un changement d'activité lié au mouvement, aux phases de contact/non-contact ou à l'insertion du cathéter. Pour cela, le signal est divisé en trois parties de 0,5 seconde, la variance de chaque partie est calculée et le rapport de la plus grande variance sur la plus faible est comparé avec une valeur seuil de l'ordre de 10^6. Ce seuil a été identifié comme particulièrement avantageux par la Demanderesse lors de ses travaux. En variante, ce filtre peut être ignoré, un autre seuil peut être retenu ou une autre méthode peut être retenue. Le filtre d'amplitude vise à refléter le fait que les signaux de tension extrêmement basse – invisibles pendant la procédure – représentent principalement du bruit. Pour cela, la piste est seuillée à 0,03 mV, c’est-à-dire que toutes les amplitudes inférieures à ce seuil sont ramenées à 0. De manière similaire, les signaux avec une amplitude élevée sont caractéristiques d'un bruit élevé pendant l'insertion du cathéter ou les schémas de stimulation saturés. Pour cette raison, la piste est également seuillée à 3,6 mV, c’est-à-dire que toutes les amplitudes supérieures à ce seuil sont ramenées à 3,6 mV. En variante, ce filtre peut être ignoré ou les seuils modifiés. Ensuite, le signal PPS (débruité ou pas) est traité dans une opération 220 par le détecteur 10 pour l'opération principale du dispositif 2 : la détection de segments d'activation. Le but est d'identifier dans la piste quelle portion correspond à une activité cardiaque. Pour cela, le détecteur 10 exécute une fonction DetAct() dont un exemple de mise en œuvre sera décrit au moyen des figures 3 et 4. Une fois les segments d'activations détectés, le calculateur 12 exécute une fonction ALCL() dans une opération 230 afin de déterminer une valeur LCL pour la piste si cela est possible, ainsi qu'une valeur LCL agglomérée lorsque plusieurs pistes sont traitées et que leurs valeurs LCL respectives le permettent. Enfin, la boucle se termine dans une opération 299, et le dispositif 2 peut traiter une ou des pistes correspondant à une fenêtre ultérieure. La représente un exemple de mise en œuvre de la fonction DetAct(). Dans une opération 300, le détecteur 10 exécute une fonction Filt() qui réalise un seuillage adaptatif du signal PPS. Pour cela, la fonction Filt() analyse toute le signal et ne garde que les données dont la valeur d'amplitude en valeur absolue est au-delà du 95 e percentile, c’est-à-dire les 5% de valeurs les plus élevées. Les autres valeurs sont ramenées à 0. Le signal résultant est désigné par la référence FPPS (pour " filtered preprocessed signal " en anglais). Ensuite, dans une opération 305, une fonction Ext() est exécutée sur le signal FPPS pour y détecter des extrema locaux. Du fait de l'opération 300 précédente, les extrema détectés correspondent aux pics non bruités du signal initial. De nombreuses méthodes sont connues de l'homme du métier pour identifier ces extrema locaux, qui sont renvoyés en sortie dans un tableau E[]. Une fois les extrema déterminés, une fonction Det() est exécutée dans une opération 310 pour identifier des segments d'activation. L'idée générale est qu'un segment d'activation est une partie du signal qui comprend des extrema relativement proches qui peuvent être séparés par des valeurs nulles, et telle qu'entre deux segments d'activation distincts, toutes les valeurs du signal sont nulles. Par conséquent, la fonction Det() utilise dans l'exemple une fenêtre glissante pour laquelle, à chaque instant on associe le nombre d'extrema dans la fenêtre. Cela permet de réaliser une estimation de densité des extrema. Par construction, entre deux segments, la valeur est nulle – puisque toutes les valeurs sont nulles. Cela permet de délimiter les bornes des segments d'activation qui sont stockées dans un tableau AS[]. Dans l'exemple décrit ici, le tableau AS[] comprend pour chaque segment le marqueur de temps de début et le marqueur de temps de fin, qui suffisent à identifier toutes les données d'électrogrammes ou des signaux PPS ou FPPS correspondantes. En variante, ces données pourraient être stockées dans le tableau AS[]. La fonction Det() détermine également pour chaque segment d'activation un instant de référence. Dans la variante la plus préférée, cet instant est celui pour lequel le signal a la valeur absolue la plus élevée dans le signal FPPS. En variante, il pourrait être choisi différemment, par exemple en étant le marqueur de temps de début ou le marqueur de temps de fin du segment d'activation, en état déterminé par une formule de type barycentre des valeurs non nulles des données d'électrogrammes du segment d'activation concerné, ou encore en moyennant les marqueurs de temps d'un nombre restreint de donnée d'électrogrammes du segment d'activation présentant la valeur absolue la plus élevée (par exemple les trois valeurs les plus importantes). Dans une variante préférée de l'invention, les opérations 300, 305 et 310 peuvent être remplacées par une détection d'extrema locaux selon laquelle un extrema n'est gardé que s'il appartient au 95 e percentile. Ensuite un noyau normal (fenêtre gaussienne) est placé au centre de chaque extremum. Les noyaux superposés sont additionnés, donnant une estimation de la densité du noyau lisse. La densité obtenue représente donc la distribution des extrema le long du signal et permet donc de trouver les bornes des segments d’activation en ciblant des zones infinitésimales de la densité. Cela correspond à un algorithme d'estimation de densité de kernel, comme décrit par exemple à l'adresse https://web.archive.org/web/20220414175413/https://en.wikipedia.org/wiki/Kernel_density_estimation. Ensuite, une fonction R() est exécutée sur le tableau de segments d'activation AS dans une opération 315. Les instants de référence de chaque segment d'activation forment deux à deux des intervalles. La Demanderesse a découvert que ces intervalles présentent une grande importance, et qu'il est en particulier crucial qu'ils présentent une certaine périodicité et vraisemblance entre eux. La fonction R() calcule un ratio r selon la formule suivante : où max(i) et min(i) sont respectivement la durée d'intervalle la plus longue et la plus courte parmi les intervalles définis par les instants de référence du tableau AS[], et mean(i) est la moyenne de la durée des intervalles définis par les instants de référence du tableau AS[]. La valeur r est une valeur de variabilité qui est robuste à l'amplitude en valeur absolue et capture bien l'étalement des valeurs. La Demanderesse a observé qu'une valeur de r de 0,5 est particulièrement discriminante pour l'obtention de résultats fiables dans le cas de la FA. En variante, cette valeur pourrait être comprise entre 0,35 et 0,75. Le ratio r est une mesure de la variabilité et de l'étendue des valeurs. Bien que la formule présentée ici soit préférée, d'autres formules pourront être retenues pour évaluer ce ratio, dès lors qu'elles capturent la mesure de la variabilité et de l'étendue des valeurs. Lorsque le ratio r est supérieur à 0,5, cela signifie que les intervalles définis par les segments d'activation sont insuffisamment semblables. Une des causes peut être la fonction Filt(). Pour cette raison, les opérations 300, 305 et 310 sont répétées dans des opérations 325, 330 et 335, à la différence près que l'opération 325 exécute une fonction Filt2() dans laquelle le seuil est fixé au 90 e percentile. En variante, le seuil pourrait être fixé plus bas que le 90 e percentile Une opération 340 teste si le ratio obtenu par ces opérations est plus faible qu'à l'opération 320. Si c'est le cas, alors le tableau ASm[] de l'opération 335 remplace le tableau AS[] dans une opération 340. Après l'opération 340, ou lorsque le ratio r est inférieur à 0,5 dans l'opération 320, ou lorsque les opérations 325 à 335 ne permettent pas d'améliorer le ratio r, un test est réalisé dans une opération 350 afin de déterminer si la piste est caractéristique d'un rythme lent. Pour cela, une fonction SR() est exécutée et teste si plus de 5 segments d'activation ont été trouvés dans la piste. En effet, si ce n'est pas le cas, alors la valeur LCL est potentiellement supérieure à 300 ms. Bien que cela soit possible, cela peut également être dû aux diverses opérations de débruitage ou à l'influence du champ lointain (" far field " en anglais). Pour cette raison, lorsqu'un rythme lent est détecté, l'opération 310 est répétée dans une opération 355 mais avec une fenêtre glissante de largeur augmentée. Dans cette même opération, les segments dans lesquels l'amplitude est inférieure à 90% de l'amplitude maximale de la piste sont supprimés. Une opération 360 teste si cela améliore le ratio r, et, si c'est le cas, le tableau AS[] est remplacé dans une opération 365 par le tableau ASm[] produit par l'opération 355. Enfin, la fonction DetAct() lance dans une opération 370 une fonction PostProc(), puis la fonction DetAct() se termine avec une opération 399. Les opérations 350, 355, 360 et 365 sont optionnelles, et les opération 320, 340 et 345 pourraient directement découler sur l'opération 370. Un exemple de mise en œuvre de la fonction PostProc() sera maintenant décrit en référence à la . Le principe de la fonction PostProc() est comme suit : - le posttraitement vise un ratio r inférieur à 0,5, - chaque traitement est répété au maximum trois fois, et chaque itération est acceptée seulement si elle améliore le ratio r, - on cherche d'abord à découper les segments d'activation trop longs, puis on essaye de travailler sur les intervalles. Ainsi, la fonction PostProc() commence dans une opération par une opération 400 par un test sur le ratio r. En effet, si la fonction PostProc() est appelée suite à l'opération 320, alors le ration r est forcément inférieur à 0,5 et aucun posttraitement n'est nécessaire. Si c'est le cas, alors la fonction se termine dans une opération 499. Si non, un premier posttraitement est exécuté dans des opérations 405, 410 et 415 pour découper les segments d'activation trop longs. Ainsi, dans l'opération 405, une fonction Div() est exécutée par le détecteur 10 afin de couper en deux tout segment d'activation dont la durée est supérieure à deux fois la moyenne de la durée de l'ensemble des segments d'activation. L'opération 410 teste si cette opération améliore le ratio r, et, si c'est le cas, le tableau AS[] est remplacé dans l'opération 415 par le tableau ASm[] produit par l'opération 405. Après ce premier posttraitement, des indices i et j sont initialisés à 0 dans une opération 420. Ces indices permettent de s'assurer que les deux posttraitements suivants ne sont pas répétés plus de 3 fois. Le deuxième posttraitement comprend des opérations 425, 430, 435, 440, 445, 445, 450, 455 et 460. Dans l'opération 425, une fonction ClustL() est exécutée sur la tableau AS[]. Cette fonction a pour rôle de segmenter les intervalles du tableau AS[] en trois groupes : un groupe d'intervalles "courts", un groupe d'intervalles "moyens", et un groupe d'intervalles "longs". La philosophie de ce posttraitement est que le groupe d'intervalles "moyens" est censé représenter des intervalles qui n'ont pas besoin de posttraitement, contrairement au groupe d'intervalles "courts" et au groupe d'intervalles "longs". Ce deuxième posttraitement portant sur les groupes d'intervalles "longs", la fonction ClustL() retourne un tableau C[] qui contient tous les intervalles du groupe d'intervalles "longs". Dans l'exemple décrit ici, cette segmentation est réalisée au moyen d'une librairie de programmation jenkspy (voir l'adresse https://pypi.org/project/jenkspy/), qui met en œuvre l'algorithme de Fisher-Jenks des ruptures naturelles (ou " natural breaks algorithm " en anglais, voir par exemple l'adresse https://web.archive.org/web/20220617141817/https://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization). Cet algorithme présente l'avantage d'être non supervisé. D'autres algorithmes (kmeans, etc.) pourraient être utilisés. Ensuite, dans une opération 430, le signal de piste originel S est retraité dans une opération 430 pour essayer de détecter des activations qui auraient été manquées à l'intérieur des intervalles du tableau C[]. L'idée ici est que les diverses opérations de débruitage ont pu lisser certains extrema, ce qui a produit les intervalles trop longs. Pour cela, l'opération 430 exécute la fonction Filt2(), mais sur le signal S de piste avant l'opération 200, et seulement sur ces intervalles. L'opération 435, identique aux opérations 305 et 330, exécute la fonction Ext() afin de déterminer les extrema dans le signal FS résultant de l'opération 430. Ensuite, le tableau E[] résultant est traité dans l'opération 440 de manière similaire aux opérations 310 et 335, avec l'exécution d'une fonction Detm() similaire à la fonction Det(), mais qui vient remplacer les segments d'activation du tableau AS[] correspondant aux intervalles du tableau C[] par ceux trouvés par la fonction Detm() et stocke le tout dans le tableau ASm[]. Comme précédemment, le but est de réduire la valeur du ratio r, ce qui est vérifié dans l'opération 445. Si cela est le cas, alors l'indice i est incrémenté dans l'opération 450, et le tableau AS[] est remplacé par le tableau ASm[] dans l'opération 455. Enfin, dans l'opération 460, l'indice i est testé pour limiter à 3 la répétition des opérations 425 à 455, et, si c'est le cas, alors la boucle du deuxième posttraitement reprend avec l'opération 425. Si ce n'est pas le cas, ou si le test de l'opération 445 est négatif, alors le troisième posttraitement est lancé. Le troisième posttraitement concerne, comme indiqué plus haut, les groupes d'intervalles "courts". Pour cela, des opérations 465, 470, 475, 480 et 485 sont répétées jusqu'à trois fois, tant que le ratio r est amélioré. Ainsi, la segmentation de l'opération 425 est répétée dans l'opération 465, mais avec une fonction ClustS() qui retourne un tableau A[] contenant les intervalles du groupe d'intervalles "courts" au lieu du tableau C[]. Ensuite, dans l'opération 470, une fonction Mg() teste l'intervalle du tableau A[] et vérifie si sa durée multipliée par 1,75 est plus importante que la durée du plus long des intervalles du groupe d'intervalles "moyens". Si cela est le cas, cela signifie que les intervalles du tableau A[] ne sont pas suffisamment distincts de ceux du groupe d'intervalles "moyens" et ne doivent pas faire l'objet d'un posttraitement. Si c'est le cas, alors la fonction Mg() modifie le tableau AS[] afin de fusionner, pour chaque intervalle du tableau A[], les deux segments d'activations dont les instants de référence respectifs servent de borne à un intervalle, et le résultat est stocké dans le tableau ASm[]. Comme précédemment, le but est de réduire la valeur du ratio r, ce qui est vérifié dans l'opération 475. Si cela est le cas, alors l'indice j est incrémenté dans l'opération 480, et le tableau AS[] est remplacé par le tableau ASm[] dans l'opération 485. Enfin, dans l'opération 490, l'indice j est testé pour limiter à 3 la répétition des opérations 465 à 485, et, si c'est le cas, alors la boucle du deuxième posttraitement reprend avec l'opération 465. Si ce n'est pas le cas, ou si le test de l'opération 475 est négatif, alors le troisième posttraitement est terminé et la fonction PostProc() se termine dans l'opération 499. De nombreuses variantes peuvent être envisagées pour la fonction PostProc(). Ainsi, un ou deux des trois posttraitements pourrait être omis, leur ordre pourrait être modifié, bien que la Demanderesse ait découvert que cet ordre offre les meilleurs résultats. De plus, le deuxième et le troisième posttraitement pourraient être réalisés simultanément afin de gagner en rapidité. De plus, les paramètres de ces posttraitements, comme les seuils de ratio ou le nombre d'itérations pourraient varier. Dans les fonctions DetAct() et PostProc(), de nombreux retraitements sont conditionnés par une baisse du ratio r. Dans certaines variantes, cette condition pourrait être omise. Une fois la fonction DetAct() terminée, le tableau AS[] comprend donc l'ensemble des segments d'activation détectés, ainsi que les instants de référence correspondants qui définissent les intervalles. La représente un exemple de mise en œuvre de la fonction ALCL() mise en œuvre par le calculateur 12 pour estimer la valeur LCL et éventuellement une valeur LCL agglomérée. La fonction ALCL() comprend deux parties. Dans une première partie, cette fonction calcule la valeur LCL pour la piste qui vient d'être traitée, puis elle cherche à déterminer si une valeur LCL agglomérée peut également être calculée. La première partie commence par une opération 500 dans laquelle une fonction Per() est exécutée. La fonction Per() a pour but de déterminer si les intervalles définis par les segments d'activations définissent une activation périodique. Pour cela, dans l'exemple décrit ici, la fonction Per() teste trois conditions : - la durée de chaque intervalle est calculée afin de vérifier qu'aucun d'entre eux n'excède un quart de la piste, - la durée totale des segments d'activation est mesurée pour vérifier qu'elle occupe plus de la moitié de la piste, et - le ratio r est recalculé pour vérifier qu'il est inférieur à 0,6. Si l'une de ces trois conditions n'est pas remplie, alors la piste est considérée comme inexploitable et la valeur LCL est mise à 0 dans une opération 502. Dans le cas contraire, la piste est considérée comme périodique, et une opération 505 optionnelle vérifie si le rythme de la piste est lent ou non. Si c'est le cas, alors dans une opération 510 également optionnelle, le tableau AS[] est complété avec des données de tableau AS[] antérieures en mémoire tampon afin d'avoir suffisamment de segments d'activation pour pouvoir calculer la valeur LCL. Ensuite, dans une opération 515, une fonction Calc() détermine à partir du tableau AS[] une valeur LCL ainsi qu'une valeur CV qui représente la variance des durées d'intervalle au sein du tableau AS[]. Dans l'exemple décrit ici, la valeur LCL est obtenue en déterminant la médiane des durées des intervalles dans le tableau AS[]. En variante, la moyenne ou une valeur tirée de la médiane, de la moyenne ou autrement barycentrique pourrait être utilisée. Dans l'exemple décrit ici, la valeur CV est obtenue en divisant l'écart-type des durées d'intervalle par la moyenne de celles-ci. La valeur CV est alors testée dans une opération 520 afin de déterminer si les intervalles sont suffisamment homogènes entre eux. Si cette valeur excède 0,5, alors il est considéré que ce n'est pas le cas, et la valeur LCL est mise à 0 dans l'opération 502. Enfin, la première partie de la fonction ALCL() se termine dans une opération 530 dans laquelle la valeur LCL est introduite dans un tableau LCL[]. La valeur "0" indique que la valeur LCL est soit associée à une piste non périodique, soit insuffisamment homogène. Lorsque le tableau LCL[] reçoit toutes les valeurs LCL de chaque piste pour une période de temps donnée, la fonction ALCL() peut dans la deuxième partie essayer de déterminer une valeur LCL agglomérée. Ainsi, dans une opération 535, une fonction LCL() teste le tableau LCL[] pour déterminer s'il contient suffisamment de valeurs LCL utilisables. Si ce n'est pas le cas, alors la fonction se termine dans une opération 599. Si c'est le cas, alors dans une opération 540, un tableau ALCL[] reçoit les valeurs LCL utilisables grâce à l'exécution d'une fonction Sel(). Ensuite, dans une opération 545 identique à l'opération 515, le calculateur 12 exécute la fonction Calc() qui détermine une valeur LCL agglomérée ALCL et une valeur CV pour les valeurs LCL. En variante, une fonction Calc2() peut être appliquée qui segmente le tableau ALCL[] en deux groupes, et, si le centre des deux groupes sont séparés de plus de 15% , retourne une valeur tirée de la moyenne ou de la médiane ou autrement barycentrique du groupe dont les valeurs sont les plus élevées. La valeur CV est ensuite testée dans une opération 550 par une fonction CV() qui détermine deux conditions dans l'exemple décrit ici : - la première condition porte sur le fait que la valeur CV doit être inférieure à 0,3, et - la deuxième condition vérifie que la valeur ALCL en présente pas plus de 50% de différence avec la valeur ALCL immédiatement précédente. La première condition est relative à la cohérence des valeurs LCL entre elles, compte tenu du fait qu'il s'agit de mesures locales proches. La deuxième condition est de nature opératoire et vise à éviter d'envoyer des informations qui pourraient paraître contradictoires au praticien. Si l'une de ces deux conditions n'est pas remplie, alors il est considéré que la valeur ALCL est inutilisable, et elle est mise à 0 dans une opération 555. Sinon, une estimation de valeur LCL agglomérée a été calculée avec succès et peut être renvoyée avec l'ensemble des valeurs LCL des électrodes correspondantes. Dispositif de détermination d’une longueur de cycle d’activation cardiaque comprenant une mémoire (4) agencée pour stocker des données d’électrogrammes présentant des marqueurs de temps et associées à une piste, un préparateur (6) agencé pour recevoir des données d’électrogrammes associées à une piste donnée et à une fenêtre temporelle d’au moins 1,5 seconde, pour en extraire du bruit de ligne de base et du bruit haute-fréquence et pour fournir des données prétraitées, un détecteur (10) agencé pour recevoir les données prétraitées et pour y détecter des segments d’activation sans chevauchement qui correspondent chacun à une fenêtre au sein de ladite fenêtre temporelle d’au moins 1,5 seconde, lequel détecteur (10) opère en déterminant des extrema locaux dans les données prétraitées et en les regroupant en segments d’activation, et un calculateur (12) agencé pour déterminer une condition de périodicité des activations en déterminant dans chaque segment d’activation un instant de référence et en comparant la durée d’intervalles chacun défini par deux instants de référence consécutifs à la durée de la fenêtre temporelle d’au moins 1,5 seconde, et, en cas de condition de périodicité indiquant des segments d’activation périodiques, pour déterminer une longueur de cycle d’activation à partir de la moyenne ou de la médiane des durées d’intervalles. Dispositif selon la revendication 1, dans lequel le calculateur (12) est en outre agencé pour déterminer la condition de périodicité des activations à partir du rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la moyenne de la durée des intervalles. Dispositif selon l'une des revendications précédentes, dans lequel le détecteur (10) est agencé pour calculer le rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la moyenne de la durée des intervalles, et pour redétecter les segments d'activation en modifiant la détection des extrema lorsque cette valeur excède un seuil choisi. Dispositif selon l'une des revendications précédentes, dans lequel le détecteur (10) est agencé pour effectuer un posttraitement en coupant en deux ou plus de deux les segments d'activation dont la durée est supérieure à deux fois la moyenne des durées des segments d'activation. Dispositif selon l'une des revendications précédentes, dans lequel le détecteur (10) est agencé pour effectuer un posttraitement en segmentant en trois groupes les intervalles en fonction de leur durée, en recherchant des extrema locaux dans les données d'électrogrammes correspondant aux intervalles du groupe de durées les plus longues, et, le cas échéant en complétant les segments d'activation avec des segments d'activation tirés de ces extrema. Dispositif selon l'une des revendications précédentes, dans lequel le détecteur (10) est agencé pour effectuer un posttraitement en segmentant en trois groupes les intervalles en fonction de leur durée, et en fusionnant les segments d'activations dont les instants de référence définissent les intervalles du groupe de durées les plus courtes. Dispositif selon l'une des revendications 4 à 6, dans lequel le détecteur (10) est agencé pour calculer le rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la durée moyenne des intervalles avant et après posttraitement, et pour n'appliquer le posttraitement que lorsque ce rapport diminue. Dispositif selon l'une des revendications précédentes, dans lequel le calculateur (12) est agencé pour déterminer une valeur de longueur de cycle agglomérée à partir de la valeur de longueur de cycle de plusieurs électrodes en référence à la même fenêtre temporelle. Procédé de détermination d’une longueur de cycle d’activation cardiaque comprenant : recevoir des données d’électrogrammes présentant des marqueurs de temps et associées à une piste donnée et à une fenêtre temporelle d’au moins 1,5 seconde, extraire des données d'électrogrammes de l'opération a) du bruit de ligne de base et du bruit haute-fréquence pour fournir des données prétraitées, détecter dans les données prétraitées des segments d’activation sans chevauchement qui correspondent chacun à une fenêtre au sein de ladite fenêtre temporelle d’au moins 1,5 seconde, en déterminant des extrema locaux dans les données prétraitées et en les regroupant en segments d’activation, déterminer une condition de périodicité des activations en déterminant dans chaque segment d’activation un instant de référence et en comparant la durée d’intervalles chacun défini par deux instants de référence consécutifs à la durée de la fenêtre temporelle d’au moins 1,5 seconde, et, en cas de condition de périodicité indiquant des segments d’activation périodiques, déterminer une longueur de cycle d’activation à partir de la moyenne ou de la médiane des durées d’intervalles. Procédé selon la revendication 9, dans lequel l'opération d) comprend en outre déterminer la condition de périodicité des activations à partir du rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la moyenne de la durée des intervalles. Procédé selon la revendication 9 ou 10, dans lequel l'opération c) comprend c1) calculer le rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la moyenne de la durée des intervalles, et c2) redétecter les segments d'activation en modifiant la détection des extrema lorsque cette valeur excède un seuil choisi. Procédé selon l'une des revendications 9 à 11, dans lequel l'opération c) comprend une ou plusieurs des opérations de posttraitement suivantes : c3) couper en deux ou plus de deux les segments d'activation dont la durée est supérieure à deux fois la moyenne des durées des segments d'activation, c4) segmenter en trois groupes les intervalles en fonction de leur durée, en recherchant des extrema locaux dans les données d'électrogrammes correspondant aux intervalles du groupe de durées les plus longues, et, le cas échéant en complétant les segments d'activation avec des segments d'activation tirés de ces extrema, c5) segmenter en trois groupes les intervalles en fonction de leur durée, et en fusionnant les segments d'activations dont les instants de référence définissent les intervalles du groupe de durées les plus courtes. Procédé selon la revendication 12, dans lequel l'opération c) comprend en outre c6) calculer le rapport de la différence entre la durée d’intervalle la plus longue et la durée d’intervalle la plus courte divisée par la durée moyenne des intervalles avant et après posttraitement, et n'appliquer le posttraitement que lorsque ce rapport diminue. Programme informatique comprenant des instructions pour exécuter le procédé selon l’une des revendications 10 à 13 lorsque ledit programme informatique est mis en œuvre par ordinateur. Support de stockage de données lisible par ordinateur sur lequel est enregistré le programme informatique selon la revendication 14.