我的同事杰里米·阿什 ( @JeremyAshJMP ) 并且我意识到分析光谱数据有许多细微差别和潜在的陷阱,它们最多会使分析变得困难和混乱。 所以我们想写这个博客系列来描述如何使用 JMP 软件导入、可视化、清理和分析光谱数据。
为了让您更轻松地在自己的数据上尝试其中的一些步骤,我们创建了光谱工具插件,您可以在 JMP 社区了解更多信息并在此处下载。 这是一个简单的插件,可简化本博文中讨论的一些数据导入和可视化方法。 它只是一个原型,只是为光谱数据提供一些方便功能的第一步。 您可以在此博文的评论中或加载项页面上向我们提供反馈。
在这篇文章中,我们正在分析 Martens 等人的近红外数据集。 “通过扩展的乘法信号校正分离光散射和光吸收。 应用于粉末混合物的近红外透射分析“分析化学2003 年 2 月 1 日;75(3):394-404。 我们将展示预处理如何提高数据的整体质量,并让您在这种情况下更清楚地看到基于成分比例的分组。
导入光谱
导入光谱时,Spectral Tools 插件假定每个光谱都位于单个目录中的单独文件中。 光谱可以是带分隔符的文本文件(例如 .csv 或 .tsv)或 JCAMP-DX 文件。 仅支持未压缩的 JCAMP-DX。 堆叠格式是 Spectra Tools 中的默认数据表格式。 您还可以导入宽格式文件。 在这篇博文中,我们最常使用堆叠格式,但一些预处理步骤需要使用宽格式。 您可以使用 JMP 表格菜单中的堆叠和拆分命令在堆叠格式和宽格式之间进行转换。
数据可视化
与任何新数据一样,一旦您将其输入到您选择的分析软件中,我们强烈建议将数据状态可视化,并在完成任何预处理后定期与第一次查看进行比较。 在JMP ,我们使用 Graph Builder 平台来帮助可视化。
图 1 显示了 Graph Builder 中光谱的线图。 使用堆叠格式的数据,将 X 和 Y 变量拖到它们各自的轴上,并使用光谱 ID 作为叠加变量。 或者,您可以使用 Spectra Tools 中的 Launch Graph Builder 命令。 对于颜色变量,我们使用感兴趣的响应变量,即面筋含量。
Figure 1. Spectra line plot in Graph Builder with spectra colored by gluten content.图1。 Graph Builder 中的光谱线图,光谱按面筋含量着色。
要放大感兴趣区域 (ROI),请单击并拖动 X 轴。 您可以在红色小三角菜单中为其他一些有用的控件创建本地数据过滤器。 这是在 Spectral Tools 中默认提供的。 这些显示在图 1 的左侧。 波长局部数据滤波器可用于聚焦感兴趣区域 (ROI)。 要仅为 ROI 数据创建新数据表,请转到本地数据过滤器红色小三角并选择显示子集。 此外,要仅在图表上显示光谱的子集,请在光谱 ID 本地数据过滤器中选择光谱。 您还可以使用动画控件一次循环显示一个光谱。
对于多个 ROI 等更复杂的选择,您可以将光谱绘制为点并选择感兴趣的点。 Table 菜单中的 Subset 命令可用于创建仅包含 ROI 数据的数据表。
关于 Graph Builder 需要记住的一件重要事情是,一旦按照您想要的方式完成图形设置,您就可以将脚本保存到数据表中,这样就可以使用新数据轻松地重新创建相同的图。 例如,您可能希望在比较预处理前后的光谱时重新创建图表。 比较预处理前后光谱的另一个选项是使用光谱工具中的 Launch Graph Builder 命令。
此外,新的JMP 16在 Graph Builder 中,Savitzky-Golay (SG) 平滑可以用作初始预处理步骤(图 2)。 选择调整参数后,您可以输出平滑数据。 转到更平滑的红色三角形并选择保存公式。 请注意,这将要求您的波长是一个连续变量(如果您需要使用列属性,您可以修改变量类型)。
Figure 2. Savitzky-Golay smoothed spectra in Graph Builder.图 2。 Savitzky-Golay 在 Graph Builder 中平滑了光谱。
在 Graph Builder 中,还有其他平滑方法——例如平滑样条和 LOESS——您可能也想尝试一下。 更平滑的红色小三角菜单中还有其他权重函数。 其中许多选项是 JMP 16 中新添加的。
可以在图形生成器中访问将量化光谱质量的其他汇总措施。 要创建这些,请删除叠加变量,以便显示平均光谱。 然后,选择条形图和箱形图选项将生成图 3 中的图。 跨波长恒定的变化通常表示存在噪声——以及需要进一步预处理——而特定于特定波长的较大变化可能表示真正的化学效应。
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.图 3。 Graph Builder 中光谱变化的可视化。(上)每个波长的平均吸光度条形图和标准误差。 (底部)每个波长的吸光度箱线图。
如果您的数据是宽格式,另一种有用的图是平行图(图 4)。 如果您在其他需要宽格式的平台(例如 PCA、PLS 或其他预测建模平台)中分析光谱,这将特别有用。 在平行图中选择光谱将突出显示其他平台中的相应行:
Figure 4. Graph Builder parallel plot of spectra colored by gluten content.图 4。 Graph Builder 按面筋含量着色的光谱平行图。
预处理
分析光谱数据的主要障碍之一是需要进行复杂的数据预处理。 我们将展示如何使用 Savitsky-Golay 导数过滤插件和标准正态变量 (SNV) 散点校正公式来“清理”您的数据,使其更易于解释并最终让您构建更可靠的预测模型.
第一步,我们将消除光谱中明显的基线偏移。 为此,我们使用了 Ian Cox 开发的 SG 数据过滤插件(请参阅下面这篇文章所附的插件)。 这将只接受宽格式的数据。 从 JMP 中已安装的插件列表中选择“数据过滤”插件。 选择要操作的列并选择“确定”。 将弹出三个输出图以供查看。
SG 更平滑的用户界面是拟合多项式阶数的地方,2 – 8)被定义,并且平滑窗口的左右边缘的长度也被定义。 更改这些值中的任何一个都会自动更新图形,因为导数是在 SG 平滑光谱上执行的。 由于微分滤波器会放大噪声,因此通常需要一定程度的平滑处理。 图 5 显示了输出图。
Figure 5. (Top) Savitzky-Golay smoother, (Middle) first derivative filter, (Bottom) second derivative filter.图 5。 (上)Savitzky-Golay 平滑器,(中)一阶导数滤波器,(下)二阶导数滤波器。
过滤后的数据可以保存到新的数据表中,然后可以将其传输回原始数据表以根据需要进行进一步的预处理。 在这种情况下,选择一阶导数数据并将其保存回原始数据表。
这似乎有效地消除了基线偏移。 然而,光谱中仍然存在一些散射效应。 在视觉上区分散射效应和化学效应的一种方法是在图形生成器中使用分组变量。 将面筋含量变量移动到组轴之一。 Graph Builder 将找到一个合理的分箱并为每个分箱创建单独的面板。 在这些数据中,我们只有 5 个面筋含量值。 散射效应仍然存在,因为一阶导数移除了加性基线偏移,但没有移除乘性散射效应。 我们将在下一篇博文中展示如何使用散点图来说明乘法散点效应。
Figure 6. Spectra line plots with spectra separated by gluten content. Variation due to scatter effects can be seen in these plots.图 6。 光谱线图,光谱按面筋含量分隔。在这些图中可以看到由于散射效应引起的变化。
为了消除剩余的散射效应,我们执行 SNV 标准化。 SNV 要求数据采用堆叠格式。 我们创建一个新列并添加图 7 中所示的公式。
Figure 7. Formula used to perform the SNV.图 7。 用于执行 SNV 的公式。
原始光谱和最终预处理光谱如图 8 所示。 要轻松启动这样的绘图,请使用 Spectra Tools 中的 Launch Graph Builder 命令。
这些简单的步骤已经导致更容易解释光谱,消除了基线偏移和乘法散射效应。 在他们的原始论文中,Martens 等人。演示了更高级的扩展乘法信号校正如何进一步改进此预处理工作流程。 我们将在下一篇文章中介绍这一点。
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.图 8。 本博客中应用的预处理步骤之前和之后的光谱。 (上)预处理前,(中)Savitzky-Golay 一阶导数滤波器后,(下)标准正态变量后。
未来职位
我们计划在本系列中再发布两篇文章。 接下来将展示一些更高级的预处理方法,如乘法散点校正和基线减法。
我们还将演示如何使用 Functional Data Explorer 中的动态时间规整来对齐色谱图。 最后一篇文章将在预处理后将 JMP 中的一些预测建模方法(例如 PCA、PLS 和广义回归)应用于光谱。
尝试其中一些方法,让我们知道它们如何处理您的数据!
亲爱的比尔博士,
我想知道是否可以提供另一个关于如何构建完整的教程矩阵并继续进行预处理。 我打算重现相同的结果,并按照示例中的“加载项 > 数据过滤”步骤操作:“spectra_worflow”。 但我没有得到相同的结果。
带着敬意,
卢卡斯。
很好的建议,Worley 先生! 我刚刚关注了“表格 - 拆分”:
分割依据 - 波长
拆分列 - 吸光度
分组依据 - 光谱
结果真的很好! 多谢!
真挚地,
迈克尔
你好,迈克尔,
感谢您的客气话,听到您发现我们的博客很有用真是个好消息。
我很高兴向您展示如何将数据从堆叠格式转换为宽格式,但我想让您知道您可以在两种格式中进行所有相同的分析。
这完全取决于您如何为堆叠格式对数据进行分组。您可以对光谱名称使用“依据”函数,或者您可以使用新列公式中的列格式来“分组依据”。无论如何,只需点击几下鼠标,我们就可以让您到达您想去的地方。
我的电子邮件地址是bill.worley@jmp.com .给我发一封电子邮件,我们可以安排一些事情来讨论。
再次感谢你,
账单
很棒的教程! 我喜欢它并且已经使用了我的一系列 FTIR 光谱。 能否请您提供一些指南,说明如何将普通格式的表格转换为宽格式,因为我看到使用宽格式获得了最有效的结果。 谢谢!
迈克尔