• Aucun résultat trouvé

CHAPITRE 4. TRAITEMENT DES DONNEES

4.1 T RAITEMENT DES DONNEES SOUS M ATLAB

4.1.2 Description des scripts et des fonctions Matlab

4.1.2.5. Recherche des alcanes et calcul des indices de rétention linéaires

4.1.2.5.1. Indices de rétention linéaires en programmation de température : principe

Les variations de temps de rétention sont problématiques pour les recherches automatisées et peuvent conduire à une mauvaise identification si les fenêtres de recherches de pics sont trop étroites. Les causes peuvent être nombreuses : vieillissement de la colonne, maintenance sur l’appareil nécessitant de couper un bout de colonne, etc. Ceci est d’autant plus important que les chromatogrammes bidimensionnels sont complexes et présentent plusieurs centaines de pics. Si les temps de rétention ne correspondent pas, l’identification des composés peut se révéler encore plus ardue.

L’utilisation des indices de rétention linéaire ou LRI permet de réaliser un pseudo-recalage par rapport aux alcanes et donc de s’affranchir des variations de temps de rétention. Une valeur de LRI de 900 est attribuée au C9, de 1000 au C10 et ainsi de suite. Comme on peut le voir sur la figure 4-6, le composé cible (en vert) ne sort pas au même temps de rétention sur les deux chromatogrammes. En revanche, ce composé sort toujours de la même manière relativement aux alcanes : il aura donc le même LRI. En pratique, le calcul des coefficients de la régression linéaire entre les LRI et les temps de rétention des alcanes permet ensuite de calculer le LRI de chaque pic à partir de leur temps de rétention.

Figure 4-6 : Principe des LRI

4.1.2.5.2. Pointage des alcanes

La fonction cherche_alcanes a été développée afin de localiser 11 alcanes sur les chromatogrammes avec un contrôle de la part de l’utilisateur. Les alcanes du C9 au C18 et le C20 sont recherchés. Une attention particulière a été portée à la convivialité de l’interface. Le fichier « noms_alcanes.xlsx » contient 11 lignes et 4 colonnes. Chaque ligne correspond à un alcane différent et les colonnes donnent les informations suivantes : nom, LRI théorique, temps de rétention dans la 1ère dimension et temps de rétention dans la 2ème dimension. A partir de ces informations, les variables nomsalcanes et Alcanes_theoriques sont

152

créées. La première regroupe la liste de tous les alcanes recherchés tandis que la seconde est une matrice 11*5 comprenant pour chaque alcane recherché le LRI associé, et les valeurs théoriques des grandeurs de rétentions en temporel et en pixel dans les deux dimensions. Tout d’abord, une recherche est réalisée dans la librairie NIST pour récupérer les spectres de masse associés aux noms des alcanes recherchés. Pour chaque alcane, les pics détectés dans une fenêtre de taille D1*D2 centrée sur les valeurs théoriques (valeurs contenues dans le fichier noms_alcanes.xlsx) sont considérés. Un second filtre est appliqué prenant cette fois-ci en compte les spectres de masse des pics candidats : les coefficients de corrélation de ces derniers avec les spectres théoriques récupérés dans la librairie NIST doivent être supérieurs à un seuil prédéfini.

Un premier menu permet ensuite à l’utilisateur de choisir entre utiliser des valeurs de références des alcanes (soit des valeurs issues d’une carte de contrôle, soit des valeurs rentrées au préalable) ou bien réaliser un pointage manuel de chaque alcane. Pour le pointage manuel, une deuxième fonction Pointe_alcane sera appelée. Celle-ci permet à l’utilisateur de pointer manuellement les alcanes (cf. figure 4-7) et de vérifier la correspondance entre les spectres de masse avant attribution (cf. figure 4-8).

153

Figure 4-8 : Comparaison du spectre de masse pointé et du spectre de masse théorique

Une fois que l’ensemble des alcanes a été pointé, la régression t = g(LRI) est effectuée (cf. figure 4-9). Régression et tests statistiques sont réalisés sur t = g(LRI) et non pas sur LRI = f(t) car ils supposent les entrées certaines. Le coefficient de corrélation de Pearson est calculé et un test de comparaison à un modèle de degré supérieur est implémenté, pour vérifier si le modèle linéaire est suffisant. Nous avons choisi de comparer le modèle linéaire à un modèle quadratique. La p-valeur issue du test de Fisher est affichée sur la figure pour un contrôle de l’utilisateur avec la possibilité de repointer et/ou de supprimer les valeurs aberrantes. Les coefficients du modèle inverse seront par la suite utilisés pour estimer les LRI des pics détectés à partir de leurs temps de rétention.

154

Figure 4-9 : Régression t = f (LRI)

Remarque : pour éviter le pointage manuel des alcanes à chaque ouverture du logiciel, il est possible de rentrer manuellement les coefficients de la régression LRI = f (t) dans les colonnes 3 et 4 du classeur « liste_fichiers.xlsx ».

[sortie_alcanes] = cherche_alcanes_VC (num, Base, librairie, Alcanes_theoriques, nomsalcanes, D1, D2, seuil_MS, mz_min, mz_max, fe, TM)

Entrées :

 num : indice du fichier considéré  Base : base de données

 librairie : librairie NIST

 Alcanes_theoriques : matrice 11*5 comprenant pour chaque alcane recherché le LRI associé, et les valeurs théoriques des grandeurs de rétentions en temporel et en pixel dans les deux dimensions

 nomsalcanes : liste des alcanes recherchés, récupérée dans le classeur « noms_alcanes.xlsx »

 D1 : longueur (1ère dimension) de la fenêtre pour la recherche des alcanes (3 min ici)

 D2 : largeur (2ème dimension) de la fenêtre pour la recherche des alcanes (2s ici)

 seuil_MS : seuil de corrélation pour la comparaison des spectres de masse (0.9 ici)

 mz_min : borne minimale des canaux de masse enregistrés (m/z = 29)  mz_max : borne maximale des canaux de masse enregistrés (m/z = 250)  fe : fréquence d’acquisition

155

Sorties (regroupées dans un tableau de cellules sortie_alcanes) :

 sortie_alcanes{1} : matrice 11*5 comprenant pour chaque alcane recherché le LRI associé, les grandeurs de rétentions en temporel et en pixel dans les deux

dimensions

 sortie_alcanes{2} = coeff_LRI : coefficients de la régression linéaire LRI = f(t) Stockage dans la base de données :

 Base(num).PicsDET_alcanes = sortie_alcanes{1}  Base(num).coeff_LRI = sortie_alcanes{2} Base(num).PicsDET_LRI

Sous-fonctions :

1) Pointage des alcanes

Si le pointage manuel est choisi par l’utilisateur, la fonction Pointe_alcane est appelée pour chaque alcane de la liste du fichier « nom_alcanes.xlsx ». Cette fonction est une sous-fonction de cherche_alcanes et est appelée à plusieurs reprises au cours du programme. A chaque itération, seule la ligne « alc » de la matrice sortie est modifiée.

[sortie] = Pointe_alcane (alc, sortie, num, nomsalcanes, MS_alcanes, Base, Alcanes_theoriques, seuil_MS, mz_min, mz_max, fe, TM, dist, nb_pic_det)

Entrées :

 alc : numéro de l’alcane recherché (de 1 à 11)

 sortie : matrice 11*5 comprenant pour chaque alcane recherché le LRI

associé, et les valeurs théoriques des grandeurs de rétentions en temporel et en pixel dans les deux dimensions

 num : numéro du fichier considéré

 nomsalcanes : cellule contenant le nom des alcanes

 MS_alcanes : Spectres de masse associés aux alcanes recherchés  Base : base de données

 Alcanes_theoriques : matrices 11*5 comprenant pour chaque alcane recherché le LRI associé, et les valeurs théoriques des grandeurs de rétentions en temporel et en pixel dans les deux dimensions

 seuil_MS : seuil de corrélation pour la comparaison des spectres de masse  mz_min : borne minimale des canaux de masse enregistrés

 mz_max : borne maximale des canaux de masse enregistrés  fe : fréquence d’acquisition

156 Sortie :

 sortie : matrice 11*5 comprenant pour chaque alcane recherché le LRI

associé, et les valeurs théoriques des grandeurs de rétentions en temporel et en pixel dans les deux dimensions

2) Ajustement des vecteurs de masse

Les données brutes en sortie du spectromètre de masse sont difficilement exploitables en l’état. Afin de pouvoir les comparer, il est important que les vecteurs soient de même longueur et que les valeurs des canaux soient les mêmes. En effet, les valeurs stockées sont données avec plusieurs chiffres après la virgule et leur répartition n’est pas uniforme. La fonction ajustement_vecteurs_MS sera utilisée à de nombreuses reprises dans l’algorithme et va permettre de réajuster les valeurs des canaux à l’entier le plus proche, de rechercher les doublons et de supprimer les canaux de masse hors-gamme.

[MS_sortie] = ajustement_vecteurs_MS (MS_inter, mz_min, mz_max)

Entrées :

 MS_inter : données de MS brutes

 mz_min : borne minimale des canaux de masse enregistrés (m/z = 29 dans notre cas)

 mz_max : borne maximale des canaux de masse enregistrés (m/z = 250 dans notre cas)

Sortie :

 MS_sortie : matrice comprenant (mz_max - mz_min + 1) lignes et 2 colonnes. La première colonne contient la valeur du canal de MS et la seconde, l’intensité associée.

Documents relatifs