跳转到主要内容

针对XANES数据的线性最小二乘拟合。

项目描述

MrFitty

MrFitty是一个开源的Python包,用于使用线性最小二乘法和最佳子集选择将XANES数据拟合到一组参考光谱,如Gareth James、Daniela Witten、Trevor Hastie和Robert Tibshirani在《统计学习导论及其在R语言中的应用》中所描述的那样。它可以在任何具有Python 3.8+解释器的系统上运行,包括Linux、OS X和Windows。

MrFitty的功能类似于由加州大学伯克利分校同步辐射光源的Matthew Marcus博士编写的LabView软件套件中的光谱拟合工具,可在以下链接中找到:这里

  • 免费软件:MIT许可

概述

XANES光谱拟合是线性最小二乘法的基本应用:给定未知样品的光谱和参考光谱库,找到最佳拟合未知光谱的参考组合。将每个单独的参考组拟合到未知光谱是简单的,但从所有拟合中选出最佳参考组合并不简单。

使用均方误差(SSR)或等效的均方误差(MSE)进行模型对比似乎是一种自然的选择。但这些选择忽略了n个组件模型的SSR相对于少于n个组件的任何模型所具有的纯粹数值优势。这种优势是使用相同数据同时进行模型拟合评估的结果。经典统计学提供了改进比较SSR及其类似方法的方法[2]。我反对这些方法的原因是它们在数据本身的解释上比较困难。

预测误差是解决模型对比问题的另一种方法,虽然计算成本较高,但更容易解释。如果将数据集分为两部分,一部分用于模型拟合,另一部分用于模型评估,就可以对不同模型进行简单对比。在这种情况下,模型拟合过程不会与模型评估过程相互作用。这是交叉验证以及类似方法的基础,包括MrFitty实现的方法。

将数据集分为两部分显然不足以进行稳健的“拟合优度”测量。在机器学习文献中,经常看到5折和10折交叉验证,这意味着数据集被分为5个或10个部分,每个部分都与剩余数据拟合的模型进行评估。MrFitty使用大量数据随机分区来生成稳健的“中值预测误差”以及中值预测误差的稳健置信区间。这个置信区间允许一个明确的准则来说明以下哪种情况:

  • 拟合A优于拟合B,或者
  • 拟合A不优于拟合B

通过询问中值预测误差的置信区间是否重叠。这个标准可以从数据本身直接解释,因为较弱的模型和较弱的数据可以预期给出比较强的模型和较强的数据更大的置信区间。

要求

MrFitty需要Python 3.8+。

安装

用户应考虑在Python虚拟环境中安装MrFitty。这并非必需,但它通过将系统Python与用户Python环境分离来简化包管理。在没有Python 3.8+的系统上,AnacondaMiniconda Python发行版是一个不错的选择。两者都可以在没有管理员权限的情况下安装,并支持虚拟环境。

方法1(不推荐!)

如果可用标准Python 3.8+发行版,则可以使用pip安装MrFitty

$ pip install git+https://github.com/jklynch/mr-fitty.git

方法2(推荐)

或者,可以使用以下命令在标准Python 3.8+发行版中虚拟环境中安装MrFitty

$ python3 -m venv mrf
$ source mrf/bin/activate
(mrf) $ pip install --upgrade pip 
(mrf) $ pip install mrfitty

方法3(推荐)

如果已安装Anaconda或Miniconda发行版,则可以使用以下命令在虚拟环境中安装MrFitty

$ conda create python=3.8 --name mrf
$ conda activate mrf
(mrf) $ pip install mrfitty

在任何情况下,pip都会自动安装所需包。

更新

使用以下pip更新MrFitty

(mrf) $ pip uninstall mrfitty
(mrf) $ pip install mrfitty

用法

MrFitty从命令行运行。--help选项将显示用法说明

$ mrfitty --help
Usage: mrfitty [OPTIONS] CONFIG_FP

Options:
  --help   Show this message and exit.

必需的CONFIG_FP参数指定用户编写的配置文件路径,例如

$ mrfitty ~/fit_arsenic_spectra.cfg

以下是一个使用现有PRM文件的配置文件示例

[fit]
minimum_component_count = 1
maximum_component_count = 3
fit_method = lsq
component_count_method = combination_fit

[references]
prm = reference/As_database_for_llsq_25_refs.prm

[data]
data/*.e

[output]
best_fit_files_dir = output
plots_pdf_dir = output
table_fp = output/fit_table.txt

[plots]
best_fits_plot_limit = 3

以下是一个指定参考文件和拟合参数的配置文件示例

[fit]
minimum_component_count = 1
maximum_component_count = 3
fit_method = lsq
component_count_method = combination_fit

[references]
reference/*.e

[data]
data/*.e

[output]
best_fit_files_dir = output
plots_pdf_dir = output
table_fp = output/fit_table.txt

[plots]
best_fits_plot_limit = 3

输入

除了配置文件外,还需要以下输入文件

  • 至少两个(但可能更多)归一化参考光谱文件

  • 一个或多个由参考文件拟合的归一化光谱文件

所有输入文件必须包含至少两列数据。一列是入射能量,另一列是归一化吸光度。以'#'开头的初始行将被忽略,除非最后一行,最后一行必须包含列标题。例如,以下由Athena编写的归一化文件可以作为mr-fitty的输入使用:

# Athena data file -- Athena version 0.8.056
# Saving OTT3_55_spot0 as normalized mu(E)
# .  Element=As   Edge=K
# Background parameters
# .  E0=11866.000  Eshift=0.000  Rbkg=1.000
# .  Standard=0: None
# .  Kweight=2.0  Edge step=0.004
# .  Fixed step=no    Flatten=yes
# .  Pre-edge range: [ -97.934 : -28.385 ]
# .  Pre-edge line: 0.0068524 + -5.1098e-007 * E
# .  Normalization range: [ 45.901 : 302.157 ]
# .  Post-edge polynomial: 0.011539 + -5.5019e-007 * E + 0 * E^2
# .  Spline range: [ 0.000 : 301.924 ]   Clamps: None/Strong
# Foreward FT parameters
# .  Kweight=0.5   Window=hanning   Phase correction=no
# .  k-range: [ 2.000 : 6.902 ]   dk=1.00
# Backward FT parameters
# .  R-range: [ 1.000 : 3.000 ]
# .  dR=0.00   Window=hanning
# Plotting parameters
# .  Multiplier=1   Y-offset=0.000
# .
#------------------------
#  energy norm bkg_norm der_norm
  11766.697      -0.80039166E-02  -0.80037989E-02   0.61484012E-03
  11771.697      -0.49320333E-02  -0.49319157E-02   0.12085377E-02
  11776.697       0.40723503E-02   0.40724678E-02   0.17648519E-04
  ...

输出

将生成几个输出文件

  • 包含每个拟合光谱图表的单个PDF

best 3-component fits

best 3-component fit

best 3-component fit reference clusters

  • 包含每个拟合光谱最佳拟合信息的单个文本格式表格

  • 每个拟合光谱一个文件,包含四列数据

    • 入射能量
    • 拟合归一化吸光度值
    • 拟合残差
    • 输入归一化吸光度

参考文献

[1] Gareth James, Daniela Witten, Trevor Hastie 和 Robert Tibshirani,统计学习引论:基于R的应用

[2] Calvin, Scott,XAFS for Everyone,2013,CRC Press

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

mrfitty-0.14.0.tar.gz (39.0 kB 查看哈希值)

上传 源代码

构建分发

mrfitty-0.14.0-py3-none-any.whl (39.7 kB 查看哈希值)

上传 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面