gitee
github
近红外光谱(NIRS)数据的半自动预处理Python模块。
一. nippy
1.1. 简介
- nippy是一个Python(3.6+)模块,用于快速探索不同的NIRS预处理方法。
- nippy收集和包装了最常见的预处理方法,并提供了用于快速构建具有可选预处理组合的预处理管道的工具。
- 本模块的目的是使用户能够快速测试多种交替预处理技术,并测试这些技术如何影响NIRS模型的性能。
1.2. 使用方法
nippy分析的典型结构如下:
- (1) 通过生成INI格式的配置文件,指定要尝试的方法和相关参数。(有关编写配置文件的详细文档,请查看CONFIGURATION.md).
- 例如,将nippy配置为在三个不同的滤波器长度(7、11和31)下测试二阶导数Savitzky-Golay滤波(具有三阶多项式拟合),可以通过向配置文件添加以下部分来完成。
[SAVGOL]
filter_win = 7, 11, 31
poly_order = 3
deriv_order = 2
also_skip = True
- (2) 将NIR数据加载到numpy矩阵(行波长、列样本)。将波长加载到一个numpy向量中。
data = np.genfromtxt('nir_data.csv', delimiter=',')
wavelength = data[0, :]
spectra = data[1:, :].T # Rows = wavelength, Columns = samples
- (3) 导入nippy并使用nippy.read_configuration.
import nippy
pipelines = nippy.read_configuration('example_protocol.ini')
- (4) nippy生成所有可能的预处理排列的列表。将数据和管道列表传递给nippy函数。
datasets = nippy.nippy(wavelength, spectra, pipelines)
变量数据集现在包含已根据pipelines变量中列出的方法进行预处理的数据集列表。预处理的数据可以在Python中使用,也可以导出以在其他应用程序中使用。
1.3. 需求
- numpy (1.13.1+)
- scipy (0.19.1+)
- sklearn (0.19.2+)
1.4. 安装
pip install git+https://github.com/uef-bbc/nippy
1.5. 存储库内容
- nippy.py: 包含所有预处理操作
- handler.py: 用于生成和运行多个预处理管道的顶层脚本
1.6. 实例
- example.py: 用于执行多个预处理管道的示例脚本
- example.ini: nippy协议示例
- nir_data.csv: 用于演示的小型NIR数据集
二、nippy.py
2.1. 导入的模块
模块/函数 | 来源库 | 用途 |
---|---|---|
scipy.signal | scipy | 信号处理 |
scipy.io | scipy | 数据输入输出 |
scipy.ndimage | scipy | n维图像包 |
numpy | 矩阵运算 | |
sklearn.preprocessing.normalize | sklearn | 数据归一化处理 |
sklearn.preprocessing.scale | sklearn | 数据缩放处理 |
handler | nippy | 生成和运行多个预处理管道的顶层脚本 |
pickle | python | |
os | python |
2.2 类
2.2.1 Preprocessor
函数(方法) | 参数 | 输出 | 用途 |
---|---|---|---|
类的方法 | |||
__ init __ | self, wavelength, spectra, configuration_file | wavelength, spectra, configuration, current_pipe_idx | 构造方法 |
__ iter __ | self | self | 迭代 |
__ next __ | self | wavelength_, spectra_, self.configuration[this_idx] | 迭代处理 |
预处理方法 | |||
baseline | spectra:NIRS data matrix | spectra - np.mean(spectra, axis=0) | 用均值法,删除每个光谱的基线 |
snv | |||
rnv | |||
lsnv | |||
savgol | |||
trim | |||
resample | |||
norml | |||
detrend | |||
msc | |||
emsc | |||
clip | |||
smooth | |||
derivate | |||
工具方法 | |||
export_pipelines_to_csv | |||
export_pipelines_to_mat | |||
export_pipelines_to_pickle | |||
run_pipeline | |||
主方法 | |||
nippy |