NXRefine 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nxrefine-0.1.1/.gitattributes +38 -0
- nxrefine-0.1.1/.github/workflows/sphinx.yml +31 -0
- nxrefine-0.1.1/.gitignore +66 -0
- nxrefine-0.1.1/LICENSE +34 -0
- nxrefine-0.1.1/LICENSE.pdf +0 -0
- nxrefine-0.1.1/PKG-INFO +152 -0
- nxrefine-0.1.1/README.md +76 -0
- nxrefine-0.1.1/conda-recipe/bld.bat +2 -0
- nxrefine-0.1.1/conda-recipe/build.sh +3 -0
- nxrefine-0.1.1/conda-recipe/meta.yaml +47 -0
- nxrefine-0.1.1/docs/.nojekyll +1 -0
- nxrefine-0.1.1/docs/Makefile +20 -0
- nxrefine-0.1.1/docs/make.bat +35 -0
- nxrefine-0.1.1/docs/requirements.txt +1 -0
- nxrefine-0.1.1/docs/source/conf.py +34 -0
- nxrefine-0.1.1/docs/source/favicon.ico +0 -0
- nxrefine-0.1.1/docs/source/index.rst +25 -0
- nxrefine-0.1.1/pyproject.toml +87 -0
- nxrefine-0.1.1/setup.cfg +4 -0
- nxrefine-0.1.1/src/NXRefine.egg-info/PKG-INFO +152 -0
- nxrefine-0.1.1/src/NXRefine.egg-info/SOURCES.txt +95 -0
- nxrefine-0.1.1/src/NXRefine.egg-info/dependency_links.txt +1 -0
- nxrefine-0.1.1/src/NXRefine.egg-info/entry_points.txt +23 -0
- nxrefine-0.1.1/src/NXRefine.egg-info/requires.txt +13 -0
- nxrefine-0.1.1/src/NXRefine.egg-info/top_level.txt +1 -0
- nxrefine-0.1.1/src/nxrefine/__init__.py +9 -0
- nxrefine-0.1.1/src/nxrefine/_version.py +24 -0
- nxrefine-0.1.1/src/nxrefine/julia/GeneralMK3D.jl +258 -0
- nxrefine-0.1.1/src/nxrefine/julia/LaplaceInterpolation.jl +25 -0
- nxrefine-0.1.1/src/nxrefine/julia/Matern1D2D.jl +229 -0
- nxrefine-0.1.1/src/nxrefine/julia/MaternKernelApproximation.jl +342 -0
- nxrefine-0.1.1/src/nxrefine/julia/__init__.py +0 -0
- nxrefine-0.1.1/src/nxrefine/julia/arbitrary_dim.jl +109 -0
- nxrefine-0.1.1/src/nxrefine/julia/get_xyzs.jl +63 -0
- nxrefine-0.1.1/src/nxrefine/julia/nexus.jl +153 -0
- nxrefine-0.1.1/src/nxrefine/julia/punch.jl +232 -0
- nxrefine-0.1.1/src/nxrefine/nxbeamline.py +313 -0
- nxrefine-0.1.1/src/nxrefine/nxdaemon.py +160 -0
- nxrefine-0.1.1/src/nxrefine/nxdatabase.py +608 -0
- nxrefine-0.1.1/src/nxrefine/nxlogger.py +103 -0
- nxrefine-0.1.1/src/nxrefine/nxorient.py +566 -0
- nxrefine-0.1.1/src/nxrefine/nxpdf.py +377 -0
- nxrefine-0.1.1/src/nxrefine/nxreduce.py +2703 -0
- nxrefine-0.1.1/src/nxrefine/nxrefine.py +2035 -0
- nxrefine-0.1.1/src/nxrefine/nxserver.py +503 -0
- nxrefine-0.1.1/src/nxrefine/nxsettings.py +188 -0
- nxrefine-0.1.1/src/nxrefine/nxsymmetry.py +176 -0
- nxrefine-0.1.1/src/nxrefine/nxutils.py +711 -0
- nxrefine-0.1.1/src/nxrefine/orient/__init__.py +0 -0
- nxrefine-0.1.1/src/nxrefine/orient/conventional.py +115 -0
- nxrefine-0.1.1/src/nxrefine/orient/niggli.py +138 -0
- nxrefine-0.1.1/src/nxrefine/orient/orientedlattice.py +139 -0
- nxrefine-0.1.1/src/nxrefine/orient/reduced.py +393 -0
- nxrefine-0.1.1/src/nxrefine/orient/scalar_utils.py +210 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/__init__.py +27 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/calibrate_powder.py +493 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/create_mask.py +300 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/edit_settings.py +149 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/import_scans.py +134 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/make_scans.py +127 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/new_configuration.py +301 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/new_experiment.py +157 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/new_sample.py +70 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/new_scan.py +269 -0
- nxrefine-0.1.1/src/nxrefine/plugins/experiment/sum_scans.py +155 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/__init__.py +26 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/calculate_angles.py +113 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/choose_parameters.py +208 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/copy_parameters.py +60 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/define_lattice.py +227 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/find_maximum.py +324 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/find_peaks.py +269 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/prepare_mask.py +162 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/refine_lattice.py +1230 -0
- nxrefine-0.1.1/src/nxrefine/plugins/refine/transform_data.py +201 -0
- nxrefine-0.1.1/src/nxrefine/plugins/server/__init__.py +18 -0
- nxrefine-0.1.1/src/nxrefine/plugins/server/edit_settings.py +99 -0
- nxrefine-0.1.1/src/nxrefine/plugins/server/manage_server.py +276 -0
- nxrefine-0.1.1/src/nxrefine/plugins/server/manage_workflows.py +679 -0
- nxrefine-0.1.1/src/nxrefine/scripts/__init__.py +0 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxchoose.py +68 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxcombine.py +46 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxcopy.py +47 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxdatabase.py +32 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxfind.py +58 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxlink.py +45 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxload.py +45 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxmax.py +51 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxparent.py +29 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxpdf.py +51 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxprepare.py +61 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxreduce.py +80 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxrefine.py +59 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxserver.py +67 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxsettings.py +40 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxsum.py +43 -0
- nxrefine-0.1.1/src/nxrefine/scripts/nxtransform.py +56 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Auto detect text files and perform LF normalization
|
|
2
|
+
* text=auto
|
|
3
|
+
|
|
4
|
+
# Source files
|
|
5
|
+
# ============
|
|
6
|
+
*.pxd text
|
|
7
|
+
*.py text
|
|
8
|
+
*.py3 text
|
|
9
|
+
*.pyw text
|
|
10
|
+
*.pyx text
|
|
11
|
+
*.xml text
|
|
12
|
+
*.md text
|
|
13
|
+
*.rst text
|
|
14
|
+
*.bat text
|
|
15
|
+
*.sh text
|
|
16
|
+
*.yaml text
|
|
17
|
+
*.cfg text
|
|
18
|
+
*.ipynb text
|
|
19
|
+
|
|
20
|
+
# Binary files
|
|
21
|
+
# ============
|
|
22
|
+
*.nxs binary
|
|
23
|
+
*.h5 binary
|
|
24
|
+
*.db binary
|
|
25
|
+
*.p binary
|
|
26
|
+
*.pkl binary
|
|
27
|
+
*.pyc binary
|
|
28
|
+
*.pyd binary
|
|
29
|
+
*.pyo binary
|
|
30
|
+
*.png binary
|
|
31
|
+
*.jpg binary
|
|
32
|
+
*.jpeg binary
|
|
33
|
+
*.gif binary
|
|
34
|
+
*.tif binary
|
|
35
|
+
*.tiff binary
|
|
36
|
+
*.svg binary
|
|
37
|
+
*.eps binary
|
|
38
|
+
*.ico binary
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: "Sphinx: Render Documentation"
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- 'docs'
|
|
8
|
+
pull_request:
|
|
9
|
+
branches:
|
|
10
|
+
- 'docs'
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
permissions:
|
|
16
|
+
contents: write
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- name: Build HTML
|
|
20
|
+
uses: ammaraskar/sphinx-action@master
|
|
21
|
+
- name: Upload artifacts
|
|
22
|
+
uses: actions/upload-artifact@v3
|
|
23
|
+
with:
|
|
24
|
+
name: html-docs
|
|
25
|
+
path: docs/build/html/
|
|
26
|
+
- name: Deploy to GitHub Pages
|
|
27
|
+
uses: peaceiris/actions-gh-pages@v3
|
|
28
|
+
if: ${{github.ref == 'refs/heads/docs'}}
|
|
29
|
+
with:
|
|
30
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
31
|
+
publish_dir: docs/build/html
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
*.py[cod]
|
|
2
|
+
|
|
3
|
+
# C extensions
|
|
4
|
+
*.so
|
|
5
|
+
|
|
6
|
+
# Packages
|
|
7
|
+
*.egg
|
|
8
|
+
*.egg-info
|
|
9
|
+
dist
|
|
10
|
+
build
|
|
11
|
+
eggs
|
|
12
|
+
parts
|
|
13
|
+
bin
|
|
14
|
+
var
|
|
15
|
+
sdist
|
|
16
|
+
develop-eggs
|
|
17
|
+
.installed.cfg
|
|
18
|
+
lib
|
|
19
|
+
lib64
|
|
20
|
+
MANIFEST
|
|
21
|
+
|
|
22
|
+
# Installer logs
|
|
23
|
+
pip-log.txt
|
|
24
|
+
|
|
25
|
+
# Unit test / coverage reports
|
|
26
|
+
.coverage
|
|
27
|
+
.tox
|
|
28
|
+
nosetests.xml
|
|
29
|
+
|
|
30
|
+
# Translations
|
|
31
|
+
*.mo
|
|
32
|
+
|
|
33
|
+
# Mr Developer
|
|
34
|
+
.mr.developer.cfg
|
|
35
|
+
|
|
36
|
+
# OSX files
|
|
37
|
+
.DS_Store
|
|
38
|
+
.DS_Store?
|
|
39
|
+
._*
|
|
40
|
+
.Spotlight-V100
|
|
41
|
+
.Trashes
|
|
42
|
+
Icon?
|
|
43
|
+
|
|
44
|
+
# PyCharm Files
|
|
45
|
+
.idea
|
|
46
|
+
|
|
47
|
+
# eclipse
|
|
48
|
+
.settings
|
|
49
|
+
.project
|
|
50
|
+
.pydevproject
|
|
51
|
+
|
|
52
|
+
# emacs
|
|
53
|
+
*~
|
|
54
|
+
|
|
55
|
+
# Virtual Studio Code
|
|
56
|
+
.vscode
|
|
57
|
+
|
|
58
|
+
# setuptools_scm
|
|
59
|
+
src/nxrefine/_version.py
|
|
60
|
+
|
|
61
|
+
# unused NXRefine code
|
|
62
|
+
_unused
|
|
63
|
+
|
|
64
|
+
# miscellaneous system files
|
|
65
|
+
.directoryhash
|
|
66
|
+
|
nxrefine-0.1.1/LICENSE
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Copyright © 2022, UChicago Argonne, LLC
|
|
2
|
+
All Rights Reserved
|
|
3
|
+
Software Name: NXRefine
|
|
4
|
+
By: Argonne National Laboratory
|
|
5
|
+
|
|
6
|
+
OPEN SOURCE LICENSE
|
|
7
|
+
|
|
8
|
+
Redistribution and use in source and binary forms, with or without modification, are
|
|
9
|
+
permitted provided that the following conditions are met:
|
|
10
|
+
|
|
11
|
+
1. Redistributions of source code must retain the above copyright notice, this list of
|
|
12
|
+
conditions and the following disclaimer.
|
|
13
|
+
|
|
14
|
+
2. Redistributions in binary form must reproduce the above copyright notice, this list of
|
|
15
|
+
conditions and the following disclaimer in the documentation and/or other materials
|
|
16
|
+
provided with the distribution.
|
|
17
|
+
|
|
18
|
+
3. Neither the name of the copyright holder nor the names of its contributors may be used
|
|
19
|
+
to endorse or promote products derived from this software without specific prior written
|
|
20
|
+
permission.
|
|
21
|
+
|
|
22
|
+
DISCLAIMER
|
|
23
|
+
|
|
24
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
25
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
26
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
27
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
28
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
29
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
30
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
31
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
32
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
|
33
|
+
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
34
|
+
SUCH DAMAGE.
|
|
Binary file
|
nxrefine-0.1.1/PKG-INFO
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: NXRefine
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: Data reduction for single crystal x-ray scattering
|
|
5
|
+
Author-email: Raymond Osborn <rayosborn@mac.com>
|
|
6
|
+
License: Copyright © 2022, UChicago Argonne, LLC
|
|
7
|
+
All Rights Reserved
|
|
8
|
+
Software Name: NXRefine
|
|
9
|
+
By: Argonne National Laboratory
|
|
10
|
+
|
|
11
|
+
OPEN SOURCE LICENSE
|
|
12
|
+
|
|
13
|
+
Redistribution and use in source and binary forms, with or without modification, are
|
|
14
|
+
permitted provided that the following conditions are met:
|
|
15
|
+
|
|
16
|
+
1. Redistributions of source code must retain the above copyright notice, this list of
|
|
17
|
+
conditions and the following disclaimer.
|
|
18
|
+
|
|
19
|
+
2. Redistributions in binary form must reproduce the above copyright notice, this list of
|
|
20
|
+
conditions and the following disclaimer in the documentation and/or other materials
|
|
21
|
+
provided with the distribution.
|
|
22
|
+
|
|
23
|
+
3. Neither the name of the copyright holder nor the names of its contributors may be used
|
|
24
|
+
to endorse or promote products derived from this software without specific prior written
|
|
25
|
+
permission.
|
|
26
|
+
|
|
27
|
+
DISCLAIMER
|
|
28
|
+
|
|
29
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
30
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
31
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
32
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
33
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
34
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
35
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
36
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
37
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
|
38
|
+
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
39
|
+
SUCH DAMAGE.
|
|
40
|
+
|
|
41
|
+
Project-URL: Homepage, https://nexpy.github.io/nxrefine
|
|
42
|
+
Project-URL: Repository, https://github.com/nexpy/nxrefine.git
|
|
43
|
+
Project-URL: Issues, https://github.com/nexpy/nxrefine/issues
|
|
44
|
+
Project-URL: Documentation, https://nexpy.github.io/nxrefine
|
|
45
|
+
Project-URL: Changelog, https://github.com/nexpy/nxrefine/releases
|
|
46
|
+
Keywords: x-ray scattering,data analysis,visualization
|
|
47
|
+
Classifier: Development Status :: 4 - Beta
|
|
48
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
49
|
+
Classifier: Intended Audience :: Developers
|
|
50
|
+
Classifier: Intended Audience :: Science/Research
|
|
51
|
+
Classifier: Topic :: Scientific/Engineering
|
|
52
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
53
|
+
Classifier: Programming Language :: Python :: 3
|
|
54
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
55
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
56
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
57
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
58
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
59
|
+
Requires-Python: >=3.10
|
|
60
|
+
Description-Content-Type: text/markdown
|
|
61
|
+
License-File: LICENSE
|
|
62
|
+
License-File: LICENSE.pdf
|
|
63
|
+
Requires-Dist: nexpy>=2.0.0
|
|
64
|
+
Requires-Dist: gemmi
|
|
65
|
+
Requires-Dist: pyfai
|
|
66
|
+
Requires-Dist: julia
|
|
67
|
+
Requires-Dist: persist-queue
|
|
68
|
+
Requires-Dist: sqlalchemy
|
|
69
|
+
Requires-Dist: matplotlib
|
|
70
|
+
Requires-Dist: psutil
|
|
71
|
+
Requires-Dist: scikit-image
|
|
72
|
+
Requires-Dist: xtec
|
|
73
|
+
Provides-Extra: gpu
|
|
74
|
+
Requires-Dist: pyopencl; extra == "gpu"
|
|
75
|
+
Dynamic: license-file
|
|
76
|
+
|
|
77
|
+
Introduction
|
|
78
|
+
============
|
|
79
|
+
NXRefine implements a complete workflow for both data acquisition and
|
|
80
|
+
reduction of single crystal diffuse x-ray scattering collected as a
|
|
81
|
+
series of area detector frames during continuous sample rotation. The
|
|
82
|
+
data are stored in HDF5 files, which conform to the NeXus data format
|
|
83
|
+
standard. These files contain a comprehensive set of metadata, including
|
|
84
|
+
the incident wavelength, powder calibration scans used to define
|
|
85
|
+
detector distances, beam centers, and yaw, pitch, and roll corrections.
|
|
86
|
+
Automated peak searches of the three-dimensional data arrays define
|
|
87
|
+
a set of Bragg peaks that are used to define an orientation matrix,
|
|
88
|
+
defined according to Busing and Levy, which is then used to transform
|
|
89
|
+
the data from angular coordinates to reciprocal space coordinates using
|
|
90
|
+
the CCTW program. Multiple rotations at different detector translations
|
|
91
|
+
and offset rotation axes are combined to ensure that there are no gaps
|
|
92
|
+
in the reconstructed data, and allow the construction of masks to
|
|
93
|
+
eliminate detector artifacts due to Compton scattering within the
|
|
94
|
+
sensor layers. Finally, the data can be transformed into 3D-ΔPDF maps
|
|
95
|
+
using the punch-and-fill method after symmetrization.
|
|
96
|
+
|
|
97
|
+
The workflow is implemented as plugins to the
|
|
98
|
+
[NeXpy package](http://nexpy.github.io/nexpy) that are used to set up
|
|
99
|
+
the basic experimental configuration and sample parameters, and
|
|
100
|
+
determine the orientation matrix. The remaining components of the
|
|
101
|
+
workflow can be run as command-line scripts, or submitted to a queue
|
|
102
|
+
for distribution to multiple nodes or processes for simultaneous
|
|
103
|
+
reduction of multiple datasets.
|
|
104
|
+
|
|
105
|
+
Instructions for running NXRefine are under development.
|
|
106
|
+
|
|
107
|
+
The NXRefine package is being developed as part of a DOE-funded project
|
|
108
|
+
to utilize advanced computational methods for the analysis of
|
|
109
|
+
single-crystal x-ray scattering from synchrotron sources, such as
|
|
110
|
+
multidimensional spectral analysis and machine learning. Further details
|
|
111
|
+
of this project are available on the
|
|
112
|
+
[AXMAS web pages](https://cels.anl.gov/axmas).
|
|
113
|
+
|
|
114
|
+
Installing and Running
|
|
115
|
+
======================
|
|
116
|
+
The source code can be downloaded from the NeXpy Git repository:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
$ git clone https://github.com/nexpy/nxrefine.git
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
To install in the standard Python location:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
$ pip install .
|
|
126
|
+
```
|
|
127
|
+
Prerequisites
|
|
128
|
+
=============
|
|
129
|
+
Python Packages
|
|
130
|
+
---------------
|
|
131
|
+
The following packages are listed as dependencies.
|
|
132
|
+
|
|
133
|
+
* [nexpy](https://github.com/nexpy/nexpy/)
|
|
134
|
+
* [gemmi](https://project-gemmi.github.io/)
|
|
135
|
+
* [pyfai](https://pyfai.readthedocs.io/)
|
|
136
|
+
* [sqlalchemy](https://docs.sqlalchemy.org/)
|
|
137
|
+
* [psutil](https://psutil.readthedocs.io/)
|
|
138
|
+
|
|
139
|
+
CCTW
|
|
140
|
+
----
|
|
141
|
+
[CCTW](https://sourceforge.net/projects/cctw/) (Crystal Coordination
|
|
142
|
+
Transformation Workflow) is a C++ package written by Guy Jennings. It
|
|
143
|
+
is launched as a separate process by NXRefine, which uses the
|
|
144
|
+
experimental metadata to define the settings file used to define the
|
|
145
|
+
input and output grids. It has to be separately installed.
|
|
146
|
+
|
|
147
|
+
User Support
|
|
148
|
+
============
|
|
149
|
+
If you are interested in using this package, please contact Ray Osborn
|
|
150
|
+
(ROsborn@anl.gov). Please report any bugs as a
|
|
151
|
+
[Github issue](https://github.com/nexpy/nxrefine/issues), with relevant
|
|
152
|
+
tracebacks.
|
nxrefine-0.1.1/README.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
Introduction
|
|
2
|
+
============
|
|
3
|
+
NXRefine implements a complete workflow for both data acquisition and
|
|
4
|
+
reduction of single crystal diffuse x-ray scattering collected as a
|
|
5
|
+
series of area detector frames during continuous sample rotation. The
|
|
6
|
+
data are stored in HDF5 files, which conform to the NeXus data format
|
|
7
|
+
standard. These files contain a comprehensive set of metadata, including
|
|
8
|
+
the incident wavelength, powder calibration scans used to define
|
|
9
|
+
detector distances, beam centers, and yaw, pitch, and roll corrections.
|
|
10
|
+
Automated peak searches of the three-dimensional data arrays define
|
|
11
|
+
a set of Bragg peaks that are used to define an orientation matrix,
|
|
12
|
+
defined according to Busing and Levy, which is then used to transform
|
|
13
|
+
the data from angular coordinates to reciprocal space coordinates using
|
|
14
|
+
the CCTW program. Multiple rotations at different detector translations
|
|
15
|
+
and offset rotation axes are combined to ensure that there are no gaps
|
|
16
|
+
in the reconstructed data, and allow the construction of masks to
|
|
17
|
+
eliminate detector artifacts due to Compton scattering within the
|
|
18
|
+
sensor layers. Finally, the data can be transformed into 3D-ΔPDF maps
|
|
19
|
+
using the punch-and-fill method after symmetrization.
|
|
20
|
+
|
|
21
|
+
The workflow is implemented as plugins to the
|
|
22
|
+
[NeXpy package](http://nexpy.github.io/nexpy) that are used to set up
|
|
23
|
+
the basic experimental configuration and sample parameters, and
|
|
24
|
+
determine the orientation matrix. The remaining components of the
|
|
25
|
+
workflow can be run as command-line scripts, or submitted to a queue
|
|
26
|
+
for distribution to multiple nodes or processes for simultaneous
|
|
27
|
+
reduction of multiple datasets.
|
|
28
|
+
|
|
29
|
+
Instructions for running NXRefine are under development.
|
|
30
|
+
|
|
31
|
+
The NXRefine package is being developed as part of a DOE-funded project
|
|
32
|
+
to utilize advanced computational methods for the analysis of
|
|
33
|
+
single-crystal x-ray scattering from synchrotron sources, such as
|
|
34
|
+
multidimensional spectral analysis and machine learning. Further details
|
|
35
|
+
of this project are available on the
|
|
36
|
+
[AXMAS web pages](https://cels.anl.gov/axmas).
|
|
37
|
+
|
|
38
|
+
Installing and Running
|
|
39
|
+
======================
|
|
40
|
+
The source code can be downloaded from the NeXpy Git repository:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
$ git clone https://github.com/nexpy/nxrefine.git
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
To install in the standard Python location:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
$ pip install .
|
|
50
|
+
```
|
|
51
|
+
Prerequisites
|
|
52
|
+
=============
|
|
53
|
+
Python Packages
|
|
54
|
+
---------------
|
|
55
|
+
The following packages are listed as dependencies.
|
|
56
|
+
|
|
57
|
+
* [nexpy](https://github.com/nexpy/nexpy/)
|
|
58
|
+
* [gemmi](https://project-gemmi.github.io/)
|
|
59
|
+
* [pyfai](https://pyfai.readthedocs.io/)
|
|
60
|
+
* [sqlalchemy](https://docs.sqlalchemy.org/)
|
|
61
|
+
* [psutil](https://psutil.readthedocs.io/)
|
|
62
|
+
|
|
63
|
+
CCTW
|
|
64
|
+
----
|
|
65
|
+
[CCTW](https://sourceforge.net/projects/cctw/) (Crystal Coordination
|
|
66
|
+
Transformation Workflow) is a C++ package written by Guy Jennings. It
|
|
67
|
+
is launched as a separate process by NXRefine, which uses the
|
|
68
|
+
experimental metadata to define the settings file used to define the
|
|
69
|
+
input and output grids. It has to be separately installed.
|
|
70
|
+
|
|
71
|
+
User Support
|
|
72
|
+
============
|
|
73
|
+
If you are interested in using this package, please contact Ray Osborn
|
|
74
|
+
(ROsborn@anl.gov). Please report any bugs as a
|
|
75
|
+
[Github issue](https://github.com/nexpy/nxrefine/issues), with relevant
|
|
76
|
+
tracebacks.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
package:
|
|
2
|
+
name: nxrefine
|
|
3
|
+
version: "0.1.0"
|
|
4
|
+
|
|
5
|
+
source:
|
|
6
|
+
git_url: https://github.com/rayosborn/nxrefine.git
|
|
7
|
+
git_tag: v0.1.0
|
|
8
|
+
|
|
9
|
+
build:
|
|
10
|
+
entry_points:
|
|
11
|
+
- nxsetup=nxrefine.scripts.nxsetup:main
|
|
12
|
+
- nxcopy=nxrefine.scripts.nxcopy:main
|
|
13
|
+
- nxlink=nxrefine.scripts.nxlink:main
|
|
14
|
+
- nxfind=nxrefine.scripts.nxfind:main
|
|
15
|
+
- nxmake=nxrefine.scripts.nxmake:main
|
|
16
|
+
- nxmask=nxrefine.scripts.nxmask:main
|
|
17
|
+
- nxmax=nxrefine.scripts.nxmax:main
|
|
18
|
+
- nxorient=nxrefine.scripts.nxorient:main
|
|
19
|
+
- nxwork=nxrefine.scripts.nxwork:main
|
|
20
|
+
- nxrun=nxrefine.scripts.nxrun:main
|
|
21
|
+
- nxscan=nxrefine.scripts.nxscan:main
|
|
22
|
+
- nxcombine=nxrefine.scripts.nxcombine:main
|
|
23
|
+
- nxtransform=nxrefine.scripts.nxtransform:main
|
|
24
|
+
number: 0
|
|
25
|
+
|
|
26
|
+
requirements:
|
|
27
|
+
build:
|
|
28
|
+
- python
|
|
29
|
+
- setuptools
|
|
30
|
+
- numpy >=1.6.0
|
|
31
|
+
|
|
32
|
+
run:
|
|
33
|
+
- python
|
|
34
|
+
- numpy >=1.6.0
|
|
35
|
+
- sqlalchemy
|
|
36
|
+
- psutil
|
|
37
|
+
- pyfai
|
|
38
|
+
|
|
39
|
+
test:
|
|
40
|
+
imports:
|
|
41
|
+
- nexusformat
|
|
42
|
+
- nexusformat.nexus
|
|
43
|
+
|
|
44
|
+
about:
|
|
45
|
+
home: http://nexpy.github.io/nexpy/
|
|
46
|
+
license: BSD License
|
|
47
|
+
summary: 'NXrefine: Python API to refine single crystal x-ray scattering'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Minimal makefile for Sphinx documentation
|
|
2
|
+
#
|
|
3
|
+
|
|
4
|
+
# You can set these variables from the command line, and also
|
|
5
|
+
# from the environment for the first two.
|
|
6
|
+
SPHINXOPTS ?=
|
|
7
|
+
SPHINXBUILD ?= sphinx-build
|
|
8
|
+
SOURCEDIR = source
|
|
9
|
+
BUILDDIR = build
|
|
10
|
+
|
|
11
|
+
# Put it first so that "make" without argument is like "make help".
|
|
12
|
+
help:
|
|
13
|
+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
14
|
+
|
|
15
|
+
.PHONY: help Makefile
|
|
16
|
+
|
|
17
|
+
# Catch-all target: route all unknown targets to Sphinx using the new
|
|
18
|
+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|
19
|
+
%: Makefile
|
|
20
|
+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
@ECHO OFF
|
|
2
|
+
|
|
3
|
+
pushd %~dp0
|
|
4
|
+
|
|
5
|
+
REM Command file for Sphinx documentation
|
|
6
|
+
|
|
7
|
+
if "%SPHINXBUILD%" == "" (
|
|
8
|
+
set SPHINXBUILD=sphinx-build
|
|
9
|
+
)
|
|
10
|
+
set SOURCEDIR=source
|
|
11
|
+
set BUILDDIR=build
|
|
12
|
+
|
|
13
|
+
%SPHINXBUILD% >NUL 2>NUL
|
|
14
|
+
if errorlevel 9009 (
|
|
15
|
+
echo.
|
|
16
|
+
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
|
17
|
+
echo.installed, then set the SPHINXBUILD environment variable to point
|
|
18
|
+
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
|
19
|
+
echo.may add the Sphinx directory to PATH.
|
|
20
|
+
echo.
|
|
21
|
+
echo.If you don't have Sphinx installed, grab it from
|
|
22
|
+
echo.https://www.sphinx-doc.org/
|
|
23
|
+
exit /b 1
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
if "%1" == "" goto help
|
|
27
|
+
|
|
28
|
+
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
|
29
|
+
goto end
|
|
30
|
+
|
|
31
|
+
:help
|
|
32
|
+
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
|
33
|
+
|
|
34
|
+
:end
|
|
35
|
+
popd
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
furo==2021.11.16
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Configuration file for the Sphinx documentation builder.
|
|
2
|
+
#
|
|
3
|
+
# For the full list of built-in configuration values, see the documentation:
|
|
4
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
5
|
+
|
|
6
|
+
import os
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
sys.path.insert(0, os.path.abspath('../../src/'))
|
|
10
|
+
|
|
11
|
+
# -- Project information -----------------------------------------------------
|
|
12
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
|
13
|
+
|
|
14
|
+
project = 'NXRefine'
|
|
15
|
+
copyright = '2023, Ray Osborn'
|
|
16
|
+
author = 'Ray Osborn'
|
|
17
|
+
release = '0.1.0'
|
|
18
|
+
|
|
19
|
+
# -- General configuration ---------------------------------------------------
|
|
20
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
|
21
|
+
|
|
22
|
+
extensions = []
|
|
23
|
+
|
|
24
|
+
templates_path = ['_templates']
|
|
25
|
+
exclude_patterns = []
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# -- Options for HTML output -------------------------------------------------
|
|
30
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
|
|
31
|
+
|
|
32
|
+
html_theme = 'sphinxdoc'
|
|
33
|
+
html_favicon = 'favicon.ico'
|
|
34
|
+
html_static_path = ['_static']
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
.. NXRefine documentation master file, created by
|
|
2
|
+
sphinx-quickstart on Wed Oct 11 14:36:33 2023.
|
|
3
|
+
You can adapt this file completely to your liking, but it should at least
|
|
4
|
+
contain the root `toctree` directive.
|
|
5
|
+
|
|
6
|
+
NXRefine
|
|
7
|
+
========
|
|
8
|
+
NXRefine implements a complete workflow for both data acquisition and
|
|
9
|
+
reduction of single crystal diffuse x-ray scattering collected as a
|
|
10
|
+
series of area detector frames during continuous sample rotation. The
|
|
11
|
+
data are stored in HDF5 files, which conform to the NeXus data format
|
|
12
|
+
standard.
|
|
13
|
+
|
|
14
|
+
.. toctree::
|
|
15
|
+
:maxdepth: 2
|
|
16
|
+
:caption: Contents:
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Indices and tables
|
|
21
|
+
==================
|
|
22
|
+
|
|
23
|
+
* :ref:`genindex`
|
|
24
|
+
* :ref:`modindex`
|
|
25
|
+
* :ref:`search`
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools >= 64", "setuptools_scm >= 8"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "NXRefine"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Data reduction for single crystal x-ray scattering"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {file = "LICENSE"}
|
|
11
|
+
authors = [{name = "Raymond Osborn", email = "rayosborn@mac.com"}]
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Development Status :: 4 - Beta",
|
|
14
|
+
"License :: OSI Approved :: BSD License",
|
|
15
|
+
"Intended Audience :: Developers",
|
|
16
|
+
"Intended Audience :: Science/Research",
|
|
17
|
+
"Topic :: Scientific/Engineering",
|
|
18
|
+
"Topic :: Scientific/Engineering :: Physics",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Programming Language :: Python :: 3.14",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
keywords = [
|
|
28
|
+
"x-ray scattering",
|
|
29
|
+
"data analysis",
|
|
30
|
+
"visualization",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
requires-python = ">=3.10"
|
|
34
|
+
dependencies = [
|
|
35
|
+
"nexpy >= 2.0.0",
|
|
36
|
+
"gemmi",
|
|
37
|
+
"pyfai",
|
|
38
|
+
"julia",
|
|
39
|
+
"persist-queue",
|
|
40
|
+
"sqlalchemy",
|
|
41
|
+
"matplotlib",
|
|
42
|
+
"psutil",
|
|
43
|
+
"scikit-image",
|
|
44
|
+
"xtec",
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
[project.optional-dependencies]
|
|
48
|
+
gpu = [
|
|
49
|
+
"pyopencl",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
[project.urls]
|
|
53
|
+
Homepage = "https://nexpy.github.io/nxrefine"
|
|
54
|
+
Repository = "https://github.com/nexpy/nxrefine.git"
|
|
55
|
+
Issues = "https://github.com/nexpy/nxrefine/issues"
|
|
56
|
+
Documentation = "https://nexpy.github.io/nxrefine"
|
|
57
|
+
Changelog = "https://github.com/nexpy/nxrefine/releases"
|
|
58
|
+
|
|
59
|
+
[project.scripts]
|
|
60
|
+
nxchoose = "nxrefine.scripts.nxchoose:main"
|
|
61
|
+
nxcombine = "nxrefine.scripts.nxcombine:main"
|
|
62
|
+
nxcopy = "nxrefine.scripts.nxcopy:main"
|
|
63
|
+
nxdatabase = "nxrefine.scripts.nxdatabase:main"
|
|
64
|
+
nxfind = "nxrefine.scripts.nxfind:main"
|
|
65
|
+
nxlink = "nxrefine.scripts.nxlink:main"
|
|
66
|
+
nxload = "nxrefine.scripts.nxload:main"
|
|
67
|
+
nxmax = "nxrefine.scripts.nxmax:main"
|
|
68
|
+
nxparent = "nxrefine.scripts.nxparent:main"
|
|
69
|
+
nxpdf = "nxrefine.scripts.nxpdf:main"
|
|
70
|
+
nxprepare = "nxrefine.scripts.nxprepare:main"
|
|
71
|
+
nxreduce = "nxrefine.scripts.nxreduce:main"
|
|
72
|
+
nxrefine = "nxrefine.scripts.nxrefine:main"
|
|
73
|
+
nxserver = "nxrefine.scripts.nxserver:main"
|
|
74
|
+
nxsettings = "nxrefine.scripts.nxsettings:main"
|
|
75
|
+
nxsum = "nxrefine.scripts.nxsum:main"
|
|
76
|
+
nxtransform = "nxrefine.scripts.nxtransform:main"
|
|
77
|
+
|
|
78
|
+
[project.entry-points."nexpy.plugins"]
|
|
79
|
+
experiment = "nxrefine.plugins.experiment:plugin_menu"
|
|
80
|
+
refine = "nxrefine.plugins.refine:plugin_menu"
|
|
81
|
+
server = "nxrefine.plugins.server:plugin_menu"
|
|
82
|
+
|
|
83
|
+
[tool.setuptools_scm]
|
|
84
|
+
version_file = "src/nxrefine/_version.py"
|
|
85
|
+
|
|
86
|
+
[tool.setuptools.package-data]
|
|
87
|
+
"nxrefine.julia" = ["*.jl"]
|
nxrefine-0.1.1/setup.cfg
ADDED