Skip to main content

帮助编写实验凝聚态物理数据分析工具的库。

项目描述

https://github.com/stonerlab/Stoner-PythonCode/actions/workflows/run-tests-action.yaml/badge.svg?branch=stable https://coveralls.io/repos/github/stonerlab/Stoner-PythonCode/badge.svg?branch=master https://api.codacy.com/project/badge/Grade/372f2f9227134fab9c6c2f2ba83962ba https://badge.fury.io/py/Stoner.svg https://anaconda.org/phygbu/stoner/badges/version.svg 文件状态 https://zenodo.org/badge/10057055.svg

介绍

Stoner Python 包是一组用于编写数据分析代码的实用程序类。 它是在利兹大学凝聚态物理小组中作为共享资源编写的,用于快速编写简单的程序来执行诸如拟合数据函数、提取曲线参数、搅动大量小型文本数据文件以及使用某些类型的操作科学图像文件。

对于一般性介绍,用户可以参考用户指南,它是与 API 参考指南一起在线文档的一部分。github 存储库还包含一些示例脚本。

获取此代码

Stoner Pythin 软件包介绍和安装指南

Stoner包需要h5py >=2.7.0, lmfit>=0.9.7, matplotlib>=2.0,numpy>=1.13, Pillow>=4.0, scikit-image>=0.13.0 & scipy>=1.0.0 以及可选取决于 filemagic、npTDMS、imreg_dft 和 numba、fabio、hyperspy。

Ananconda Python(可能还有其他科学 Python 发行版)包括几乎所有的依赖项,其余的依赖项一起收集在 anaconda 云上的phygbu存储库中。因此,安装 Stoner 包最简单的方法是安装最新的 Anaconda Python 发行版。

兼容性

版本 0.9.x(稳定分支)与 Python 2.7、3.5、3.6 和 3.7 兼容。最新的 0.9.6 版本也兼容 Python 3.8 当前的稳定版本(0.10,稳定分支)兼容 Python 3.6-3.9

Conda 包是为稳定分支和开发分支进入 beta 测试准备的。Pip 轮仅适用于选定的稳定版本。

安装

安装当前 Anaconda 版本后,打开终端 (Mac/Linux) 或 Anaconda Prompt (Windows) 并执行以下操作:

conda install -c phygbu Stoner

如果您不使用 Anaconda python,那么 pip 也应该可以工作:

pip install Stoner

这会将 Stoner 包和任何缺少的依赖项安装到您当前的 Python 环境中。由于该软件包处于相当持续的更新中,您可能希望使用 git 跟踪开发。源代码以及示例脚本和一些示例数据文件可以从 github 存储库获得:https ://github.com/stonerlab/Stoner-PythonCode

概述

Stoner包的主要部分提供了四个基本的顶级类,它们描述:
  • 一个单独的实验数据文件(Stoner.Data),

  • 一个单独的实验图像(Stoner.ImageFile),

  • 许多实验文件( Stoner.DataFolder )的列表(例如磁盘上的目录树)

  • 许多图像文件( Stoner.ImageFolder )的列表(例如光盘上的目录树)。

对于我们的研究,一个典型的单个实验数据文件本质上是一个带有相关元数据的浮点数二维表,通常以某种 ASCII 文本格式保存。这似乎涵盖了物理科学中的大多数实验,但如果您需要具有更多数据维度的更复杂格式,我们建议您查看其他地方。

我们似乎也越来越需要处理图像文件,因此与实验测量文件类合作,我们有一组用于与图像数据交互的并行类。

包中使用的一般理念是通过使用在适当位置转换数据的方法来处理数据。此外,许多分析方法将数据的副本作为其返回值传递,从而允许将一系列操作链接在一起。

这是一种以数据为中心的方法——我们有一些数据,我们对它进行各种操作以获得我们的结果。相反,传统的函数式编程根据您向其中传递数据的各种函数进行思考。

数据和朋友

Stoner.Data是表示单个实验数据集的核心类。它实际上由几个提供不同功能的 mixin 类组成,具有检查和操作数据、管理元数据、加载和保存数据文件、绘制结果和执行各种分析任务的方法。它有大量的子类——其中大部分都在 Stoner.formats 中,用于处理特定文件格式的加载。

图像文件

Stoner.ImageFile是管理图像数据的顶级类。它相当于Stoner.Data并维护元数据,并带有许多操作图像数据的方法。图像数据在内部存储为屏蔽的 numpy 数组,并且在执行图像分析任务时尽可能考虑屏蔽。通过对 Python 类系统的一些滥用,scpy.ndimage 和 scikit-image 模块中的函数被映射到 ImageFile 类的方法中,从而允许对数据集进行非常丰富的操作。默认的 IO 方法处理 tiff 和 png 图像,并且可以将 ImageFile 的元数据存储在这些文件格式中。

资料夹

Stoner.DataFolder是一个用于协助处理通用目录结构中的大量文件的类。它提供了列出的方法。根据文件名模式或元数据过滤和分组数据,然后对每个文件或文件组执行一个函数,然后依次从每个文件中收集元数据。DataFolder 的一个关键特性是它能够处理来自 DataFolder 中保存的单个文件的整理元数据。结合其遍历 数据对象组的完整层次结构的能力,通用元数据的处理为快速编写数据缩减脚本提供了强大的工具。

图像文件夹

Stoner.ImageFolder等效于 DataFolder,但用于图像(虽然从技术上讲,DataFolder 可以包含 ImageFile 对象,但 ImageFolder 类提供了额外的图像特定功能)。ImageFolder有一个子类 Stoner.Image.ImageStack ,它使用 3D numpy 数组作为主要图像存储,与ImageFolder的延迟加载有序字典相比,它允许更快的访问(以更大的内存占用为代价)

其他模块和类

Stoner.HDF5模块提供了一些额外的类来操作HDF5格式文件中的DataDataFolder对象。HDF5 是一种用于存储来自大型设施的数据的常用文件,尽管目前提供一种处理任意 HDF5 文件的方法超出了此软件包的范围 - 格式过于复杂和灵活,无法轻松完成任务。相反,它提供了一种仅使用单个文件来处理大量实验集的方法,这对您的计算机操作系统而言可能比使用包含数百万个单独文件的目录树更不残酷。

该模块还提供了一些类来支持将某些特定的 HDF5 风格的文件加载到DataImageFile 对象中。

Stoner.Zip模块提供了一组与Stoner.HDF5类似的类,但使用普遍存在的 zip 压缩文件格式。

资源

github 存储库中包含 一个(小)示例脚本集合,用于执行各种操作和一些示例数据文件,用于测试数据的加载和处理。作为本文档的一部分,还有一个 User_Guide以及一个文档(完整的 API 参考 <Stoner>

联系和许可

该代码的主要开发人员是Gavin Burnell < g博士伯内尔@利兹交流uk >,但是 CM Physics 小组的许多现任和前任成员都贡献了代码、想法和错误测试。

用户指南提供了该项目的其他贡献者的当前列表。

此代码和示例数据均为 (C) The University of Leeds 2008-2021,除非源文件中另有说明。此软件包的内容根据 GNU Public License v3 的条款获得许可

近期变动

当前的 PyPi 版本

PyPi 上包的当前版本将是稳定分支,直到开发分支进入 beta 测试,那时我们开始提供 beta 包。

开发版

当前的开发版本托管在存储库的主分支中,并将成为版本 0.11。

目前,开发版本是maily broen......。

构建状态

使用 Travis-CI 服务对 0.7 及以后的版本进行测试,其中单元测试覆盖率由 Coveralls 评估。

版本 0.9 使用标准 unittest 模块在 Python 2.7、3.5、3.6 中进行了测试。

版本 0.10 使用pytest和 Python 3.6-3.9 使用 github 操作进行测试。

引用斯托纳包

我们为此包维护了一个数字对象标识符 (doi)(链接到本自述文件顶部的状态栏),并鼓励任何用户通过该 doi 引用此包。

稳定版本

0.10 中的新功能包括:

  • 重构 Stoner.Core.DataFile 以将功能移动到 mixin 类

  • 开始实施 PEP484 类型提示

  • 支持 pathlib 的路径

  • 从基于 Tk 的对话框切换到 Qt5 的对话框

  • 重构baseFolder类,以便子组存储在一个属性中,该属性是自定义字典的实例,具有在子文件夹的虚拟树中修剪和过滤的方法。

  • 重构ImageArrayImageFile以便将外部函数作为方法绑定在类定义时完成,而不是在运行时使用过于复杂的 __getattr__ 方法。长期目标是弃用 ImageArray,而只使用 ImageFile。

  • 为交互式 Matplotlib 后端引入框、线和遮罩区域的交互式选择。

  • 修复一些长期存在的错误,这些错误可能导致共享元数据字典和竞争条件

所有版本的在线文档都可以在 ReadTheDocs 页面在线文档中找到

0.9 版本是旧的稳定版本。这是支持 Python 2 和 3<3.6 的最后一个版本。此版本的特点是:

  • 将包重构为更精细的核心、绘图、格式、带有子模块的文件夹包

  • 文档和用户指南的大修

  • 放弃对旧 Stoner.Image.stack.ImageStack 类的支持

  • 放弃对 matplotlib<2.0 的支持

  • 支持 Python 3.7(和 0.9.6 中的 3.8)

  • 单元测试现在 > 80% 覆盖整个包。

0.9.8 版本是 0.9 分支的最终版本

0.8 版是非常古老的稳定版本。主要的新功能是:

  • 对 ImageArray、ImageFile 和 ImageFolder 进行了重新设计,其中包含许多更新和新功能。

  • 新的基于 mixin 的 ImageStack2,可以操作 3D numpy 数组中的大量图像

  • 使用 mixin 方法继续重构 DataFolder

  • 进一步增加单元测试覆盖率、错误修复和代码的某些部分的重构。

  • _setas 对象实现了更完整的 MutableMapping 接口,并且还支持 +/- 运算符。

  • conda 包现在准备作为首选包格式

0.8.2 是 0.8.0 分支的最终版本

古老的稳定版本是0.7.2。0.7.2 的功能包括

  • 用基于 mixin 的版本 AnalysisMixin 和 PlotMixin 替换旧的 AnalyseFile 和 PlotFile

  • 添加 Stoner.Image 包来处理图像分析

  • 重构 DataFolder 以使用 Mixin 类

  • DataFolder 现在默认使用 Stoner.Core.Data

  • DataFolder 有一个选项可以跳过对空数据文件的迭代

  • 对 Stoner.Core.DataFile.setas 处理线的进一步改进。

不会对 0.7.x 进行进一步的发布。

0.6、0.7 应该适用于 Python 2.7 和 3.5 0.8 也在 Python 3.6 上进行了测试

项目详情