第一章:光谱数据基础与Python环境准备
各位同学好,我是老张。在光谱分析这行摸爬滚打了十几年,今天咱们聊聊最基础的东西——光谱数据到底是什么,以及怎么把Python环境搭起来。别小看这一步,我见过太多人因为环境没配好,后面折腾半天。
1.1 光谱学基本概念
说白了,光谱就是光按波长分开后的强度分布图。你拿个棱镜对着太阳,看到的那道彩虹就是最原始的光谱。但在我们工程师眼里,光谱是三个核心参数的组合:波长、强度、信噪比。
波长(Wavelength)
波长决定了这是什么光。紫外光在200-400 nm,可见光在400-780 nm,近红外在780-2500 nm。我个人习惯用纳米(nm)做单位,但有些老仪器用微米(μm),换算时记得乘1000。我在项目中遇到过一台进口仪器,它输出的波长单位是波数(cm⁻¹),第一次用差点把数据搞反。
强度(Intensity)
强度就是光的强弱。可以是透射率、吸光度、反射率,也可以是原始的探测器计数。这里有个坑——不同仪器的强度单位不一样。有的用任意单位(a.u.),有的用百分比。你想想看,如果混着用,后面的分析全白搭。
信噪比(Signal-to-Noise Ratio, SNR)
信噪比是信号和噪声的比值。比值越高,数据越干净。我一般要求SNR至少大于10,低于这个数,峰都找不准。为什么会这样?因为噪声会把弱峰淹没掉。嗯,这里要注意:信噪比不是固定值,它和测量时间、光强、探测器性能都有关。
核心公式:SNR = 信号均值 / 噪声标准差
实际计算时,取一段无信号区域的强度值作为噪声,有信号区域的强度值作为信号。
1.2 常见光谱文件格式
光谱数据的文件格式五花八门。我刚开始做这行时,光格式转换就折腾了一周。下面这四种是最常见的:
| 格式 | 扩展名 | 特点 | 我的建议 |
|---|---|---|---|
| 纯文本 | .txt | 两列数据:波长、强度。简单直接 | 最通用,但缺元数据 |
| 逗号分隔 | .csv | 和txt类似,用逗号分隔 | Excel友好,推荐使用 |
| 光谱专用 | .spc | Thermo Galactic格式,含仪器参数 | 需要专用库读取 |
| JCAMP-DX | .jdx | 国际标准格式,含完整元数据 | 学术期刊常用 |
我曾经接手过一个项目,客户给了1000多个.spc文件。当时没有现成的解析库,我硬是用二进制读取写了个解析器。后来发现有个叫pySpecData的库能直接读,白费了两天功夫。所以,先查库,再动手。
小技巧:不确定文件格式时,用记事本打开看看。如果是乱码,多半是二进制格式(如.spc)。如果是数字和逗号,那就是文本格式。
1.3 Python科学计算环境搭建
Python做光谱分析,我推荐用Anaconda。为什么?因为它把Python、常用库、Jupyter Notebook打包在一起了。你想想看,如果一个个装,光依赖冲突就能让你崩溃。
安装Anaconda
去官网下载对应系统的安装包。安装时注意:勾选"Add Anaconda to PATH"。我见过有人没勾,后面命令行里找不到conda,又重装了一遍。
Jupyter Notebook
装完Anaconda,Jupyter Notebook就有了。在命令行输入jupyter notebook,浏览器会自动打开。我个人习惯用Jupyter做探索性分析,因为可以边写代码边看结果,还能加注释。
注意:Jupyter Notebook的默认工作目录在用户文件夹下。想改目录?在命令行先cd到目标目录,再启动jupyter。
1.4 必备库安装
光谱分析离不开这几个库。我列个清单,你照着装就行:
- numpy:数组运算。光谱数据本质就是数组,没有numpy寸步难行。
- scipy:科学计算。滤波、插值、拟合都靠它。
- matplotlib:画图。光谱图、峰标记、叠加对比,全靠它。
- pandas:数据处理。读csv、合并表格、数据清洗,效率很高。
- peakutils:找峰工具。虽然scipy也能找,但这个更专一。
安装命令很简单:
conda install numpy scipy matplotlib pandas
pip install peakutils
这里有个细节:peakutils不在conda默认源里,所以用pip装。我建议先装conda的四个库,再装pip的。顺序反了可能会出依赖问题。
验证安装:打开Python,依次import这些库。不报错就说明装好了。
import numpy as np
import scipy
import matplotlib.pyplot as plt
import pandas as pd
import peakutils
知识体系总览
下面这张图是我手绘的,把本章的知识结构串起来了。你保存下来,后面学起来会清晰很多。
这张图把本章内容分成了三大块:基本概念、文件格式、环境搭建。你顺着箭头看,就能明白它们之间的关系。说白了,概念是基础,格式是载体,环境是工具。三者缺一不可。
我的经验:刚开始学光谱分析,别急着跑复杂算法。先把环境搭好,把文件读进来,画个图看看。能正确画出光谱图,你就成功了一半。
好了,第一章就到这里。环境搭好了,下一章咱们就开始动手处理真实的光谱数据。到时候我会拿几个实际项目中的案例,带你们一步步走通整个流程。
公众号:蓝海资料掘金营,微信deep3321