\label{HCL}
Si un consensus scientifique existe autour du lien entre la forme des pulsations cardiaques du signal de PIC et la compliance cérébrale~\cite{kazimierska2023analysis}, il n'existe que peu d'études quantitatives sur la pertinence clinique du ratio P2/P1 dans le traitement des différentes pathologies pour lesquelles le monitorage de la PIC est recommandé. La relative pauvreté de la littérature scientifique à ce sujet s'explique principalement par la difficulté à identifier automatiquement les pics P1 et P2 sur un signal de PIC. Des obstacles techniques apparaissent à différents niveaux : 
\begin{enumerate}
\item Une forte variabilité morphologique du signal de PIC est observée entre les différents patients.
\item Les pics P1 et P2 ne sont pas toujours observables, en particulier dans dans les valeurs de PIC extrêmes (proche de 0 mmHg ou supérieur à 25-30 mmHg).
\item Les signaux de PIC peuvent être pollués par différentes types d'artefacts (toux, manipulations des patients, bruits électroniques ...)
\item Les ambiguïtés d'identification manuelle des pics P1 et P2 sont difficiles à lever, bien que des signaux auxiliaires (pression artérielle, ultrasonographie) peuvent être utiles à cette fin.
\end{enumerate}

La solution technique proposée ici est le pipeline d'analyse ICP-SWAn (\textit{Selective Waveform Analysis}), permettant un monitorage du ratio P2/P1 en temps réel dans un dispositif embarqué au lit du patient. Différents tests statistiques sont réalisés de façon à ne pas afficher de valeur en présence d'artefacts ou de détections identifiées comme incertaines. Plus formellement, l'analyse des pulsations est effectuée successivement par deux réseaux de neurones récurrents. Le premier modèle identifie les pulsations valides sur lesquelles le second modèle peut identifier les pics P1 et P2. Après la phase d'entraînement, des seuils d'incertitude sur les sorties des réseaux de neurones sont calculés en appliquant la théorie du \textit{Learn-then-Test}. Le développement présenté ci-dessous s'appuie largement sur la classification de Wroclaw pour quantifier les performances d'ICP-SWAn dans différentes situations types.

\section{Matériel et méthodes}
\subsection{Collecte des données}

Les signaux de PIC ont été acquis sur deux cohortes distinctes de patients admis dans une unité de soins intensifs neurologiques (NICU) entre janvier 2021 et mars 2024. Une cohorte (49 patients) a été dédiée au processus de formation et l'autre (59 patients) au processus de test. Au total, plus de 90\% des patients souffraient soit de traumatisme crânien (TC) soit d'hémorragie subarachnoïdienne (HSA). Les signaux de PIC ont été acquis à l'aide d'un capteur intraparenchymateux (Pressio, Sophysa, Orsay, France) à une fréquence d'échantillonnage de 100 Hz. Dans le cas des données de test, un signal de pression artérielle synchronisé à 100 Hz a également été acquis à l'aide d'un cathéter artériel invasif. Les critères d'inclusion étaient les suivants : âge compris entre 18 et 80 ans et sédation sous ventilation mécanique. Les patients présentant une défaillance hémodynamique majeure ou une craniectomie décompressive étaient exclus d'office. Un second jeu de test, disponible publiquement en ligne, a également été utilisé dans le processus de test. Celui-ci contient 11 172 pulsations de PIC valides extraites de 64 enregistrements différents acquis au moyen d'un capteur intraparenchymateux avec une résolution minimale de 240 Hz. Le partitionnement final des données est illustré par la figure~\ref{hcl-fig:fig2}

\begin{figure}[h!]
    \centering
    \includegraphics[width=1\linewidth]{HCL/fig2.png}
    \caption{Partitionnement des données utilisées.}
    \label{hcl-fig:fig2}
\end{figure}


L'utilisation de deux ensembles de tests différents est un moyen de mettre en évidence les variations de performances potentiellement induites par le contexte d'évaluation. En particulier, le jeu de test privé a été conçu pour couvrir la plupart des difficultés pouvant survenir dans une contexte de monitorage en temps réel en incluant des segments bruités ou artéfactés (voir table~\ref{tab:demographie}). Concernant la composition de la cohorte de test, la population des patients atteints de HSA comprend 60\% de femmes pour un âge moyen de 56.4 ans. En comparaison, la population de patients atteints de TC compte 12\% de femmes pour un âge moyen de 44.6 ans, avec un pic observé entre 30 et 40 ans. Dans les deux cas, ces proportions sont globalement représentatives de l'épidémiologie observée dans les pays d'Europe occidentale~\cite{dewan2018estimating}, malgré une légère sous-représentation des femmes dans la population des TC.

\begin{table}[h!]
  \centering
      \resizebox{\columnwidth}{!}{%
  \begin{tabular}{|c||c|c|c|}
\hline
Démographie & Jeu d'entraînement & Jeu de test privé & Jeu de test public \\
\hline
       \textit{n}&   59&49 &64\\
       Age&   53, std = 17&49, std = 12 &-\\
       Sexe&   19 (F) / 40 (M)&21 (F) / 28 (M) &-\\
       TC&   42&28 &-\\
       HSA&   11&15 &-\\
Autre &  6&6 &-\\
\hline
\makecell{Caractéristiques \\ des segments}&  & &\\
\hline
PIC moyenne (mmHg) & 11.90, std = 9.7& 8.88, std = 8.11&3.46, std = 7.28\\
Ratio P2/P1 moyen &1.22, std = 0.59 & 1.44, std = 0.58 &1.25, std = 0.34\\
\hline
\makecell{Composition des \\ jeux de données}& & &\\
\hline
Pulsations valides & 49,380 (86.4\%)&10,835 (82.7\%) &11,172 (100\%)\\
Pulsations sans P2/P1 & 3,988 (6.9\%)&838 (6.4\%) &-\\
Artefacts &3,889 (6.7\%)&1,413 (10.8\%) &-\\
\hline 
Classification de Wroclaw & & &\\
\hline
T1 & 15,655 (27.7\%)& 2,151 (16.4\%) &1,486 (13.3\%)\\
T2 & 17,041 (30.2\%)& 3,232 (24.7\%) &5,994 (53.7\%)\\
T3 & 9,554 (16.9\%)&  4,392 (33.6\%) &2,811 (25.2\%)\\
T4 & 5,507 (9.74\%)& 1,692 (12.9\%) &514 (4.6\%)\\
A+E & 8,758 (15.5\%) & 1,619 (12.4\%) &367 (3.3\%)\\
\hline
Total& 57,257& 13,086 &11,172\\
\hline 
  \end{tabular}
  }
  \caption{Composition des jeux de données. $n$ --- nombre de patients, std --- écart type, TC --- Traumatisme crânien, HSA --- hémorragie subarachnoïdienne, PIC --- Pression intracrânienne}
  \label{tab:demographie}
\end{table}

\subsection{Correspondance entre ratio P2/P1 et classification de Wroclaw}

De manière à rendre compte des correspondances existantes entre le ratio P2/P1 et la classification de Wroclaw, le ratio P2/P1 moyen est calculé par classe de pulsation. La comparaison est présentée dans la table~\ref{tab:psi-ratio}. Conformément aux critères de la classification de Wroclaw, le ratio P2/P1 augmente progressivement des classes T1 à T4. La classe A+E est la plus hétérogène avec un écart type  important par rapport aux ratios moyens associés.

\begin{table}
    \centering
    \begin{tabular}{|c||c|c|}
    \hline
         &  Jeu de test privé& Jeu de test public\\
    \hline
         T1&  $0.78 \pm 0.16$& $0.75 \pm 0.14$\\
         T2&  $1.11 \pm 0.20$& $1.19 \pm 0.17$\\
         T3&  $1.73 \pm 0.39$& $1.54 \pm 0.25$\\
         T4&  $2.08 \pm 0.72$& $1.79 \pm 0.46$\\
         A+E&  $1.36 \pm 0.64$& $1.07 \pm 0.29$\\
    \hline
    \end{tabular}
    \caption{Ratio P2/P1 des différentes classes de pulsations. Les données sont présentées au format moyenne $\pm$ écart type.}
    \label{tab:psi-ratio}
\end{table}


\subsection{Processus d'annotation}

Les chercheurs en charge du processus d'annotation ont utilisé une interface développée à cet effet, avec un accès à l'ensemble des enregistrements de PIC. Dans le cas de l'ensemble de données de test, un signal de PA auxiliaire synchronisé était également disponible comme une aide à l'interprétation. Le jeu d'entraînement était constitué de pulsations extraites de segments contigus de 10 minutes manuellement sélectionnés sur chacun des 59 enregistrements. Pour constituer le jeu de test, deux segments contigus de 100 secondes et distants d'au moins 24 heures ont été manuellement sélectionnés sur chacun des 49 enregistrements inclus. Ce processus d'extraction a été appliqué pour couvrir une large gamme de formes d'ondes sur la base de trois critères : (i) les valeurs moyennes de la PIC, (ii) le rapport P2/P1, et (iii) la morphologie globale de la forme d'onde évaluée par la classification de Wroclaw (voir table~\ref{tab:demographie}). Pour chacune des pulsations des segments, les P1 et P2 ont été annotés manuellement lorsqu'ils étaient identifiables. Dans le cas contraire, la pulsation était classée comme non-interprétable ou comme artéfact. L'ensemble de données d'entraînement a été entièrement annoté par un unique chercheur . En revanche, le processus d'annotation pour l'ensemble de données de test a été conçu comme suit : (i) 94 segments du PCI ont été répartis de manière égale entre trois annotateurs, chaque segment étant attribué à une seule personne. (ii) Les 4 échantillons restants (représentant 514 impulsions) ont été labellisés par chacun des trois annotateurs afin de valider l'accord entre les annotateurs. Indépendamment de cette procédure, les segments provenant de 10 enregistrements ont été signalés comme particulièrement bruités et difficiles à interpréter durant le processus d'annotations. Ces enregistrements ont alors été re-labellisés par chacun des annotateurs pour adopter le jugement majoritaire.

\subsection{Prétraitements}
\label{prep}
En amont des analyses décrites ci-dessous, un filtre Butterworth passe-bas de quatrième ordre avec une cut-off fixé à 20 Hz est appliqué à l'ensemble des enregistrements pour retirer des oscillations de nature électrique. Les pulsations sont isolées au moyen de l'algorithme de Scholkmann modifié~\cite{bishop2018multi}. Chaque pulsation ainsi extraite subit les traitements suivants: 
\begin{enumerate}
	\item  Une interpolation polynomiale cubique est appliquée de façon à fixer la longueur de la pulsation à 180 points et supprimer les variations liées à la fréquence cardiaque.
	\item La ligne droite passant par le premier minimum local et le dernier minimum local de la pulsation est soustraite pour supprimer une potentielle rotation due à l'onde respiratoire.
	\item Les valeurs de PIC sont ramenées linéairement dans l'intervalle [0, 1] de façon à éliminer mes différences d'amplitude. 
\end{enumerate} 

Le jeu d'entraînement a ensuite été divisé en trois sous-ensembles : (i) le premier (90\%) dédié à l'entraînement des modèles en tant que tel, (ii) le deuxième (5\%) utilisé comme validation, (iii) et le troisième utilisé pour l'étape de calibration, c'est-à-dire la définition des seuils de décision. Cette séparation a été effectuée de façon à ce que les pulsations d'un même patient soient exclusivement utilisées soit pour l'entraînement, soit pour la validation/calibration.

\subsection{Génération de données synthétiques}
Des exemples synthétiques ont été générés pour augmenter la variabilité du sous-ensemble dédié à l'entraînement, et en particulier pour compenser la sur-représentation des pulsations valides. La procédure retenue consiste à ajouter un bruit gaussien multivarié à la première composante principale de pulsations moyennées localement. Plus formellement, la procédure est la suivante : 
\begin{itemize}
	\item Une analyse en composantes principales (ACP) est calculée sur l'ensemble des pulsations originales.
	\item Pour chaque exemple $x_{i}$, une matrice de variance-covariance $\Sigma$ de dimensions $p \times p$ est calculée à partir des $p$ premières composantes principales des $n$ plus proches voisins, identifiés sur le critère de la distance euclidienne.
	\item La pulsation barycentre de ces $n+1$ pulsations est calculée. Un bruit aléatoire multivarié est additionné à cette pulsation synthétique. Celui-ci est échantillonné à partir d'une distribution normale multivariée d'espérance 0 et de variance-covariance $k\Sigma$, où $k$ est un scalaire multiplicatif choisi par l'utilisateur.
	\item La pulsation synthétique est re-projetée dans l'espace initial. Les prétraitements décrits dans la section \ref{prep} lui sont appliqués.
	\item La pulsation synthétique $\tilde{x}_{i}$ est associée à la même classe que la pulsation $x_{i}$. Si des positions de P1 et P2 avaient été repérées manuellement sur $x_{i}$, des positions pour P1 et P2 sont également attribuées à $\tilde{x}_{i}$. Celles-ci sont alors calculées comme les maxima locaux de courbure minimisant les distance respectives aux P1 et P2 originaux. 
	
\end{itemize}

En pratique, un nouvel ensemble de données a d'abord été généré. Les paramètres $(n, p, k)$ ont été fixés à $(5, 10, 10)$. Une augmentation plus ciblée a ensuite été effectuée afin d'accroître la présence d'artefacts dans l'ensemble d'apprentissage. Pour cette seconde procédure, les paramètres $(n, p, k)$ ont été fixés à $(5, 10, 50)$. Au total, l'ensemble de données d'entraînement augmenté comprend 178 930 pulsations, dont 119 306 pulsations valides, 8 000 pulsations non-interprétables et 51 624 artefacts. Cette procédure d'augmentation n'a été effectuée que sur l'ensemble destiné à l'apprentissage en tant que tel, sans affecter les jeux de validation, calibration ou de test.

\subsection{Procédure d'analyse des pulsations}
\label{spec}
Comme décrit précédemment, les pulsations cardiaques sont analysées successivement par deux modèles d'apprentissage automatique, en l'occurrence des réseaux de neurones incluant des cellules \textit{long short-term memory} (LSTM). Le premier classifie les pulsations de façon à éliminer les artefacts et les pulsations sans ratio P2/P1 calculable. Le second détecte les pics P1 et P2 en renvoyant un premier intervalle de prédiction pour P1 et un second pour P2. Les modèles ont été implémentés en Python 3.11.3 au moyen de la version 2.0 de la bibliothèque PyTorch. Les expériences ont été menées sur une machine virtuelle WSL Ubuntu 20.04.5 installée sur un ordinateur portable Windows 10 équipé de 16 Go de RAM et d'un processeur 12th Gen Intel(R) Core(TM) i7-128.

\subsubsection{Sélection des pulsations}
En premier lieu, les pulsations prétraitées sont classées en trois catégories : (i) les pulsations valides, (ii) les pulsations non-interprétables, et (iii) les artefacts (voir figure~\ref{hcl-fig:fig3}). Bien que seules les impulsions valides soient envoyées à l'étape de détection, trois classes ont été définies de façon à faciliter le processus d'annotation manuelle et améliorer la convergence du réseau neuronal. L'entraînement a été réalisé sur 100 époques au moyen de l'algorithme d'optimisation ADAM, une fonction de perte de type entropie croisée et une taille de batch de 512.

\begin{figure}[h!]
    \centering
    \includegraphics[width=1\linewidth]{HCL/fig3.png}
    \caption{Exemples des trois classes de pulsations utilisées par le pipeline. I~\textemdash~"pulsation valide". II~\textemdash~"pulsation non-interprétable". III~\textemdash~"artefact"}
    \label{hcl-fig:fig3}
\end{figure}

\subsubsection{Détection des pics}
La procédure de détection, inspirée de l'algorithme MOCAIP original~\cite{hu2008morphological}, consiste à désigner les pics P1 et P2 parmi un ensemble de positions candidates. Pour ce faire, une régression par quantiles est effectuée par le second modèle neuronal sur les pulsations classées comme valides. Celui-ci renvoie deux intervalles de prédiction autour des positions des pics P1 et P2, respectivement notées $x_{P1}$ et $x_{P2}$. Plus formellement, pour une pulsations $x$, le modèle neuronal renvoie un vecteur à quatre composantes, noté $(l_{P1}(x), u_{P1}(x), l_{P2}(x), u_{P2}(x))$. L'intervalle de prédiction pour $x_{P1}$ est donné par $[l_{P1}(x), u_{P1}(x)]$, tandis que l'intervalle de prédiction pour $x_{P2}$ est donné par $[l_{P2}(x), u_{P2}(x)]$. En parallèle de cette régression, l'ensemble des positions candidates $\Gamma(x) = (\gamma_{i})_{i=1}{g}$ est calculé. Celui-ci correspond aux $g$ maxima locaux positifs du vecteur $\kappa(-1000*x)$, où $\kappa(s) = s" / s(1+s'^{2})^{3/2}$ avec $s"$ et $s'$ désignant respectivement les première et seconde dérivées discrètes d'une pulsation $s$. La fonction $\kappa$ est généralement désignée sous le nom de \textit{courbure} du signal. Avec d'un côté les intervalles de prédiction pour P1 et P2, et d'un autre l'ensemble des positions candidates, les positions $x_{P1}$ et $x_{P2}$ sont alors estimées de la façon suivante : 
\[
\widehat{x}_{P1} = \underset{i \in [\![1, g]\!]}{\arg\min} [(\gamma_{i} - \ell_{p1}(x))^{2} + (\gamma_{i} - u_{p1}(x))^{2}]
\]
et
\[
\widehat{x}_{P2} = \underset{j \in [\![P1, g]\!]}{\arg\min} [(\gamma_{j} - \ell_{p2}(x))^{2} + (\gamma_{j} - u_{p2}(x))^{2}]. 
\]
Les $\hat{x}_{P1}$ et $\hat{x}_{P2}$ finaux ne sont pas nécessairement inclus dans leurs intervalles de prédictions respectifs, comme montré dans l'exemple de la figure (4). L'introduction de ces intervalles de prédictions a pour unique de objectif d'utiliser la largeur de cet intervalle comme une indication de l'incertitude du modèle neuronal. L'entraînement a été réalisé sur 300 époques au moyen de l'algorithme d'optimisation ADAM et une taille de batch de 512. La fonction de perte utilisée combine deux fonctions L1 asymétriques (encore appelées \textit{pinball losses}) conçues pour renvoyer une estimation des quantiles à 25\% et 75\% des positions  $x_{P1}$ et $x_{P2}$.


\begin{figure}[h!]
    \centering
    \includegraphics[width=1\linewidth]{HCL/fig4.png}
    \caption{Processus d'identification de P1 et P2. Les positions candidates correspondent aux maxima locaux positifs de la courbure de la pulsation. Les intervalles de prédiction de P1 et P2 sont calculés par un modèle neuronal. Comme dans cet exemple, les pics peuvent être choisis en-dehors des intervalles de prédiction. Les pics P1 et P2 manuellement annotés correspondent ici aux pics choisis par l'algorithme.}
    \label{hcl-fig:fig4}
\end{figure}

\subsection{Contrôle conforme des risques}
\subsubsection{Procédure de contrôle des risques}
Cette étape vise à garantir certaines propriétés statistiques du pipeline d'analyse complet. La procédure de contrôle des risques est conçue pour identifier les prédictions non-fiables et les éliminer de l'affichage final. Trois critères sont utilisés pour quantifier l'incertitude des modèles neuronaux. En premier lieu, le classifieur renvoie la probabilité $\hat{f}$ de ne pas pouvoir calculer de ratio P2/P1 (\textit{i.e.}, du fait de pics manquants ou de la présence d'artefacts). Dans un second temps, le détecteur renvoie deux intervalles de prédiction $[l_{P1}(x), u_{P1}(x)]$ et $[l_{P2}(x), u_{P2}(x)]$ dont les largeurs sont respectivement notées $\hat{w}_{P1}$ et $\hat{w}_{P2}$. Ainsi, des seuils sur $\hat{f}$, $\hat{w}_{P1}$ et $\hat{w}_{P2}$ peuvent être utilisés pour rejeter des prédictions identifiées comme trop incertaines et garantir certaines propriétés statistiques sur les sorties du pipeline. Plus formellement, soit $\lambda = [\lambda_{0}, \lambda_{1}, \lambda_{2}] \in [0,1] \times [0, 180] \times [0, 180]$ un triplet de seuils. La fonction de décision finale est définie comme suit:

\[
    \mathcal{F}_{\lambda}(x)= 
\begin{cases}
    -1 ,& \text{if } \widehat{f}(x) > \lambda_{0} \text{ or } \widehat{w_{1}}(x) > \lambda_{1} \text{ or } \widehat{w_{2}}(x) > \lambda_{2}\\
    \widehat{P}2(x)/\widehat{P}1(x),              & \text{sinon.}
\end{cases}
\]

L'objectif est contrôler simultanément deux risques : 
\[
    R_{0}(\lambda) = \mathbb{P}(\mathcal{F}_{\lambda}(X_{i}) = -1 \,\vert\, Y_{i} \neq -1)
\]
 et 
\[
    R_{1}(\lambda) = \mathbb{P}\left(\|\frac{Y_{i} - \mathcal{F}_{\lambda}(X_{i})}{Y_{i}}\| > \epsilon \,\vert\,\mathcal{F}_{\lambda}(X_{i}) \neq - 1\right),
\]

où $\|\cdot\|$ désigne la norme euclidienne.  $R_{0}$ correspond à la probabilité qu'une pulsation valide soit rejetée à une étape du pipeline d'analyse. $R_{1}$ correspond à la probabilité que l'erreur relative sur un P2/P1 ratio dépasse un seuil de tolérance $\epsilon$ défini par l'utilisateur, fixé ici à 10\%. Par construction de $R_{1}$, les cas où un ratio P2/P1 est affiché pour une pulsation invalide sont également considérés comme un dépassement du seuil de tolérance. L'objectif est d'assurer que $\mathbb{P}(R_{0} < \alpha_{0}) > 1 - \delta$ et que  $\mathbb{P}(R_{1} < \alpha_{1}) > 1 - \delta$. Pour ce faire, une recherche systématique est effectuée de façon à identifier un triplet $\lambda$ qui permette le rejet des deux hypothèses nulles suivantes : 
\[
\mathcal{H}_{\lambda}^{0} : R_{0}(\lambda) > \alpha_{0} \text{ and } \mathcal{H}_{\lambda}^{1} : R_{1}(\lambda) > \alpha_{1}.
\]

Sous $\mathcal{H}_{\lambda}^{0}$ et $\mathcal{H}_{\lambda}^{1}$, $R_{0}$ et $R_{1}$ peuvent être estimées au moyen d'un jeu de calibration de $n$ pulsations, parmi lesquelles le sous-ensemble $M$ des pulsations avec une ratio P2/P1 calculable (c'est-à-dire avec $Y \neq -1$):
\[
    \widehat{R}_{0, \text{null}}(\lambda) = \frac{1}{\vert M\vert}\sum_{X \in M}\mathbb{1}(\mathcal{F}_{\lambda}(X) = -1)
\]
et
\[
    \widehat{R}_{1, \text{null}}(\lambda) = \frac{1}{n}\sum_{i=1}^{n}\left[\mathbb{1}\left(\|\frac{Y_{i} - \mathcal{F}_{\lambda}(X_{i})}{Y_{i}}\|  > \epsilon\right) - \alpha_{1}\mathbb{1}(\mathcal{F}_{\lambda}(X_{i}) = -1)\right],
\]
où $\vert M\vert$ désigne le cardinal de l'ensemble $M$ et $\mathbb{1}(\cdot)$ la fonction indicatrice.

Ayant choisi un seuil de confiance $\delta$, il est possible de calculer les $p$-values $p_{\lambda}^{0}$ et $p_{\lambda}^{1}$, respectivement associées aux hypothèses $\mathcal{H}_{\lambda}^{0}$ and $\mathcal{H}_{\lambda}^{1}$. Pour contrôler les risques 
$R_{0}$ et $R_{1}$, un triplet
$\lambda$ doit satisfaire le critère $p_{\lambda} = \max(p_{\lambda}^{0}, p_{\lambda}^{1}) < \delta$. Les calculs des deux $p$-values sont effectués de deux manières différentes. En premier lieu, $R_{0}$ peut être modélisé comme la moyenne d'une séquences de variables de Bernoulli iid. Par conséquent, $p_{\lambda}^{0}$ peut être calculé sur le jeu de calibration tel que $p_{\lambda}^{0} = B(\widehat{R}_{0, \text{null}}(\lambda)$), où $B$ désigne la fonction de répartition d'une loi binomiale $\mathcal{B}(\vert M\vert, \alpha_{0}$). Dans un second temps, $p_{\lambda}^{1}$ doit être calculée en utilisant une borne plus conservative issue de l'inégalité de Hoeffding-Bentkus \cite{bates2021distribution} du fait de sa composante conditionnelle.

\subsubsection{Recherche de seuils valides}

En pratique, la recherche du triplet $\lambda$ est effectuée en se limitant au produit cartésien $\Lambda = [0,01, 0,02, ..., 0,99] \times [0.1, 0.2, ..., 3] ^{2}$, soit environ 80 000 hypothèses à tester au niveau de confiance $1-\delta$. Pour réduire le risque de rejeter une hypothèse nulle par erreur (c'est-à-dire d'accepter un triplet $\lambda$ par erreur), la théorie du \textit{Learn-then-Test} propose d'appliquer un algorithme de contrôle du taux d'erreur par famille (\textit{family-wise error rate}, FWER) pour réaliser le test d'hypothèses multiples. La procédure retenue ici est un test en séquence fixe (\textit{fixed-sequence testing})~\cite{bauer1991multiple}, qui consiste à tester successivement une série d'hypothèses nulles jusqu'à ce que l'une d'entre elles soit acceptée, c'est-à-dire jusqu'à obtenir une \textit{p}-value supérieur à $\delta$. L'ensemble $\Lambda^{*}$ des seuils associés à une hypothèse nulle rejetée est considéré comme valide pour atteindre le contrôle de risque souhaité. La procédure de test en séquence fixe est généralement conçue de manière à ce que les hypothèses nulles les plus improbables (c'est-à-dire les triplets les plus prometteurs) apparaissent en premier dans la séquence de test. Dans le cas de seuils tridimensionnels, concevoir une telle séquence n'est pas trivial. Dans le cas présent, l'ordre des hypothèses à tester est choisi par une procédure de division des séquences (\textit{split-sequence testing}~\cite{angelopoulos2025learn}. Cette méthode consiste à diviser aléatoirement l'ensemble de données de calibration en deux parties $c_1$ et $c_2$, de façon à identifier sur $c_1$ les triplets à tester en priorité sur $c_2$.

\subsection{Comparaison à une ligne de base}
Différentes versions du pipeline d'analyse décrit ci-dessus sont implémentées à des fins de comparaison. Dans chacune d'entre elles, les réseaux neuronaux récurrents sont remplacés par différents algorithmes d'apprentissage supervisé. Comme pour le pipeline original, deux modèles sont entraînés pour séparer les tâches de classification et de régression par quantile. Les algorithmes choisis sont les suivants: 
\begin{enumerate}

	\item K plus proches voisins (\textit{K-Nearest neighbors, KNN}) : soit \textit{p} une pulsation à analyser. Pour la classification et la régression, la réponse des KNN est estimée en interpolant les étiquettes des \textit{k} plus proches voisins de \textit{p}dans l'ensemble d'apprentissage. Son extension à la régression par quantile peut être réalisée facilement sans étape d'apprentissage spécifique.
	
	\item Extreme Gradient Boosting (XGB) : cet algorithme est une version régularisée de l'algorithme des \textit{gradient-boosted trees}~\cite{chen2016xgboost}. Au cours de l'étape d'apprentissage, une combinaison linéaire d'arbres de décision est construite itérativement pour minimiser une fonction de perte. Comme tout algorithme basé sur la descente de gradient, une régression par quantile peut être réalisée en utilisant une fonction de perte asymétrique pour l'apprentissage.

\item Forêts aléatoires (\textit{Random Forests}, RF): la fonction de décision repose sur une combinaison d'un grand nombre d'arbres de décision se concentrant chacun des caractéristiques choisies aléatoirement durant l'étape d'apprentissage. Comme les forêts aléatoires ne reposent pas sur une descente de gradient, les modifications nécessaires à la régression par quantiles sont effectuées au moment de l'évaluation~\cite{meinshausen2006quantile}.

\item Perceptron multi-couches (\textit{Multi-layer Perceptron, MLP}): il s'agit d'une architecture simple de modèle neuronal où plusieurs couches denses de neurones sont alignées linéairement. Un \textit{drop-out} de 10\% a également été appliqué juste avant la couche de sortie. Comme pour les réseaux récurrents, la régression par quantiles est effectuée en utilisant une fonction de perte L1 asymétrique lors de l'étape d'apprentissage.

\end{enumerate}
Pour chaque algorithme, les principaux paramètres sont choisis à l'issue d'une validation croisée à cinq pli, et décrits dans la table~\ref{hcl-tab:params}. Les paramètres non-mentionnés sont laissés par défaut.

\begin{table}[h!]
	\label{hcl-tab:params}
    \centering
    {
    \resizebox{1\textwidth}{!}{
    \begin{tabular}{|c||c|c|c|}
        \hline
        Algorithme & Classification & Régression & Implémentation \\
        \hline
        
        KNN & \makecell{voisins: 10, \\ pondération\\ par les distances: oui} & \makecell{voisins: 5, \\ pondération \\ par les distances: non} & \makecell{Scikit-learn 1.7.1, \\ sklearn-quantiles 0.1.1} \\
        
        
        \hline
        RF & \makecell{arbres: 50} & \makecell{arbres: 50} & \makecell{Scikit-learn 1.7.1, \\ sklearn-quantiles 0.1.1} \\
        \hline
        
        
        XGB & \makecell{profondeur max: 6, \\ L2-régularisation: 1.0} & \makecell{profondeur max: 6, \\ L2-régularisation: 0.0} & XGBoost 3.0.0\\
        \hline
        MLP & \makecell{neurones par couche: 16, \\ couches cachées: 7} & \makecell{neurones par couches: 16, \\ couches cachées: 3} & PyTorch 2.7.1\\
        \hline
    \end{tabular}
    }
    }
    \caption{Détails d'implémentation des algorithmes d'apprentissage supervisés utilisés dans les différentes versions du pipeline d'analyse}
\end{table}
\section{Résultats}
\subsection{Définition des seuils de rejet}
\subsubsection{Performances initiales sur le jeu de calibration}

Différents indicateurs de performance sont d'abord calculés indépendamment sur les deux parties du pipeline (c'est-à-dire la partie de classification des impulsions et la partie de détection des sous-crêtes) en utilisant l'ensemble de validation. L'objectif est de choisir
des niveaux de risque $\alpha_{0}$ et $\alpha_{1}$ appropriés pour l'étape de calibration. Les résultats obtenus avec le classifieur sur l'ensemble de validation (n = 2 862 impulsions) sont présentés comme une tâche de classification binaire. L'objectif étant d'évaluer l'identification des pulsations présentant un rapport P2/P1 calculable, les classes 1 (impulsions non-interprétables) et 2 (artefacts) ont donc été fusionnées. La courbe caractéristique de performance (\textit{receiver-operating characteristic}, ROC) est présentée dans la figure~\ref{FIG:5}A. En ce qui concerne les performances du détecteur, la distribution des erreurs relatives sur le ratio P2/P1 est présentée dans la figure~\ref{FIG:5}B.


\begin{figure}[h!]
  \centering
  \includegraphics[width=1\textwidth]{HCL/fig5.png}
  \caption{Performances brutes des deux modèles neuronaux sur le jeu de validation. A: Courbe ROC du classifieur. Les métriques sont calculés sur une tâche de classification binaire où les exemples positifs correspondent aux pulsations associées à un ratio P2/P1.  B: Distribution des erreurs relatives associées au P2/P1 calculés.}
  \label{FIG:5}
\end{figure}

Un premier seuil naïf pour le classificateur peut être choisi en maximisant la différence entre le taux de vrais positifs et le taux de faux positifs sur l'ensemble de données de validation. En utilisant la courbe ROC présentée ci-dessus, ce seuil a été fixé à 0.81. Sans critères supplémentaires sur \textit{w1} et \textit{w2}, le triplet correspondant est défini comme $\lambda_{init} = (0.81, 180, 180)$. $R_{0}(\lambda_{
init})$ et $R_{1}(\lambda_{init})$ sont respectivement estimés à 1.3\% et 16.6\%.

\subsubsection{Calcul des seuils}

Pour une distribution de données quelconque, il n'est en général pas possible de contrôler un risque à n'importe quel niveau $\alpha$. Par conséquent, la performance obtenue dans l'ensemble de données de validation est utilisée comme une aide pour choisir des niveaux réalistes de contrôle du risque. Les niveaux de tolérance sont donc choisis en arrondissant aux 5\% les plus proches les $\widehat{R}_{0}$ et $\widehat{R}_{1}$ estimés sur le jeu de validation. Ainsi, les seuils de tolérance $\alpha_{0}$ et $\alpha{1}$ sont respectivement fixés à 5\% et 15 \%. Une seconde calibration est également effectuée en utilisant les seuils moins restrictifs de $\alpha_{0}$ = 10\% et $\alpha_{1}$ = 20\%. Cette seconde calibration est un moyen de s'assurer qu'un contrôle des risques puisse être garanti pour chacun des modèles, mais également d'étudier l'impact du choix des seuils. Pour chaque calibration, le niveau de confiance 1-$\delta$ est fixé à 0.95. L'ensemble de calibration est séparé aléatoirement en deux parties égales $c_{1}$ et $c_{2}$. Une séquence de 200 hypothèses est construite à partir de $c_{1}$ de façon à effectuer un test en séquence fixe sur $c_{2}$. Parmi les triplets permettant de rejeter les deux hypothèses nulles, le seuil $\lambda$ utilisé par la suite correspond au triplet apparu le plus tardivement dans la séquence de test.

\subsection{Comparaison des modèles}
Différents indicateurs de performances sont calculés sur les deux ensembles de test. En plus des estimations des risques $R_{0}$ et $R_{1}$, (i) l'erreur moyenne absolue sur le ratio P2/P1 ($MAE_{P2/P1}$), (ii) la proportion de pulsations pour lesquelles le délai absolu de détection sur P1 excède 10 ms ($\Delta P1_{> 10 ms}$) et (iii) la proportions de pulsations pour lesquelles le délai absolu de détection sur P2 excède 10 ms ($\Delta P2_{> 10 ms}$) sont également calculés. Pour mesurer l'impact des pulsations synthétiques générées lors de la phase d'entraînement, un pipeline d'analyse à base de réseaux récurrents, noté $LSTM^{*}$, est entraîné sans données augmentées.

\subsubsection{Jeu de test public}
Comme présenté dans la table~\ref{hcl-tab:comparison_public}, les $\widehat{R_{0}}$ et $\widehat{R_{1}}$ naïfs sont très en-dessous des niveaux de tolérance pour la plupart des modèles. La calibration détériore légèrement les performances des modèles neuronaux (\textit{i.e.}, les pipelines MLP et LSTM) en augmentant la proportion $\widehat{R_{0}}$ sans réelle amélioration des autres indicateurs. En contrepartie, la calibration permet de stabiliser les frontières de décision des modèles à bases d'arbres de décision en abaissant les $\widehat{R_{0}}$ associés sous la barre des 1\%. Les seuils choisis naïvement pour les pipelines LSTM$^{*}$ et KNN sont clairement trop restrictifs avec des $\widehat{R_{0}}$ excédant 15\%. Il est intéressant de relever que les deux pipelines à base de réseaux récurrents ont à la fois la meilleure précision sur la détection de P1 ($\Delta P1_{> 10 ms} < 5$\%) et la pire sur P2 ($\Delta P2_{> 10 ms} > 14)$\%).


\begin{table}[h!]
    \centering
    \resizebox{1\textwidth}{!}{
    \begin{tabular}{|l|c||ccccc|}
    \hline
          &Calibration&  $\widehat{R_{0}}$ (\%)&  $\widehat{R_{1}}$ (\%)&  $\Delta P1_{>\text{10 ms}}$ (\%)&  $\Delta P2_{>\text{10 ms}}$ (\%)& $MAE_{P2/P1}$\\
          \hline
          &$C_{ROC}$&  39.20&  1.86&  5.77&  6.92& 0.015\\
          KNN&$C_{5-15}$&  0.32&  3.24&  9.62&  13.05& 0.024\\
          &$C_{10-20}$&  1.92&  2.98&  9.36&  12.59& 0.023\\
          \hline
          &$C_{ROC}$&  6.15&  2.99&  8.92&  11.11& 0.02\\
          RF&$C_{5-15}$&  0.72&  3.62&  9.76&  12.40& 0.023\\
          &$C_{10-20}$&  2.46&  2.85&  9.51&  11.53& 0.019\\
          \hline
          &$C_{ROC}$&  2.66&  3.01&  9.44&  11.61& 0.02\\
          XGB&$C_{5-15}$&  0.21&  3.44&  9.88&  12.27& 0.022\\
          &$C_{10-20}$&  0.91&  3.23&  9.79&  11.98& 0.021\\
          \hline
  &$C_{ROC}$& 0.97& 2.89& 9.40& 12.94&0.02\\
  MLP&$C_{5-15}$& 8.41& 2.93& 8.85& 12.04&0.020\\
  &$C_{10-20}$& 0.30& 2.99& 9.57& 13.06&0.021\\
  \hline
 & $C_{ROC}$& 0.36& 1.89& 3.70& 14.94&0.016\\
 LSTM& $C_{5-15}$& 3.52& 1.88& 3.71& 14.70&0.016\\
 & $C_{10-20}$& 7.38& 1.88& 3.71& 14.43&0.016\\
 \hline
 & $C_{ROC}$& 17.44& 4.86& 4.14& 18.90&0.043\\
 LSTM*& $C_{5-15}$& 7.11& 4.92& 4.64& 18.23&0.043\\
 & $C_{10-20}$& 9.83& 5.06& 4.72& 18.58&0.044\\
 \hline
    \end{tabular}
}
    \caption{Indicateurs de performances de modèles évalués sur le jeu de test public. $MAE_{P2/P1}$ --- Erreur moyenne absolue sur le ratio P2/P1. $\widehat{R_{0}}$ --- Proportion des pulsations avec un ratio P2/P1 calculable rejetées par ereur. $\widehat{R_{1}}$ --- Proportion des valeurs de ratio P2/P1 associées à une pulsation invalide ou à une erreur relative supérieure à 10\%. $\Delta P1_{>\text{10 ms}}$ --- Proportion des pulsations valides où l'erreur de détection excède 10 ms sur P1. $\Delta P2_{>\text{10 ms}}$ --- Proportion des pulsations valides où l'erreur de détection excède 10 ms sur P2. KNN --- K-Nearest Neighbors, RF --- Random Forests, XGB --- eXtreme Gradient Boosting, MLP --- MultiLayer Perceptron, LSTM --- Long Short-Term Memory, LSTM* --- pipeline d'analyse incluant des modèles de LSTM entraînés sans pulsations synthétiques. $C_{ROC}$ --- Calibration naïve, basée sur la courbe ROC. $C_{5-15}$ --- Calibration effectuée avec les seuils de tolérance $\alpha_{0} = 5\%$ et $\alpha_{1} = 15\%$. $C_{10-20}$ --- Calibration  effectuée avec les seuils de tolérance $\alpha_{0} = 10\%$ and $\alpha_{1} = 20\%$.}
    \label{hcl-tab:comparison_public}
\end{table}

 Une analyse plus fine peut être effectuée en groupant les métriques selon la classification de Wroclaw. Cette démarche permet d'identifier les pulsations posant le plus de difficultés d'analyses. Les erreurs détaillées sont présentées dans la table ~\ref{hcl-tab:public} pour comparer les performances du pipeline LSTM avant et après la calibration à $\alpha_{0} = 5\%$ et $\alpha_{1} = 15\%$. Cette étape impacte particulièrement la frontière de décision dans le cas des pulsations de classe "T1" et "A+E", pour lesquels les faux rejets sont plus fréquents. En particulier, le $\widehat{R_{0}}$ estimé pour la classe "A+E" passe de 8.17\% à 17.98\%.

\begin{table}[h!]
    \centering
    \resizebox{\textwidth}{!}{
    \begin{tabular}{|c||ccccc|ccccc|}
\hline
 &\multicolumn{5}{c|}{Naive thresholds ($C_{ROC}$)}& \multicolumn{5}{c|}{Calibrated thresholds ($C_{5-15}$)}\\
    \hline
         Classe& $\widehat{R}_{0}$(\%)& $\widehat{R}_{1}$(\%)&  $\Delta P1_{>\text{10 ms}}$&  $\Delta P2_{>\text{10 ms}}$& MAE\textsubscript{P2/P1}& $\widehat{R}_{0}$(\%)& $\widehat{R}_{1}$(\%)&$\Delta P1_{>\text{10 ms}}$&  $\Delta P2_{>\text{10 ms}}$&MAE\textsubscript{P2/P1}\\
         \hline
         
         T1
&  0.34&  2.36&  0.41&  14.11& 0.010& 9.96& 2.24 & 0.37 & 15.17 & 0.010
\\
         T2
&  0.03&  0.60&  3.46& 13.84& 0.008& 2.65 & 0.58 & 3.43 & 13.33 & 0.008
\\
         T3
&  0.11&  0.71&  1.99&  10.76& 0.014& 0.71 & 0.72& 2.01 & 10.46 & 0.013
\\
         T4
&  

0.0&  18.09&  21.98&  34.05& 0.013& 0.00 & 18.09 & 21.98 & 34.05 & 0.134
\\
         A+E
&  8.17&  7.72&  8.90&  43.92& 0.029& 17.98 & 8.64 & 8.31 & 45.18 & 0.029
\\
         \hline
         all&  

0.36 & 1.89 & 3.70 & 14.94 & 0.016 &3.52 &1.88 & 3.71 & 14.70& 0.016\\
         \hline
    \end{tabular}
    }
     \caption{Indicateurs de performances du pipeline LSTM évalué sur le jeu de test public avant et après calibration. $MAE_{P2/P1}$ --- Erreur moyenne absolue sur le ratio P2/P1. $\widehat{R_{0}}$ --- Proportion des pulsations avec un ratio P2/P1 calculable rejetées par ereur. $\widehat{R_{1}}$ --- Proportion des valeurs de ratio P2/P1 associées à une pulsation invalide ou à une erreur relative supérieure à 10\%. $\Delta P1_{>\text{10 ms}}$ --- Proportion des pulsations valides où l'erreur de détection excède 10 ms sur P1. $\Delta P2_{>\text{10 ms}}$ --- Proportion des pulsations valides où l'erreur de détection excède 10 ms sur P2.     $C_{ROC}$ --- Calibration naïve, basée sur la courbe ROC. $C_{5-15}$ --- Calibration effectuée pour les seuils de tolérance $\alpha_{0} = 5\%$ et $\alpha_{1} = 15\%$.}
 
    \label{hcl-tab:public}
\end{table}

\subsubsection{Jeu de test privé}
Pour valider l'accord inter-annotateur, quatre segments de PIC représentant 514 pulsations ont été indépendamment labellisés par trois annotateurs (VG, GP, AK). La classification a été unanime dans 94.9\% des cas. Pour 481 pulsations (91.9\%) au moins deux annotateurs ont attribué un ratio P2/P1. la différence moyenne absolue entre les P2/P1 ratios était de 0.02 (écart type = 0.07). Pour ce jeu de test, il apparaît clairement, dans la plupart des cas, que le contrôle des risques n'a pas pu être obtenu pour les tolérances $\alpha_{0} = 5\%$ et $\alpha_{1} = 15\%$ (voir table~\ref{hcl-tab:comparison_custom}). 

\begin{table}[h!]
    \centering
    \resizebox{1\textwidth}{!}{
    \begin{tabular}{|l|c||ccccc|}
    \hline
          &Calibration&  $\widehat{R_{0}}$ (\%)&  $\widehat{R_{1}}$ (\%)&  $\Delta P1_{>\text{10 ms}}$ (\%)&  $\Delta P2_{>\text{10 ms}}$ (\%)& $MAE_{P2/P1}$\\
          \hline
          &$C_{ROC}$&  55.31&  9.18&  17.43&  21.38& 0.042\\
          KNN&$C_{5-15}$&  0.93&  19.89&  20.44&  26.91& 0.087\\
          &$C_{10-20}$&  3.90&  18.59&  20.22&  26.28& 0.085\\
          \hline
          &$C_{ROC}$&  19.37&  14.08&  19.72&  27.960& 0.061\\
          RF&$C_{5-15}$&  1.62&  20.51&  21.01&  30.24& 0.085\\
          &$C_{10-20}$&  4.44&  18.83&  20.33&  29.04& 0.079\\
          \hline
          &$C_{ROC}$&  5.57&  19.21&  21.81&  30.64& 0.094\\
          XGB&$C_{5-15}$&  0.38&  22.33&  22.50&  31.52& 0.101\\
          &$C_{10-20}$&  1.93&  21.26&  22.20&  31.06& 0.100\\
          \hline
  &$C_{ROC}$& 6.28& 17.02& 20.48& 25.61&0.076\\
  MLP&$C_{5-15}$& 10.73& 15.38& 20.12& 24.49&0.067\\
  &$C_{10-20}$& 0.90& 20.43& 21.09& 26.97&0.088\\
  \hline
 & $C_{ROC}$& 1.68& 14.51& 7.32& 14.39&0.063
\\
 LSTM& $C_{5-15}$& 4.94& 13.52& 6.74& 13.87&0.061\\
 & $C_{10-20}$& 10.68& 12.85& 6.60& 12.900&0.060\\
 \hline
 & $C_{ROC}$& 7.94& 17.23& 9.49& 15.09&0.081\\
 LSTM*& $C_{5-15}$& 4.67& 17.96& 9.77& 15.53&0.09\\
 & $C_{10-20}$& 5.37& 17.73& 9.59& 15.35&0.088\\
 \hline
    \end{tabular}
}
 \caption{Indicateurs de performances de modèles évalués sur le jeu de test privé. $MAE_{P2/P1}$ --- Erreur moyenne absolue sur le ratio P2/P1. $\widehat{R_{0}}$ --- Proportion des pulsations avec un ratio P2/P1 calculable rejetées par ereur. $\widehat{R_{1}}$ --- Proportion des valeurs de ratio P2/P1 associées à une pulsation invalide ou à une erreur relative supérieure à 10\%. $\Delta P1_{>\text{10 ms}}$ --- Proportion des pulsations valides où l'erreur de détection excède 10 ms sur P1. $\Delta P2_{>\text{10 ms}}$ --- Proportion des pulsations valides où l'erreur de détection excède 10 ms sur P2. KNN --- K-Nearest Neighbors, RF --- Random Forests, XGB --- eXtreme Gradient Boosting, MLP --- MultiLayer Perceptron, LSTM --- Long Short-Term Memory, LSTM* --- pipeline d'analyse incluant des modèles de LSTM entraînés sans pulsations synthétiques. $C_{ROC}$ --- Calibration naïve, basée sur la courbe ROC. $C_{5-15}$ --- Calibration effectuée avec les seuils de tolérance $\alpha_{0} = 5\%$ et $\alpha_{1} = 15\%$. $C_{10-20}$ --- Calibration  effectuée avec les seuils de tolérance $\alpha_{0} = 10\%$ and $\alpha_{1} = 20\%$.}
    \label{hcl-tab:comparison_custom}
\end{table}


À l'exception du LSTM, tous les pipelines ont dépassé les seuils choisis pour $R_{0}$ et $R_{1}$. Cependant, la procédure de calibration a permis d'homogénéiser les performances des différentes pipelines, en particulier dans les cas des pipelines KNN et RF pour lesquels les seuils naïfs basés sur la courbe ROC sont associés à un taux de faux négatifs élevé (respectivement, 55.31\% et 19.37\%). Comme pour le jeu de test public, les différentes métriques groupées par classes de pulsations sont présentées dans la table~\ref{hcl-tab:custom}. Dans le cas de cette cohorte, l'étape de calibration a également un coût sur le taux de rejets erronés (le $R_{0}$ passe de 1.68\% à 4.94\%) mais améliore cette fois les autres métriques. Comme dans le jeu de test public, la classe "A+E" est la plus impactée avec un $R_{0}$ passant de 23.11\% à 34.75\%. Pour les autres formes de pulsations, la calibration a un effet homogène, augmentant la précision de la détection des pics au prix d'un $R_{0}$ légèrement plus élevé.

\begin{table}[h!]
    \centering
    \resizebox{\textwidth}{!}{
    \begin{tabular}{|c||ccccc|ccccc|}
\hline
 &\multicolumn{5}{c|}{Naive thresholds ($C_{ROC}$)}& \multicolumn{5}{c|}{Calibrated thresholds ($C_{5-15}$)}\\
    \hline
         Shape& $\widehat{R}_{0}$(\%)& $\widehat{R}_{1}$(\%)&  $\Delta P1_{>\text{10 ms}}$&  $\Delta P2_{>\text{10 ms}}$& MAE\textsubscript{P2/P1}& $\widehat{R}_{0}$(\%)& $\widehat{R}_{1}$(\%)&$\Delta P1_{>\text{10 ms}}$&  $\Delta P2_{>\text{10 ms}}$&MAE\textsubscript{P2/P1}\\
         \hline
         
         T1
&  0.54 & 18.48 & 2.42 & 28.17 & 0.037 & 4.76 & 18.16 & 2.08 & 28.02 & 0.034
\\
         T2
&  0.71 & 9.42 & 7.29 & 13.93 & 0.031 & 4.51 & 8.74 & 6.54 & 13.22 & 0.028
\\
         T3
&  0.43 & 3.98 & 4.04 & 5.77 & 0.028 & 2.25 & 3.16 & 3.60 & 5.61 & 0.026
\\
         T4
&  

0.54 & 35.20 & 20.16 & 18.44 & 0.25 & 2.49 & 34.96 & 20.16 & 18.17 & 0.253
\\
         A+E
&  23.11 & 43.04 & 23.32 & 30.77 & 0.18 & 34.75 & 40.64 & 20.96 & 28.89 & 0.167
\\
         \hline
         all&  

1.68 & 14.51 & 7.32 & 14.39 & 0.063 &4.94 & 13.52 & 6.74 & 13.87 & 0.061\\
         \hline
    \end{tabular}
    }
	\caption{Indicateurs de performances du pipeline LSTM évalué sur le jeu de privé public avant et après calibration. $MAE_{P2/P1}$ --- Erreur moyenne absolue sur le ratio P2/P1. $\widehat{R_{0}}$ --- Proportion des pulsations avec un ratio P2/P1 calculable rejetées par ereur. $\widehat{R_{1}}$ --- Proportion des valeurs de ratio P2/P1 associées à une pulsation invalide ou à une erreur relative supérieure à 10\%. $\Delta P1_{>\text{10 ms}}$ --- Proportion des pulsations valides où l'erreur de détection excède 10 ms sur P1. $\Delta P2_{>\text{10 ms}}$ --- Proportion des pulsations valides où l'erreur de détection excède 10 ms sur P2.     $C_{ROC}$ --- Calibration naïve, basée sur la courbe ROC. $C_{5-15}$ --- Calibration effectuée pour les seuils de tolérance $\alpha_{0} = 5\%$ et $\alpha_{1} = 15\%$.}
    \label{hcl-tab:custom}
\end{table}

\subsection{Visualisation du processus de décision}
La méthode des gradients intégrés (\textit{integrated gradients}, ~\cite{sundararajan2017axiomatic}) est utilisée pour visualiser les processus de décision des modèles neuronaux. Cette technique vise à identifier les composantes du vecteur d'entrée ayant le plus d'influence sur le vecteur de sortie. Pour ce faire, une droite $d$ est calculée dans l'espace $[0, 1]^{180}$ entre une pulsation $x$ et une ligne de base $x'$, ici le vecteur nul. Pour chaque dimension, les gradients de la fonction de décision F sont intégrés le long de la droite $d$ tel que : 
\[
	IG_{i}(x) = (x_i - x'_i) \times \int_{\alpha=0}^{1} \frac{\partial F(x' + \alpha \times (x - x'))}{\partial x_i} \, d\alpha
\]
où $x_{i}$ représente la $i$-ème dimension de la pulsation $x$. Dans notre cas, l'intégration est effectuée indépendamment selon chacune des dimensions des sorties. La figure~\ref{FIG:6} présente les intégrations des gradients pour la probabilité $\hat{\bar{f}}(x)$ que la pulsation $x$ a un ratio P2/P1 ratio calculable, et pour les bornes inférieures $\hat{l}p1(x)$ et $\hat{l}p2(x)$ des positions respectives de P1 et P2. Les intégrations des gradients sont calculées sur six pulsations différentes issues du jeu de test privé. Cinq d'entre elles minimisent la distance euclidienne par rapport à la pulsation médiane de leur classes respectives. La dernière minimise la distance euclidienne par rapport à la pulsation médiane de l'ensemble des données. Comme attendu, les résultats du modèle sont principalement influencés par la morphologie de la première moitié de la pulsation, où P1 et P2 apparaissent généralement. Toutefois, des oscillations prononcées dans le dernier quart de la pulsation peuvent faire basculer la prédiction du classificateur vers la classe des artefacts, comme observé dans le cas de l'échantillon A+E. Il est intéressant de noter que les zones situées à proximité des véritables P1 et P2 influencent les détections des deux pics, parfois avec des gradients opposés, comme dans les exemples "T1", "T2" et "T3". Cela suggère que le détecteur apprend une représentation commune de l'impulsion avec des zones d'intérêt identifiées par la suite ensuite comme P1 et P2 en fonction du contexte.

\begin{figure}[h!]
  \centering
  \includegraphics[width=1\linewidth]{HCL/fig6.png}
  \caption{Visualisation des gradients intégrés sur six pulsations issues du jeu de test. Chacune des pulsations minimise la distance euclidienne à la pulsation médiane de la classification de Wroclaw indiquée. $\widehat{l}{p1}$ --- borne inférieure estimée de la position de P1.  $\widehat{l}{p2}$ --- borne inférieure estimée de la position de P2.  $\widehat{\overline{f}}$ --- Probabilité estimée que la pulsation est associée à un ratio P2/P1.}
  \label{FIG:6}
\end{figure}

\subsection{Monitorage continu du ratio P2/P1}

Pour produire des exemples de monitorage continu de P2/P1 avec les modèles entraînés, ICP-SWAn a été exécuté rétrospectivement sur les deux premiers jours d'enregistrement de la PIC dans la cohorte de test. La cohorte d'entraînement a été laissée de côté pour deux raisons : (i) environ la moitié des enregistrements ne durent que quelques heures, (ii) la proportion de valeurs manquantes pourrait être sous-estimée sur les signaux  utilisés pour entraîner les modèles. Parallèlement au ratio P2/P1, l'amplitude de la composante cardiaque du signal de PIC (AMP) et le PSI ont également été calculés. Par soucis d'homogénéité, les trois indices ont été lissés par une fenêtre glissante de 5 minutes actualisées toues les dix secondes. Pour chaque fenêtre, la valeur moyenne n'est calculée que si elle contient moins de 50\% de valeurs manquantes. Un exemple de ce type de suivi rétrospectif est présenté dans la figure~\ref{FIG:7}.

\begin{figure}[h!]
  \centering
  \includegraphics[width=1\linewidth]{HCL/fig7.png}
  \caption{Exemple d'une monitorage rétrospectif de deux jours pour différents indicateurs de compliance cérébrale.}
  \label{FIG:7}
\end{figure} 

En pratique, le monitorage du ratio P2/P1 peut être discontinu si trop de pulsations sont rejetées. Comme présenté dans la figure~\ref{FIG:8}A, la proportion de temps passé sans valeur de P2/P1 varie grandement en fonction des patients. Parmi les 49 monitorages étudiés, la proportion de ratios P2/P1 manquants excède 10\% dans une dizaine de cas. Seulement un enregistrement particulièrement bruité contient plus de 50\% de valeurs manquantes. De manière intéressante, comme présenté dans la figure~\ref{FIG:8}B, l'AMP n'est que faiblement corrélée au PSI (0.15) et au ratio P2/P1 (0.22). Concernant la faisabilité d'un monitorage en temps réel au lit du patient, une version embarquée d'ICP-SWAn a été implémentée dans un microprocesseur i.MX6 de 600 MHz sans carte graphique. Le signal de PIC est analysé dans cette version par batches d'une minute. Le temps moyen d'analyse d'un batch est de 2.32 secondes. En comparaison, le temps d'analyse d'un batch d'une minute par un ordinateur de bureau équipé d'une carte graphique (voir les spécifications section~\ref{spec}), est de 0.028 secondes. Dans tous les cas, la complexité calculatoire du pipeline complet permet d'envisager un monitorage du ratio P2/P1 en temps réel.

\begin{figure}[h!]
  \centering
  \includegraphics[width=1\linewidth]{HCL/fig8.png}
  \caption{A: Taux de valeurs manquantes au sein des 49 enregistrements de deux jours. B: Carte de corrélation entre les indicateurs de compliance cérébrale et le taux de valeurs manquantes (NaN).}
  \label{FIG:8}
\end{figure}

\section{Discussion}

ICP-SWAn est un pipeline de détection automatisé des pics P1 et P2 ne nécessitant qu'un signal de PIC univarié en entrée. La méthode proposée repose sur une régression sélective permettant d'éliminer les prédictions identifiées comme incertaines de l'affichage final. L'objectif est d'éviter d'afficher des informations potentiellement erronées dans un environnement aussi saturé en information qu'une chambre de réanimation. En pratique, le pipeline est conçu pour isoler les pulsations individuelles du signal de PIC univarié et retourner un ratio P2/P1 quand la confiance dans la prédiction est estimée comme étant suffisante. Pour ce faire, une procédure de calibration est effectuée sur un jeu de pulsations dédié de façon à contrôler simultanément deux risques $R_{0}$ et $R_{1}$ avec un niveau de confiance de 95\%. $R_{0}$ correspond à la probabilité de rejeter une pulsation valide par erreur, tandis que $R_{1}$ correspond à la probabilité  de renvoyer un ratio P2/P1 avec une erreur relative supérieure à 10\%. Comme la procédure de calibration est indépendante du modèle utilisé (pourvu que celui-ci puisse effectuer une régression par quantile), différentes versions du pipeline ont été implémentées en remplaçant les modèles neuronaux récurrents par quatre autres algorithmes d'apprentissage supervisé.
 
\par Sur le jeu de test public, l'étape de calibration tend à homogénéiser les performances des différents pipelines, avec une erreur moyenne sur le ratio P2/P1 comprise entre 0.016 (LSTM) et 0.023 (KNN et RF). Dans le cas spécifique du pipeline basé sur un modèle neuronal récurrent, la procédure de calibration n'a que peu ou pas d'effets sur les performances de détection, mais a augmenté de 3.12\% le pourcentage d'impulsions exclues par erreur. Ces résultats peuvent s'expliquer par les valeurs de base de $R_{0}$ et $R_{1}$ déjà bien inférieures aux seuils de tolérance définis. En revanche, ces résultats mettent clairement en valeur les bénéfices de l'ajout de pulsations synthétiques sur les performances du pipeline LSTM. En particulier, le $R_{0}$ mesuré passe de 7.11\% à 3.52\%, et le $R_{1}$ de 4.92\% à 1.88\%.

\par Le jeu de données privé apparaît comparativement plus difficile à analyser. Dans ce contexte, les $R_{0}$ et $R_{1}$ estimés pour le pipeline LSTM s'élèvent respectivement à 4.92\% et 13.52\%, ce qui apparaît comme le meilleur compromis entre les deux risques parmi les différents pipelines. Rétrospectivement, les seuils de tolérance utilisés pour la première calibration, à savoir $\alpha_{0} = 5\%$ et $\alpha_{1} = 15\%$, apparaissent comme trop restrictifs pour l'ensemble des autres pipelines. Cependant, la seconde calibration, utilisant les seuils moins restrictifs de $\alpha_{0} = 5\%$ et $\alpha_{1} = 15\%$, a permis de mener à bien la procédure de test en séquence fixe et d'obtenir un contrôle des risques robuste pour tous les algorithmes. Dans l'ensemble, les erreurs sont principalement concentrées sur les pulsations de type T1, T4 et A+E. Le type T1 correspond aux pulsations associées à une compliance cérébrale élevée, où le pic P2 est souvent très peu prononcé. En comparaison, le type T4 se trouve à l'opposé du spectre avec des formes d'ondes triangulaires où P1 peut être difficile à localiser précisément. Enfin, les pulsations de type A+E sont proches de la limite de rejet et sont donc souvent difficiles à interpréter, y compris pour les annotateurs manuels. Pour les deux jeux de tests utilisés, le processus de calibration a d'abord augmenté la proportion de faux négatifs dans la classe A+E, mais a amélioré de manière homogène la plupart des autres indicateurs de performances dans toutes les autres classes de pulsations. En ce sens, la classification a principalement permis d'identifier quelques prédictions aberrantes, aux prix d'une prudence accrue dans le cas des pulsations proches de la frontière de décision humaine.

\par Des différences relativement importantes de MAE sur le ratio P2/P1 ont été observées sur les deux jeux de test : 0.016 pour le premier jeu de données public contre 0.061 pour le jeu de données privé. Dans les deux cas, les erreurs sont avant tout concentrées sur la classe T4 de pulsation. Comme décrit précédemment, pour ces valeurs de P2/P1 élevées (voir table~\ref{tab:psi-ratio}), le pic P1 peut être difficile à localiser, y compris pour un annotateur humain, alors même que le ratio P2/P1 est numériquement plus instable dans ce type de situation. Une solution pourrait être d'homogénéiser davantage les positions des P1 identifiés manuellement lors de la phase d'annotation, par exemple avec en utilisant un filtre passe-haut. Quoiqu'il en soit, dans un contexte clinique, une MAE de 0.25 (voir table \ref{hcl-tab:custom}) pour ces valeurs élevées reste acceptable, dans la mesure où ces valeurs reflètent de toute façon une compliance cérébrale dégradée.


\par De fait, le processus d'annotation s'est révélé être une difficulté majeure de cette étude. Si le repérage manuel des pics P1 et P2 s'avère plutôt aisé pour la plupart des enregistrements, il n'existe en revanche aucun moyen d'accéder à la biomécanique sous-jacente dans les cas difficiles à interpréter. Même si tous les annotateurs ont signalé leur difficulté à annoter certains signaux de PIC (10 sur 98 ont même été ré-annotés indépendamment par tous les annotateurs), le niveau de confiance humaine n'est pas évident à quantifier. Dans la pratique, ces cas difficiles ne sont pas répartis uniformément entre les enregistrements de PIC. Étant donné que les changements dans la morphologie de la forme d'onde de la PIC sont généralement lents et progressifs (à l'échelle des heures), les formes d'onde non-interprétables ont tendance à se produire dans un sous-ensemble limité de patients, mais pendant des périodes de temps significatives, rendant alors indisponible le monitorage du ratio P2/P1. 

\par La théorie du \textit{Learn-then-Test} apparaît alors comme un outil adapté pour rendre compte de cette incertitude dans un contexte de monitorage au lit du patient. Plus précisément, l'objectif est de trouver un compromis optimal entre le risque d'un ratio P2/P1 rarement disponible et le risque d'afficher des résultats inexacts. Dans le contexte de soins intensifs, il n'est toutefois pas absurde de considérer le premier écueil comme plus acceptable. De plus, le ratio P2/P1 étant en pratique moyenné à l'échelle de la minute, des faux négatifs ponctuels n'ont que peu d'impact sur l'information transmise au praticien. Dans le futur, les trois indicateurs de certitude choisis pourraient toutefois être affinés, par exemple en prenant en compte les résultats de méthodes d'explicabilité telles que l'intégration de gradients. La définition du risque $R_{1}$ peut également être débattue. Dans le cas présent, le choix d'utiliser l'erreur relative, et donc d'accorder plus de tolérance aux valeurs de ratio élevées, est guidé par l'interprétation clinique du ratio P2/P1 : en particulier, un ratio nettement supérieur à 1 est de toute façon le reflet d'une compliance cérébrale dégradée. De manière générale, la procédure de calibration est surtout intéressante dans un contexte de monitorage en temps réel, où les prédictions aberrantes ne peuvent pas être corrigées manuellement.

\par Concernant la pertinence clinique du ratio P2/P1, l'étude des monitorages continus montre que les indices purement morphologiques comme le ratio P2/P1 ou le PSI ne sont que faiblement corrélés à l'amplitude des pulsations en mmHg. Sur les quarante-neuf enregistrements de deux jours, la corrélation entre l'amplitude moyenne et le ratio moyen est seulement de 0.22, ce qui confirme que ces indices ne reflètent pas exactement les mêmes propriétés mécaniques du système cérébrospinal. En comparaison, le PSI moyen et le ratio moyen affichent une corrélation moyenne de 0.79. Cependant, comme décrit dans la figure 6, le signal de ratio P2/P1 peut proposer des variations plus fines et progressives du fait du spectre continu des valeurs possibles pour une pulsation individuelle.

\section{Conclusion}

Le pipeline d'analyse ICP-SWAn permet de monitorer en temps réel le ratio P2/P1 sur des signaux ICP univariés. Les détections incertaines sont identifiées statistiquement au moyen de trois indicateurs de qualité basés sur les sorties des modèles neuronaux. Les performances du pipeline ont été évaluées sur deux jeux de tests annotés par deux équipes indépendantes. Les erreurs de détection se produisent principalement pour des valeurs extrêmes de compliance cérébrale. Des études cliniques supplémentaires sont nécessaires pour évaluer la pertinence du ratio P2/P1 dans la prises en charge des diverses pathologies pour lesquelles un monitorage de la PIC est recommandé.

























