-
Notifications
You must be signed in to change notification settings - Fork 13
/
meta.yaml
183 lines (143 loc) · 7.99 KB
/
meta.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
{% set name = "Stoner" %}
{% set file_ext = "tar.gz" %}
package:
name: '{{ name|lower }}'
version: '0.9.6'
source:
git_tag: master
git_url: https://github.com/stonerlab/Stoner-PythonCode.git
build:
number: 0
script: {{ PYTHON }} setup.py install --single-version-externally-managed --record=record.txt
requirements:
build:
- python
host:
- python
- cycler>=0.10.0
- filemagic>=1.6
- h5py>=2.7.0
- llvmlite>=0.18.0
- lmfit>=0.9.7
- matplotlib>=2.0
- npTDMS>=0.11
- numba>=0.33.0
- numexpr>=2.6
- numpy>=1.13
- Pillow>=4.0
- scikit-image>=0.13.0
- scipy>=1.0.0
- seaborn>=0.7
- tabulate>=0.8
- imreg_dft>=2.0
- multiprocess>=0.70
- dill>=0.2.8
run:
- cycler>=0.10.0
- filemagic>=1.6
- h5py>=2.7.0
- llvmlite>=0.18.0
- lmfit>=0.9.7
- matplotlib>=2.0
- npTDMS>=0.11
- numba>=0.33.0
- numexpr>=2.6
- numpy>=1.13
- Pillow>=4.0
- scikit-image>=0.13.0
- scipy>=1.0.0
- seaborn>=0.7
- tabulate>=0.8
- imreg_dft>=2.0
- multiprocess>=0.70
- dill>=0.2.8
about:
home: https://github.com/gb119/Stoner-PythonCode/
license: GNU General Public License (LGPL)
license_family: GPL
license_file: ''
summary: Library to help write data analysis tools for experimental condensed matter physics.
description: >+
Introduction
============
The *Stoner* Python package is a set of utility classes for writing data analysis code. It was written within
the Condensed Matter Physics group at the University of Leeds as a shared resource for quickly writing simple
programs to do things like fitting functions to data, extract curve parameters, churn through large numbers of
small text data files and work with certain types of scientific image files.
For a general introduction, users are referred to the Users Guide, which is part of the `online documentation`_ along with the
API Reference guide. The github repository_ also contains some example scripts.
The codebase is compatible with Python 2.7 and Python 3.5+, at present we still develop primarily in Python 3.6 and 3.7 but test with
2.7 as well. *NB* Python 3.7 is only supported in version 0.9x onwards and is known to not work with version 0.8.x.
Overview
========
The main part of the **Stoner** package provides two basic top-level classes that describe an individual file of experimental data and a
list (such as a directory tree on disc) of many experimental files. For our research, a typical single experimental data file
is essentially a single 2D table of floating point numbers with associated metadata, usually saved in some
ASCII text format. This seems to cover most experiments in the physical sciences, but it you need a more complex
format with more dimensions of data, we suggest you look elsewhere.
Data and Friends
----------------
**Stoner.Core.DataFile** is the base class for representing individual experimental data sets.
It provides basic methods to examine and manipulate data, manage metadata and load and save data files.
It has a large number of sub classes - most of these are in Stoner.FileFormats and are used to handle the loading of specific
file formats.
There are also two mxin classes designed to work with DataFile to enable additional functionality for writing analysis programs.
* **Stoner.Analysis.AnalysisMixin** provides additional methods for curve-fitting, differentiating, smoothing and carrying out
basic calculations on data.
* **Stoner.plot.PlotMixin** provides additional routines for plotting data on 2D or 3D plots.
For rapid development of small scripts, we would recommend the **Stoner.Data** class which is a superclass of the above,
and provides a 'kitchen-sink' one stop shop for most of the package's functionality.
DataFolder
----------
**Stoner.Folders.DataFolder** is a class for assisting with the work of processing lots of files in a common directory
structure. It provides methods to list. filter and group data according to filename patterns or metadata and then to execute
a function on each file or group of files.
The **Stoner.HDF5** module provides some experimental classes to manipulate *DataFile* and *DataFolder* objects within HDF5
format files. These are not a way to handle arbitary HDF5 files - the format is much to complex and flexible to make that
an easy task, rather it is a way to work with large numbers of experimental sets using just a single file which may be less
brutal to your computer's OS than having directory trees with millions of individual files. The module also provides some classes to
support loading some other HDF5 flavoured files into a **DataFile**.
The **Stoner.Zip** module provides a similar set of classes to **Stoner.HDF5** but working with the ubiquitous zip compressed file format.
Image Subpackage
----------------
The **Stoner.Image** package is a new feature of recent versions of the package and provides dedicated classes for working with image data,
and in particular for analysing Kerr Microscope image files. It provides an **ImageFile** class that is functionally similar to **DataFile**
except that the numerical data is understood to represent image data and additional methods are incorporated to facilitate processing. The **ImageFolder**
and **ImageStack** classes provide similar functionality to **DataFolder** but with additional methods specific to handling collections of images. **ImageStack**
uses a 3D numpy array as it's primary image store which permits faster access (at the expense of a larger memory footprint) than the lazy loading ordered
dictionary of **ImageFolder**
Resources
==========
Included in the `github repository`_ are a (small) collection of sample scripts
for carrying out various operations and some sample data files for testing the loading and processing of data. There is also a
`User_Guide`_ as part of this documentation, along with a complete API reference.
Contact and Licensing
=====================
The lead developer for this code is `Dr Gavin Burnell`_ <g.burnell@leeds.ac.uk>, but many current and former members of the CM Physics group have
contributed code, ideas and bug testing.
The User Guide gives the current list of other contributors to the project.
This code and the sample data are all (C) The University of Leeds 2008-2019 unless otherwise indficated in the source file.
The contents of this package are licensed under the terms of the GNU Public License v3
Recent Changes
==============
Current PyPi Version
--------------------
The current PyPi version is based on the 0.9 beta series.
Development Version
-------------------
The next development version will be on version 0.9. Features expected in 0.9 include:
* Refactoring of the Core module into a more granual core package with submodules
* Overhaul of the documentation and user guide
* Started refactoring Analysis module with mixin class for data fitting
* Add a differential evolution fitting algorithm
* Dropping support for the older Stoner.Image.stack.ImageStack class
* Droppping support for matplotlib<2.0
* Support for Python 3.7
Online documentation for all versions can be found on the ReadTheDocs pages `online documentation`_
Build Status
~~~~~~~~~~~~
Version 0.7 onwards are tested using the Travis-CI services with unit test coverage assessed by Coveralls. We currently test against
python 2.7, 3.5, 3.6 & 3.7 via Travis.
Citing the Stoner Package
~~~~~~~~~~~~~~~~~~~~~~~~~
We maintain a digital object identifier (doi) for this package https://zenodo.org/badge/latestdoi/17265/gb119/Stoner-PythonCode