Mon collègue Jeremy Ash ( @JeremyAshJMP ) et je me rends compte que l’analyse des données spectroscopiques comporte de nombreuses nuances et pièges potentiels qui peuvent rendre l’analyse difficile et, au mieux, compliquée. Nous voulions donc écrire cette série de blogs pour décrire comment 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 , sur lequel vous pouvez en savoir plus 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 abordées dans cet article de blog. Il ne s'agit que d'un prototype et d'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 proche infrarouge de Martens et al. " Diffusion de la lumière et absorption de la lumière séparées par une correction multiplicative étendue du signal. Application à l'analyse par 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 le regroupement basé sur des proportions de constituants.
Importer des spectres
Lors de l'importation de spectres, le complément Spectral Tools suppose que chaque spectre se trouve dans un fichier distinct dans un seul répertoire. 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 certaines é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 Diviser dans le menu Tableaux de JMP.
Visualisation de données
Comme pour toute nouvelle donnée, une fois que vous l'avez introduite dans le logiciel d'analyse de votre choix, nous vous recommandons fortement de visualiser l'état des données et de comparer régulièrement avec ce premier aperçu une fois tout prétraitement effectué. 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 vers 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 qui nous intéresse, à savoir la teneur en gluten.
Figure 1. Spectra line plot in Graph Builder with spectra colored by gluten content.Figure 1. Spectra line plot in Graph Builder with spectra colored by gluten content.Figure 1. Spectra line plot in Graph Builder with spectra colored by gluten content.Figure 1. Spectra line plot in Graph Builder with spectra colored by gluten content.Figure 1. Tracé de lignes spectrales dans Graph Builder avec des spectres colorés en fonction de la teneur en gluten.
Pour zoomer 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 pré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 un nouveau tableau de données pour uniquement les données ROI, accédez au triangle rouge du filtre de données local et sélectionnez Afficher le sous-ensemble. De plus, pour afficher uniquement un sous-ensemble des spectres sur le graphique, sélectionnez les spectres dans le filtre de données local ID de spectre. Vous pouvez également utiliser les commandes d'animation pour parcourir un spectre à la fois.
Pour des sélections plus complexes 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 lorsque vous comparez 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 JMP16 dans Graph Builder, le lissage Savitzky-Golay (SG) peut être appliqué comme étape de prétraitement initiale (Figure 2). Une fois que vous avez sélectionné vos paramètres de réglage, vous pouvez générer 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. Savitzky-Golay smoothed spectra in Graph Builder.Figure 2. Savitzky-Golay smoothed spectra in Graph Builder.Figure 2. Savitzky-Golay smoothed spectra in Graph Builder.Figure 2. Spectres lissés par Savitzky-Golay dans Graph Builder.
Dans Graph Builder, il existe d'autres méthodes de lissage, telles que le lissage des splines et le LOESS, que vous souhaiterez peut-être également essayer. Il existe également des fonctions de poids alternatives dans le menu du triangle rouge plus fluide. Beaucoup de ces options ont été récemment ajoutées 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 sur toutes les longueurs d'onde 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 de véritables effets chimiques.
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. 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. 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. 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.(En 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 sur d'autres plates-formes nécessitant 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 évidence les lignes correspondantes sur d'autres plates-formes :
Figure 4. Graph Builder parallel plot of spectra colored by gluten content.Figure 4. Graph Builder parallel plot of spectra colored by gluten content.Figure 4. Graph Builder parallel plot of spectra colored by gluten content.Figure 4. Graph Builder parallel plot of spectra colored by gluten content.Graphique 4. Tracé parallèle 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 de correction de diffusion standard à variable normale (SNV) peut « nettoyer » vos données, les rendant plus facilement interprétables et vous permettant finalement de créer des modèles prédictifs plus fiables. .
Pour la première étape, nous supprimerons les changements 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 correspond à l'ordre d'ajustement polynomial, 2 - 8) est définie, 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, puisque 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 requis. La figure 5 montre les graphiques de sortie.
Figure 5. (Top) Savitzky-Golay smoother, (Middle) first derivative filter, (Bottom) second derivative filter.Figure 5. (Top) Savitzky-Golay smoother, (Middle) first derivative filter, (Bottom) second derivative filter.Figure 5. (Top) Savitzky-Golay smoother, (Middle) first derivative filter, (Bottom) second derivative filter.Figure 5. (Top) Savitzky-Golay smoother, (Middle) first derivative filter, (Bottom) second derivative filter.Figure 5. (en haut) lisseur Savitzky-Golay, (au milieu) filtre dérivé premier, (en 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 vers la table de données d'origine pour un prétraitement ultérieur si vous le souhaitez. Dans ce cas, les données dérivées premières ont été sélectionnées et enregistrées dans la table de données d'origine.
Cela semble avoir effectivement supprimé les changements de base. Cependant, certains effets de diffusion subsistent dans le spectre. 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 de teneur en gluten vers 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 diffusion subsistent car la dérivée première a supprimé le décalage additif de la ligne de base, mais n'a pas supprimé l'effet de diffusion multiplicatif. Nous montrerons comment illustrer les effets de dispersion multiplicatifs avec un tracé d'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. Spectra line plots with spectra separated by gluten content. Variation due to scatter effects can be seen in these plots.Figure 6. Spectra line plots with spectra separated by gluten content. Variation due to scatter effects can be seen in these plots.Figure 6. Spectra line plots with spectra separated by gluten content. Variation due to scatter effects can be seen in these plots.Graphique 6. Graphiques de lignes spectrales avec des spectres séparés par la teneur en gluten.Des variations dues aux effets de dispersion peuvent être observées sur ces graphiques.
Pour supprimer l'effet de dispersion restant, nous effectuons une standardisation SNV. SNV exige que les données soient dans un format empilé. Nous créons une nouvelle colonne et ajoutons la formule présentée dans la figure 7.
Figure 7. Formula used to perform the SNV.Figure 7. Formula used to perform the SNV.Figure 7. Formula used to perform the SNV.Figure 7. Formula used to perform the SNV.Graphique 7. Formule utilisée pour effectuer la 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à permis d’obtenir des spectres beaucoup plus faciles à interpréter, les décalages de ligne de base et les effets de diffusion multiplicative étant supprimés. Dans leur article original, Martens et al. a démontré comment la correction multiplicative étendue du signal, plus avancée, peut encore améliorer ce flux de travail de prétraitement. Nous en parlerons dans le prochain article.
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. 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. 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. 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 telles que la correction de diffusion multiplicative et la soustraction de la ligne de base.
Nous dé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 régression généralisée, aux spectres après prétraitement.
Essayez certaines de ces approches et dites-nous comment elles fonctionnent avec vos données !