Mon collègue Jeremy Ash ( @JeremyAshJMP ) et je me rends compte que l'analyse des données spectroscopiques comporte de nombreuses nuances et des pièges potentiels qui peuvent rendre l'analyse difficile et au mieux désordonnée. Nous avons donc voulu écrire cette série de blogs pour décrire comment vous pouvez importer, visualiser, nettoyer et analyser des données spectroscopiques avec le logiciel JMP.
Pour vous permettre d'essayer plus facilement certaines de ces étapes sur vos propres données, nous avons créé le Complément Outils spectraux , que vous pouvez découvrir et télécharger ici dans la communauté JMP. Il s'agit d'un complément simple qui rationalise certaines des méthodes d'importation et de visualisation de données décrites dans cet article de blog. Ce n'est qu'un prototype et seulement une première étape vers la fourniture de fonctions pratiques pour les données spectrales. Vous pouvez nous faire part de vos commentaires dans les commentaires de cet article de blog ou sur la page du complément.
Dans cet article, nous analysons un ensemble de données dans le proche infrarouge de Martens et al. " Diffusion de la lumière et absorbance de la lumière séparées par une correction de signal multiplicative étendue. Application à l'analyse en transmission proche infrarouge de mélanges de poudres " Chimie analytique 1er février 2003;75(3):394-404. Nous montrerons comment le pré-traitement améliore la qualité globale des données et permet de voir, dans ce cas, beaucoup plus clairement un regroupement basé sur des proportions de constituants.
Importation de spectres
Lors de l'importation de spectres, le complément Spectral Tools suppose que chaque spectre se trouve dans un fichier séparé dans un répertoire unique. Les spectres peuvent être dans des fichiers texte délimités (.csv ou .tsv, par exemple) ou des fichiers JCAMP-DX. Seul JCAMP-DX sans compression est pris en charge. Le format empilé est le format de table de données par défaut dans Spectra Tools. Vous pouvez également importer des fichiers au format large. Dans cet article de blog, nous utilisons le plus souvent le format empilé, mais quelques-unes des étapes de prétraitement nécessitent le format large. Vous pouvez effectuer une conversion entre les formats empilés et larges à l'aide des commandes Empiler et Fractionner du menu Tableaux de JMP.
Visualisation de données
Comme pour toutes les nouvelles données, une fois que vous les avez importées dans le logiciel d'analyse de votre choix, nous vous recommandons fortement de visualiser l'état des données et de les comparer régulièrement à ce premier aperçu après tout prétraitement. Dans JMP , nous utilisons la plateforme Graph Builder pour faciliter la visualisation.
La figure 1 montre un tracé linéaire des spectres dans Graph Builder. Avec vos données au format empilé, faites glisser les variables X et Y sur leur axe respectif et utilisez l'ID de spectre comme variable de superposition. Vous pouvez également utiliser la commande Launch Graph Builder dans Spectra Tools. Pour la variable de couleur, nous utilisons la variable de réponse d'intérêt, qui est la teneur en gluten.
Figure 1. Spectra line plot in Graph Builder with spectra colored by gluten content.Figure 1. Diagramme de spectres dans Graph Builder avec des spectres colorés par la teneur en gluten.
Pour effectuer un zoom sur les régions d'intérêt (ROI), cliquez et faites glisser l'axe X. Vous pouvez créer un filtre de données local dans le menu du triangle rouge pour quelques autres contrôles utiles. Ceci est fourni par défaut dans Spectral Tools. Ceux-ci sont représentés à gauche de la figure 1. Le filtre de données locales de longueur d'onde peut être utilisé pour se concentrer sur une région d'intérêt (ROI). Pour créer une nouvelle table de données uniquement pour les données de retour sur investissement, accédez au triangle rouge du filtre de données locales et sélectionnez Afficher le sous-ensemble. De plus, pour n'afficher qu'un sous-ensemble des spectres sur le graphique, sélectionnez les spectres dans le filtre de données locales d'ID de spectres. Vous pouvez également utiliser les commandes d'animation pour faire défiler un spectre à la fois.
Pour des sélections plus compliquées comme plusieurs ROI, vous pouvez tracer les spectres sous forme de points et sélectionner les points d'intérêt. La commande Sous-ensemble du menu Tableau peut être utilisée pour créer un tableau de données avec uniquement les données ROI.
Une chose importante à retenir à propos de Graph Builder est qu'une fois que vous avez fini de configurer le graphique comme vous le souhaitez, vous pouvez enregistrer le script dans la table de données, afin que les mêmes tracés puissent être facilement recréés avec de nouvelles données. Par exemple, vous souhaiterez peut-être recréer votre graphique lors de la comparaison des spectres avant et après le prétraitement. Une autre option pour comparer les spectres avant et après le prétraitement consiste à utiliser la commande Launch Graph Builder dans Spectral Tools.
Aussi, nouveau dans JMP 16 dans Graph Builder, le lissage Savitzky-Golay (SG) peut être appliqué en tant qu'étape initiale de prétraitement (Figure 2). Une fois que vous avez sélectionné vos paramètres de réglage, vous pouvez sortir les données lissées. Accédez au triangle rouge plus lisse et sélectionnez Enregistrer la formule. Notez que cela nécessitera que votre longueur d'onde soit une variable continue (vous pouvez modifier le type de variable si vous en avez besoin en utilisant les propriétés de la colonne).
Figure 2. Savitzky-Golay smoothed spectra in Graph Builder.Figure 2. Spectres lissés de Savitzky-Golay dans Graph Builder.
Dans Graph Builder, il existe d'autres méthodes de lissage, telles que les splines de lissage et LOESS, que vous pouvez également essayer. Il existe également des fonctions de poids alternatives dans le menu plus fluide du triangle rouge. Bon nombre de ces options ont été ajoutées récemment dans JMP 16.
D'autres mesures récapitulatives qui quantifieront la qualité des spectres sont accessibles dans Graph Builder. Pour les créer, supprimez la variable de superposition afin que les spectres moyens soient affichés. Ensuite, la sélection des options de diagramme à barres et de diagramme en boîte générera les tracés de la figure 3. Une variation constante d'une longueur d'onde à l'autre indique souvent du bruit - et la nécessité d'un prétraitement supplémentaire - alors qu'une grande variation spécifique à certaines longueurs d'onde peut indiquer des effets chimiques réels.
Figure 3. Visualization of spectra variation in Graph Builder. (Top) Mean absorbance barplots at each wavelength with standard error. (Bottom) Absorbance boxplots at each wavelength.Figure 3. Visualisation de la variation des spectres dans Graph Builder.(Haut) Barplots d'absorbance moyenne à chaque longueur d'onde avec erreur standard. (En bas) Boîtes à moustaches d'absorbance à chaque longueur d'onde.
Un autre type de tracé utile si vos données sont au format large est le tracé parallèle (Figure 4). Ceci est particulièrement utile si vous analysez les spectres dans d'autres plates-formes qui nécessitent le format large telles que PCA, PLS ou d'autres plates-formes de modélisation prédictive. La sélection de spectres dans le tracé parallèle mettra en surbrillance les lignes correspondantes dans d'autres plates-formes :
Figure 4. Graph Builder parallel plot of spectra colored by gluten content.Figure 4. Tracé parallèle de Graph Builder des spectres colorés par la teneur en gluten.
Pré-traitement
L'un des principaux obstacles à l'analyse des données spectrales est la nécessité d'un prétraitement complexe des données. Nous montrerons comment l'utilisation d'un complément pour le filtrage dérivé de Savitsky-Golay et d'une formule pour la correction de dispersion de la variable normale standard (SNV) peut "nettoyer" vos données, les rendant plus facilement interprétables et vous permettant finalement de construire des modèles prédictifs plus fiables. .
Pour la première étape, nous supprimerons les décalages apparents de la ligne de base dans les spectres. Pour cela, nous utilisons un complément de filtrage de données SG développé par Ian Cox (voir le complément joint à cet article ci-dessous). Cela n'acceptera que les données dans un format large. Choisissez le complément "Filtrage des données" dans la liste des compléments installés dans JMP. Sélectionnez les colonnes à manipuler et sélectionnez OK. Trois graphiques de sortie apparaîtront pour examen.
L'interface utilisateur plus fluide de SG est l'endroit où l'ordre polynomial d'ajustement, 2 - 8) est défini, et la longueur des bords droit et gauche de la fenêtre de lissage est également définie. La modification de l'une de ces valeurs met automatiquement à jour les graphiques, car les dérivées sont effectuées sur les spectres lissés SG. Étant donné que les filtres dérivés amplifient le bruit, un certain degré de lissage est souvent nécessaire. La figure 5 montre les graphiques de sortie.
Figure 5. (Top) Savitzky-Golay smoother, (Middle) first derivative filter, (Bottom) second derivative filter.Figure 5. (Haut) Lisseur Savitzky-Golay, (Moyen) filtre dérivé premier, (Bas) filtre dérivé second.
Les données filtrées peuvent être enregistrées dans une nouvelle table de données, qui peut ensuite être retransférée dans la table de données d'origine pour un prétraitement supplémentaire si nécessaire. Dans ce cas, les premières données dérivées ont été sélectionnées et enregistrées dans la table de données d'origine.
Cela a semblé supprimer efficacement les décalages de la ligne de base. Cependant, il reste encore quelques effets de dispersion dans les spectres. Une façon de séparer visuellement les effets de dispersion et les effets chimiques consiste à utiliser une variable de regroupement dans Graph Builder. Déplacez la variable teneur en gluten sur l'un des axes du groupe. Graph Builder trouvera un regroupement judicieux et créera des panneaux séparés pour chaque groupe. Dans ces données, nous n'avons que 5 valeurs de teneur en gluten. Les effets de dispersion subsistent parce que la première dérivée a supprimé le décalage additif de la ligne de base, mais n'a pas supprimé l'effet de dispersion multiplicatif. Nous montrerons comment illustrer les effets de dispersion multiplicatifs avec un graphique des effets de dispersion dans le prochain article de blog.
Figure 6. Spectra line plots with spectra separated by gluten content. Variation due to scatter effects can be seen in these plots.Figure 6. Tracés de lignes spectrales avec des spectres séparés par la teneur en gluten.La variation due aux effets de dispersion peut être observée dans ces graphiques.
Pour supprimer l'effet de dispersion restant, nous effectuons une normalisation SNV. SNV exige que les données soient dans un format empilé. Nous créons une nouvelle colonne et ajoutons la formule illustrée à la figure 7.
Figure 7. Formula used to perform the SNV.Figure 7. Formule utilisée pour effectuer le SNV.
Les spectres bruts et les spectres finaux prétraités sont présentés à la figure 8. Pour lancer facilement un tracé comme celui-ci, utilisez la commande Launch Graph Builder dans Spectra Tools.
Ces étapes simples ont déjà abouti à des spectres beaucoup plus faciles à interpréter, avec des décalages de ligne de base et des effets de dispersion multiplicatifs supprimés. Dans leur article original, Martens et al. démontré comment la correction de signal multiplicative étendue plus avancée peut encore améliorer ce flux de travail de prétraitement. Nous couvrirons cela dans le prochain post.
Figure 8. Spectra before and after the pre-processing steps applied in this blog. (Top) Before pre-processing, (Middle) after Savitzky-Golay first derivative filter, (Bottom) after standard normal variate.Figure 8. Spectres avant et après les étapes de prétraitement appliquées dans ce blog. (En haut) Avant le prétraitement, (au milieu) après le filtre dérivé premier de Savitzky-Golay, (en bas) après la variable normale standard.
Les messages futurs
Nous prévoyons deux autres articles dans cette série. Le prochain montrera des méthodes de prétraitement plus avancées comme la correction de dispersion multiplicative et la soustraction de ligne de base.
Nous montrerons également comment la déformation temporelle dynamique dans Functional Data Explorer peut être utilisée pour aligner les chromatogrammes. Le dernier article appliquera certaines des méthodes de modélisation prédictive de JMP, telles que PCA, PLS et la régression généralisée, aux spectres après le prétraitement.
Essayez certaines de ces approches et dites-nous comment elles fonctionnent avec vos données !