Skip to main content

Python中的多元曲线分辨率

项目描述

pytest 编解码器 PyPI - Python 版本 PyPI 项目页面 蟒蛇云 NIST 公共领域

pyMCR:Python 中的多元曲线分辨率

可在https://pages.nist.gov/pyMCR在线获取文档

软件 DOI:https ://doi.org/10.18434/M32064

手稿 DOI:https ://doi.org/10.6028/jres.124.018

pyMCR 是一个用于执行多变量曲线解析的小包。目前,它实现了一个简单的交替回归方案(MCR-AR)。最常见的实现是使用普通的最小二乘回归 MCR-ALS。

在两个矩阵上具有非负约束的 MCR 与非负矩阵分解 (NMF) 相同。从历史上看,其他名称也用于 MCR:

  • 自建模混合分析 (SMMA)

  • 自建模曲线分辨率 (SMCR)

可用方法:

  • 回归器:

  • 约束

    • 非消极性

    • 正常化

    • 零终点

    • 累积求和的零(大约)端点(也可以指定节点)

    • 累积和的非负性

    • 压缩或剪切高于或低于阈值的值

    • 用规定的目标替换跨特征总和样本(例如,0 浓度)

    • 强制平面(“平面化”)。例如,浓度图像是一个平面。

  • 错误度量/损失函数

    • 均方误差

  • 其他选项

    • 修复已知目标(C 和/或 ST,并让其他目标有所不同)

的作用

  • 通过最小化例程近似浓度和光谱矩阵。这是 MCR 方法的核心。

  • 以用户定义的顺序启用某些约束的应用。

不做什么:

依赖项

注意:这些是开发系统规格。某些软件包的旧版本可能会起作用。

  • 蟒蛇> = 3.4

    • 用 3.4.6、3.5.4、3.6.3、3.6.5、3.7.1 测试

  • 麻木 (1.9.3)

    • 用 1.12.1、1.13.1、1.13.3、1.14.3、1.14.6 测试

  • scipy (1.0.0)

    • 用 1.0.0、1.0.1、1.1.0 测试

  • scikit-learn,可选 (0.2.0)

已知的问题

安装

使用 pip(硬安装)

# Only Python 3.* installed
pip install pyMCR

# If you have both Python 2.* and 3.* you may need
pip3 install pyMCR

使用 pip(软安装 [可以使用 git 更新])

# Make new directory for pyMCR and enter it
# Clone from github
git clone https://github.com/usnistgov/pyMCR

# Only Python 3.* installed
pip install -e .

# If you have both Python 2.* and 3.* you may need instead
pip3 install -e .

# To update in the future
git pull

使用设置工具

您将需要下载存储库 或使用 git 克隆存储库:

# Make new directory for pyMCR and enter it
# Clone from github
git clone https://github.com/usnistgov/pyMCR

执行安装:

python setup.py install

日志记录

pyMCR 0.4.* 中的新功能,日志模块现在在导入期间自动加载和设置(通过 __init__.py)以打印消息。您不需要在下面进行记录器设置。

pyMCR 0.3.1 中的新增功能,Python 的本机日志记录模块现在用于捕获消息。虽然这不如 print() 语句方便,但它有很多优点。

将简化的日志消息打印到标准输出(命令行)的简单示例:

import sys
import logging

# Need to import pymcr or mcr prior to setting up the logger
from pymcr.mcr import McrAR

logger = logging.getLogger('pymcr')
logger.setLevel(logging.DEBUG)

# StdOut is a "stream"; thus, StreamHandler
stdout_handler = logging.StreamHandler(stream=sys.stdout)

# Set the message format. Simple and removing log level or date info
stdout_format = logging.Formatter('%(message)s')  # Just a basic message akin to print statements
stdout_handler.setFormatter(stdout_format)

logger.addHandler(stdout_handler)

# Begin your code for pyMCR below

用法

from pymcr.mcr import McrAR
mcrar = McrAR()

# MCR assumes a system of the form: D = CS^T
#
# Data that you will provide (hyperspectral context):
# D [n_pixels, n_frequencies]  # Hyperspectral image unraveled in space (2D)
#
# initial_spectra [n_components, n_frequencies]  ## S^T in the literature
# OR
# initial_conc [n_pixels, n_components]   ## C in the literature

# If you have an initial estimate of the spectra
mcrar.fit(D, ST=initial_spectra)

# Otherwise, if you have an initial estimate of the concentrations
mcrar.fit(D, C=initial_conc)

示例结果

Example /文件夹中提供了命令行和 Jupyter 笔记本示例。使用文档中可用的不同回归器实例化 McrAR 类的示例。

来自示例/Demo.ipynb

./示例/mcr_spectra_retr.png ./示例/mcr_conc_retr.png

引用本软件

如果您使用pyMCR,非常感谢引用以下文章:

参考

执照

该软件由联邦政府机构美国国家标准与技术研究院 (NIST) 的员工开发。根据 美国法典第 17 篇第 105 节,NIST 员工的作品在美国不受版权保护,被视为属于公共领域。特此授予免费使用、复制、修改和分发本软件及其文档的许可,前提是所有副本中均包含此通知和免责声明。

本软件按“原样”提供,不提供任何形式的明示、默示或法定保证,包括但不限于对本软件符合规范的任何保证、对适销性、特定适用性的任何默示保证目的和免于侵权,以及文档符合软件的任何保证,或软件无错误的任何保证。在任何情况下,NIST 均不对任何损害负责,包括但不限于直接、间接、特殊或后果性损害,由本软件引起、导致或以任何方式与本软件相关,无论是否基于保修,合同、侵权或其他,无论是否由人员或财产或其他原因造成伤害,以及是否因以下原因造成损失,或由以下结果引起,

接触

Charles H Camp Jr:查尔斯营地@nist _ 政府

贡献者

下载文件

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

源分布

pyMCR-0.5.1.tar.gz (921.4 kB 查看哈希

已上传 source

内置分布

pyMCR-0.5.1-py3-none-any.whl (29.3 kB 查看哈希

已上传 py3