essdiffraction 26.5.1__tar.gz → 26.6.0__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.
Files changed (125) hide show
  1. {essdiffraction-26.5.1/src/essdiffraction.egg-info → essdiffraction-26.6.0}/PKG-INFO +22 -22
  2. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/README.md +1 -1
  3. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_templates/doc_version.html +1 -1
  4. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/about/index.md +2 -2
  5. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/api-reference/index.md +28 -0
  6. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/conf.py +1 -1
  7. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/index.md +7 -2
  8. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/dream/dream-make-wavelength-lookup-table.ipynb +5 -5
  9. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/dream/dream-powder-reduction.ipynb +1 -1
  10. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/index.md +1 -0
  11. essdiffraction-26.6.0/docs/user-guide/magic/index.md +4 -0
  12. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/pyproject.toml +20 -20
  13. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/beer/io.py +2 -2
  14. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/workflows.py +11 -3
  15. essdiffraction-26.6.0/src/ess/magic/__init__.py +19 -0
  16. essdiffraction-26.6.0/src/ess/magic/beamline.py +9 -0
  17. essdiffraction-26.6.0/src/ess/magic/data.py +10 -0
  18. essdiffraction-26.6.0/src/ess/magic/types.py +31 -0
  19. essdiffraction-26.6.0/src/ess/magic/workflow.py +23 -0
  20. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/types.py +1 -4
  21. {essdiffraction-26.5.1 → essdiffraction-26.6.0/src/essdiffraction.egg-info}/PKG-INFO +22 -22
  22. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/essdiffraction.egg-info/SOURCES.txt +7 -0
  23. essdiffraction-26.6.0/src/essdiffraction.egg-info/requires.txt +36 -0
  24. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/beer/mcstas_reduction_test.py +3 -0
  25. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/dream/geant4_reduction_test.py +76 -85
  26. essdiffraction-26.6.0/tests/magic/workflow_test.py +17 -0
  27. essdiffraction-26.5.1/src/essdiffraction.egg-info/requires.txt +0 -36
  28. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/.copier-answers.ess.yml +0 -0
  29. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/.copier-answers.yml +0 -0
  30. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/LICENSE +0 -0
  31. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/anaconda-icon.js +0 -0
  32. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/essdiffraction-search-logo.png +0 -0
  33. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/favicon.svg +0 -0
  34. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/logo-dark.svg +0 -0
  35. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/logo.svg +0 -0
  36. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/thumbnails/beer_mcstas_dark.svg +0 -0
  37. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/thumbnails/beer_mcstas_light.svg +0 -0
  38. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/thumbnails/dream_advanced_powder_reduction_dark.svg +0 -0
  39. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/thumbnails/dream_advanced_powder_reduction_light.svg +0 -0
  40. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/thumbnails/dream_basic_powder_reduction_dark.svg +0 -0
  41. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_static/thumbnails/dream_basic_powder_reduction_light.svg +0 -0
  42. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_templates/class-template.rst +0 -0
  43. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_templates/layout.html +0 -0
  44. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/_templates/module-template.rst +0 -0
  45. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/about/bibliography.rst +0 -0
  46. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/bibliography.bib +0 -0
  47. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/developer/coding-conventions.md +0 -0
  48. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/developer/dependency-management.md +0 -0
  49. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/developer/getting-started.md +0 -0
  50. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/developer/index.md +0 -0
  51. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/beer/beer_modulation_mcstas.ipynb +0 -0
  52. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/beer/index.md +0 -0
  53. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/common/index.md +0 -0
  54. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/common/vanadium_processing.ipynb +0 -0
  55. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/dream/dream-advanced-powder-reduction.ipynb +0 -0
  56. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/dream/dream-detector-diagnostics.ipynb +0 -0
  57. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/dream/dream-instrument-view.ipynb +0 -0
  58. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/dream/dream-visualize-absorption.ipynb +0 -0
  59. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/dream/index.md +0 -0
  60. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/dream/workflow-widget-dream.ipynb +0 -0
  61. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/installation.md +0 -0
  62. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/sns-instruments/POWGEN_data_reduction.ipynb +0 -0
  63. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/docs/user-guide/sns-instruments/index.md +0 -0
  64. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/resources/logo.svg +0 -0
  65. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/setup.cfg +0 -0
  66. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/beer/__init__.py +0 -0
  67. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/beer/clustering.py +0 -0
  68. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/beer/conversions.py +0 -0
  69. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/beer/data.py +0 -0
  70. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/beer/peakfinding.py +0 -0
  71. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/beer/types.py +0 -0
  72. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/beer/workflow.py +0 -0
  73. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/diffraction/__init__.py +0 -0
  74. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/diffraction/peaks.py +0 -0
  75. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/diffraction/py.typed +0 -0
  76. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/__init__.py +0 -0
  77. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/beamline.py +0 -0
  78. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/data.py +0 -0
  79. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/diagnostics.py +0 -0
  80. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/instrument_view.py +0 -0
  81. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/io/__init__.py +0 -0
  82. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/io/cif.py +0 -0
  83. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/io/geant4.py +0 -0
  84. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/parameters.py +0 -0
  85. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/dream/py.typed +0 -0
  86. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/__init__.py +0 -0
  87. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/_util.py +0 -0
  88. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/calibration.py +0 -0
  89. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/conversion.py +0 -0
  90. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/correction.py +0 -0
  91. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/filtering.py +0 -0
  92. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/grouping.py +0 -0
  93. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/logging.py +0 -0
  94. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/masking.py +0 -0
  95. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/py.typed +0 -0
  96. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/smoothing.py +0 -0
  97. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/transform.py +0 -0
  98. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/powder/workflow.py +0 -0
  99. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/snspowder/powgen/__init__.py +0 -0
  100. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/snspowder/powgen/beamline.py +0 -0
  101. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/snspowder/powgen/calibration.py +0 -0
  102. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/snspowder/powgen/data.py +0 -0
  103. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/snspowder/powgen/instrument_view.py +0 -0
  104. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/snspowder/powgen/peaks.py +0 -0
  105. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/ess/snspowder/powgen/workflow.py +0 -0
  106. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/essdiffraction.egg-info/dependency_links.txt +0 -0
  107. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/src/essdiffraction.egg-info/top_level.txt +0 -0
  108. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/conftest.py +0 -0
  109. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/diffraction/peaks_test.py +0 -0
  110. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/dream/diagnostics_test.py +0 -0
  111. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/dream/instrument_view_test.py +0 -0
  112. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/dream/io/cif_test.py +0 -0
  113. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/dream/io/geant4_test.py +0 -0
  114. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/dream/workflows/dream_generic_workflow_test.py +0 -0
  115. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/package_test.py +0 -0
  116. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/powder/conversion_test.py +0 -0
  117. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/powder/correction_test.py +0 -0
  118. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/powder/filtering_test.py +0 -0
  119. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/powder/transform_test.py +0 -0
  120. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/snspowder/powgen/load_test.py +0 -0
  121. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tests/snspowder/powgen/powgen_reduction_test.py +0 -0
  122. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tools/docs/beer-thumbnails.ipynb +0 -0
  123. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tools/docs/dream-thumbnails.ipynb +0 -0
  124. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tools/preprocess_pg3_files.ipynb +0 -0
  125. {essdiffraction-26.5.1 → essdiffraction-26.6.0}/tools/shrink_nexus.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: essdiffraction
3
- Version: 26.5.1
3
+ Version: 26.6.0
4
4
  Summary: Diffraction data reduction for the European Spallation Source
5
5
  Author: Scipp contributors
6
6
  License-Expression: BSD-3-Clause
7
- Project-URL: Bug Tracker, https://github.com/scipp/essdiffraction/issues
8
- Project-URL: Documentation, https://scipp.github.io/essdiffraction
9
- Project-URL: Source, https://github.com/scipp/essdiffraction
7
+ Project-URL: Bug Tracker, https://github.com/scipp/ess/issues
8
+ Project-URL: Documentation, https://scipp.github.io/ess/diffraction
9
+ Project-URL: Source, https://github.com/scipp/ess/tree/main/packages/essdiffraction
10
10
  Classifier: Intended Audience :: Science/Research
11
11
  Classifier: Natural Language :: English
12
12
  Classifier: Operating System :: OS Independent
@@ -21,8 +21,8 @@ Requires-Python: >=3.11
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
23
  Requires-Dist: dask>=2022.1.0
24
- Requires-Dist: essreduce>=26.4.0
25
- Requires-Dist: graphviz
24
+ Requires-Dist: essreduce>=26.6.0
25
+ Requires-Dist: graphviz>=0.20
26
26
  Requires-Dist: numpy>=2
27
27
  Requires-Dist: plopp>=26.2.0
28
28
  Requires-Dist: pythreejs>=2.4.1
@@ -32,33 +32,33 @@ Requires-Dist: scippneutron>=26.3.0
32
32
  Requires-Dist: scippnexus>=23.12.0
33
33
  Requires-Dist: tof>=25.12.0
34
34
  Requires-Dist: ncrystal[cif]>=4.1.0
35
- Requires-Dist: spglib!=2.7
35
+ Requires-Dist: spglib!=2.7,>=2.0.0
36
36
  Provides-Extra: test
37
37
  Requires-Dist: pandas>=2.1.2; extra == "test"
38
38
  Requires-Dist: pooch>=1.5; extra == "test"
39
39
  Requires-Dist: pytest>=7.0; extra == "test"
40
40
  Requires-Dist: ipywidgets>=8.1.7; extra == "test"
41
41
  Provides-Extra: docs
42
- Requires-Dist: autodoc-pydantic; extra == "docs"
43
- Requires-Dist: ipykernel; extra == "docs"
44
- Requires-Dist: ipympl; extra == "docs"
45
- Requires-Dist: ipython!=8.7.0; extra == "docs"
46
- Requires-Dist: myst-parser; extra == "docs"
47
- Requires-Dist: nbsphinx; extra == "docs"
48
- Requires-Dist: pandas; extra == "docs"
49
- Requires-Dist: pooch; extra == "docs"
42
+ Requires-Dist: autodoc-pydantic>=2.0.0; extra == "docs"
43
+ Requires-Dist: ipykernel>=6.20.0; extra == "docs"
44
+ Requires-Dist: ipympl>=0.9.0; extra == "docs"
45
+ Requires-Dist: ipython!=8.7.0,>=8.8.0; extra == "docs"
46
+ Requires-Dist: myst-parser>=2.0.0; extra == "docs"
47
+ Requires-Dist: nbsphinx>=0.9.3; extra == "docs"
48
+ Requires-Dist: pandas>=2.1.2; extra == "docs"
49
+ Requires-Dist: pooch>=1.5; extra == "docs"
50
50
  Requires-Dist: pydata-sphinx-theme>=0.14; extra == "docs"
51
- Requires-Dist: sphinx; extra == "docs"
52
- Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
53
- Requires-Dist: sphinx-copybutton; extra == "docs"
54
- Requires-Dist: sphinx-design; extra == "docs"
55
- Requires-Dist: sphinxcontrib-bibtex; extra == "docs"
56
- Requires-Dist: pyarrow; extra == "docs"
51
+ Requires-Dist: sphinx>=7; extra == "docs"
52
+ Requires-Dist: sphinx-autodoc-typehints>=1.24.0; extra == "docs"
53
+ Requires-Dist: sphinx-copybutton>=0.5.2; extra == "docs"
54
+ Requires-Dist: sphinx-design>=0.5.0; extra == "docs"
55
+ Requires-Dist: sphinxcontrib-bibtex>=2.5.0; extra == "docs"
56
+ Requires-Dist: pyarrow>=12.0.0; extra == "docs"
57
57
  Dynamic: license-file
58
58
 
59
59
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
60
60
  [![PyPI badge](http://img.shields.io/pypi/v/essdiffraction.svg)](https://pypi.python.org/pypi/essdiffraction)
61
- [![Anaconda-Server Badge](https://anaconda.org/conda-forge/essdiffraction/badges/version.svg)](https://anaconda.org/conda-forge/essdiffraction)
61
+ [![Conda Badge](https://img.shields.io/conda/v/conda-forge/essdiffraction)](https://anaconda.org/conda-forge/essdiffraction)
62
62
  [![License: BSD 3-Clause](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](LICENSE)
63
63
 
64
64
  # ESSdiffraction
@@ -1,6 +1,6 @@
1
1
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
2
2
  [![PyPI badge](http://img.shields.io/pypi/v/essdiffraction.svg)](https://pypi.python.org/pypi/essdiffraction)
3
- [![Anaconda-Server Badge](https://anaconda.org/conda-forge/essdiffraction/badges/version.svg)](https://anaconda.org/conda-forge/essdiffraction)
3
+ [![Conda Badge](https://img.shields.io/conda/v/conda-forge/essdiffraction)](https://anaconda.org/conda-forge/essdiffraction)
4
4
  [![License: BSD 3-Clause](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](LICENSE)
5
5
 
6
6
  # ESSdiffraction
@@ -1,2 +1,2 @@
1
1
  <!-- This will display the version of the docs -->
2
- Current ESSdiffraction version: {{ version }} (<a href="https://github.com/scipp/essdiffraction/releases">older versions</a>).
2
+ Current ESSdiffraction version: {{ version }} (<a href="https://github.com/scipp/ess/releases?q=essdiffraction">older versions</a>).
@@ -18,12 +18,12 @@ To cite a specific version of ESSdiffraction, select the desired version on Zeno
18
18
 
19
19
  ## Older versions of the documentation
20
20
 
21
- Older versions of the documentation pages can be found under the assets of each [release](https://github.com/scipp/essdiffraction/releases).
21
+ Older versions of the documentation pages can be found under the assets of each [release](https://github.com/scipp/ess/releases?q=essdiffraction).
22
22
  Simply download the archive, unzip and view locally in a web browser.
23
23
 
24
24
  ## Source code and development
25
25
 
26
- ESSdiffraction is hosted and developed [on GitHub](https://github.com/scipp/essdiffraction).
26
+ ESSdiffraction is hosted and developed [on GitHub](https://github.com/scipp/ess/tree/main/packages/essdiffraction).
27
27
 
28
28
  ```{toctree}
29
29
  ---
@@ -140,6 +140,34 @@
140
140
  workflow
141
141
  ```
142
142
 
143
+ ## MAGIC
144
+
145
+ ### Workflows
146
+
147
+
148
+ ```{eval-rst}
149
+ .. currentmodule:: ess.magic
150
+
151
+ .. autosummary::
152
+ :toctree: ../generated/functions
153
+
154
+ MagicWorkflow
155
+ ```
156
+
157
+ ### Submodules
158
+
159
+ ```{eval-rst}
160
+ .. autosummary::
161
+ :toctree: ../generated/modules
162
+ :template: module-template.rst
163
+ :recursive:
164
+
165
+ beamline
166
+ data
167
+ types
168
+ workflow
169
+ ```
170
+
143
171
  ## SNS powder
144
172
 
145
173
  ```{eval-rst}
@@ -191,7 +191,7 @@ html_theme_options = {
191
191
  "icon_links": [
192
192
  {
193
193
  "name": "GitHub",
194
- "url": "https://github.com/scipp/essdiffraction",
194
+ "url": "https://github.com/scipp/ess/tree/main/packages/essdiffraction",
195
195
  "icon": "fa-brands fa-github",
196
196
  "type": "fontawesome",
197
197
  },
@@ -43,6 +43,11 @@
43
43
 
44
44
  :::
45
45
 
46
+ :::{grid-item-card} MAGIC
47
+ :link: user-guide/magic/index.md
48
+
49
+ :::
50
+
46
51
  :::{grid-item-card} SNS instruments
47
52
  :link: user-guide/sns-instruments/index.md
48
53
 
@@ -61,8 +66,8 @@
61
66
 
62
67
  ## Get in touch
63
68
 
64
- - If you have questions that are not answered by these documentation pages, ask on [discussions](https://github.com/scipp/essdiffraction/discussions). Please include a self-contained reproducible example if possible.
65
- - Report bugs (including unclear, missing, or wrong documentation!), suggest features or view the source code [on GitHub](https://github.com/scipp/essdiffraction).
69
+ - If you have questions that are not answered by these documentation pages, ask on [discussions](https://github.com/scipp/ess/discussions). Please include a self-contained reproducible example if possible.
70
+ - Report bugs (including unclear, missing, or wrong documentation!), suggest features or view the source code [on GitHub](https://github.com/scipp/ess/tree/main/packages/essdiffraction).
66
71
 
67
72
  ```{toctree}
68
73
  ---
@@ -18,8 +18,9 @@
18
18
  "outputs": [],
19
19
  "source": [
20
20
  "import scipp as sc\n",
21
+ "import scippnexus as snx\n",
21
22
  "from ess.reduce import unwrap\n",
22
- "from ess.reduce.nexus.types import AnyRun\n",
23
+ "from ess.reduce.nexus.types import AnyRun, Position\n",
23
24
  "from ess.dream.beamline import InstrumentConfiguration, choppers"
24
25
  ]
25
26
  },
@@ -62,14 +63,13 @@
62
63
  "source": [
63
64
  "wf = unwrap.LookupTableWorkflow()\n",
64
65
  "\n",
65
- "wf[unwrap.LtotalRange] = sc.scalar(5.0, unit=\"m\"), sc.scalar(80.0, unit=\"m\")\n",
66
+ "wf[unwrap.LtotalRange[AnyRun, snx.NXdetector]] = sc.scalar(5.0, unit=\"m\"), sc.scalar(80.0, unit=\"m\")\n",
66
67
  "wf[unwrap.NumberOfSimulatedNeutrons] = 200_000 # Increase this number for more reliable results\n",
67
- "wf[unwrap.SourcePosition] = sc.vector([0, 0, 0], unit='m')\n",
68
+ "wf[Position[snx.NXsource, AnyRun]] = sc.vector([0, 0, 0], unit='m')\n",
68
69
  "wf[unwrap.DiskChoppers[AnyRun]] = disk_choppers\n",
69
70
  "wf[unwrap.DistanceResolution] = sc.scalar(0.1, unit=\"m\")\n",
70
71
  "wf[unwrap.TimeResolution] = sc.scalar(250.0, unit='us')\n",
71
72
  "wf[unwrap.PulsePeriod] = 1.0 / sc.scalar(14.0, unit=\"Hz\")\n",
72
- "wf[unwrap.PulseStride] = 1\n",
73
73
  "wf[unwrap.PulseStrideOffset] = None"
74
74
  ]
75
75
  },
@@ -88,7 +88,7 @@
88
88
  "metadata": {},
89
89
  "outputs": [],
90
90
  "source": [
91
- "table = wf.compute(unwrap.LookupTable)\n",
91
+ "table = wf.compute(unwrap.LookupTable[AnyRun, snx.NXdetector])\n",
92
92
  "table.array"
93
93
  ]
94
94
  },
@@ -165,7 +165,7 @@
165
165
  "source": [
166
166
  "cif_data.comment = \"\"\"This file was generated with the basic DREAM data reduction user guide\n",
167
167
  "in the documentation of ESSdiffraction.\n",
168
- "See https://scipp.github.io/essdiffraction/\n",
168
+ "See https://scipp.github.io/ess/diffraction/\n",
169
169
  "\"\"\"\n",
170
170
  "cif_data.save(\"reduced.cif\")"
171
171
  ]
@@ -8,6 +8,7 @@ maxdepth: 1
8
8
  installation
9
9
  dream/index
10
10
  beer/index
11
+ magic/index
11
12
  sns-instruments/index
12
13
  common/index
13
14
  ```
@@ -0,0 +1,4 @@
1
+ # MAGIC
2
+
3
+ MAGIC — **Mag**netism Single-Crystal Diffractometer — is an ESS polarised
4
+ time-of-flight single-crystal diffractometer for studying magnetic structures.
@@ -30,8 +30,8 @@ requires-python = ">=3.11"
30
30
  # Make sure to list one dependency per line.
31
31
  dependencies = [
32
32
  "dask>=2022.1.0",
33
- "essreduce>=26.4.0",
34
- "graphviz",
33
+ "essreduce>=26.6.0",
34
+ "graphviz>=0.20",
35
35
  "numpy>=2",
36
36
  "plopp>=26.2.0",
37
37
  "pythreejs>=2.4.1",
@@ -41,7 +41,7 @@ dependencies = [
41
41
  "scippnexus>=23.12.0",
42
42
  "tof>=25.12.0",
43
43
  "ncrystal[cif]>=4.1.0",
44
- "spglib!=2.7", # https://github.com/mctools/ncrystal/issues/320
44
+ "spglib>=2.0.0,!=2.7", # https://github.com/mctools/ncrystal/issues/320
45
45
  ]
46
46
 
47
47
  dynamic = ["version"]
@@ -54,29 +54,29 @@ test = [
54
54
  "ipywidgets>=8.1.7",
55
55
  ]
56
56
  docs = [
57
- "autodoc-pydantic",
58
- "ipykernel",
59
- "ipympl",
57
+ "autodoc-pydantic>=2.0.0",
58
+ "ipykernel>=6.20.0",
59
+ "ipympl>=0.9.0",
60
60
  # Breaks syntax highlighting in Jupyter code cells.
61
- "ipython!=8.7.0",
62
- "myst-parser",
63
- "nbsphinx",
64
- "pandas",
65
- "pooch",
61
+ "ipython>=8.8.0,!=8.7.0",
62
+ "myst-parser>=2.0.0",
63
+ "nbsphinx>=0.9.3",
64
+ "pandas>=2.1.2",
65
+ "pooch>=1.5",
66
66
  "pydata-sphinx-theme>=0.14",
67
- "sphinx",
68
- "sphinx-autodoc-typehints",
69
- "sphinx-copybutton",
70
- "sphinx-design",
71
- "sphinxcontrib-bibtex",
67
+ "sphinx>=7",
68
+ "sphinx-autodoc-typehints>=1.24.0",
69
+ "sphinx-copybutton>=0.5.2",
70
+ "sphinx-design>=0.5.0",
71
+ "sphinxcontrib-bibtex>=2.5.0",
72
72
  # needed by pandas < 3.0
73
- "pyarrow",
73
+ "pyarrow>=12.0.0",
74
74
  ]
75
75
 
76
76
  [project.urls]
77
- "Bug Tracker" = "https://github.com/scipp/essdiffraction/issues"
78
- "Documentation" = "https://scipp.github.io/essdiffraction"
79
- "Source" = "https://github.com/scipp/essdiffraction"
77
+ "Bug Tracker" = "https://github.com/scipp/ess/issues"
78
+ "Documentation" = "https://scipp.github.io/ess/diffraction"
79
+ "Source" = "https://github.com/scipp/ess/tree/main/packages/essdiffraction"
80
80
 
81
81
  [tool.setuptools_scm]
82
82
  root = "../.."
@@ -209,7 +209,7 @@ def _load_beer_mcstas(f, *, north_or_south=None, number=None, detector_sizes):
209
209
  positions['MCC'],
210
210
  )
211
211
  data = (
212
- next(_find_all_h5(data_dir, f'.*{north_or_south}{number}'))
212
+ next(_find_all_h5(data_dir, f'.*{north_or_south}{number}_events'))
213
213
  if north_or_south is not None and number is not None
214
214
  else next(_find_all_h5(data_dir, f'.*{north_or_south}'))
215
215
  if north_or_south is not None
@@ -222,7 +222,7 @@ def _load_beer_mcstas(f, *, north_or_south=None, number=None, detector_sizes):
222
222
  ]
223
223
  detector_rotation = _find_h5(
224
224
  f['/entry1/instrument/components'],
225
- f'.*nD_Mantid_?{north_or_south}_{number}.*'
225
+ f'.*nD_Mantid_?{north_or_south}_{number}$'
226
226
  if north_or_south is not None and number is not None
227
227
  else f'.*nD_Mantid_?{north_or_south}.*'
228
228
  if north_or_south is not None
@@ -32,7 +32,7 @@ from scippneutron.metadata import Software
32
32
 
33
33
  from ess.reduce.nexus.types import DetectorBankSizes, NeXusName
34
34
  from ess.reduce.parameter import parameter_mappers
35
- from ess.reduce.unwrap import GenericUnwrapWorkflow
35
+ from ess.reduce.unwrap import GenericUnwrapWorkflow, WavelengthLutMode
36
36
  from ess.reduce.workflow import register_workflow
37
37
 
38
38
  from .beamline import InstrumentConfiguration
@@ -97,7 +97,9 @@ def _collect_reducer_software() -> ReducerSoftware:
97
97
  )
98
98
 
99
99
 
100
- def DreamWorkflow(**kwargs) -> sciline.Pipeline:
100
+ def DreamWorkflow(
101
+ wavelength_from: WavelengthLutMode = "file", **kwargs
102
+ ) -> sciline.Pipeline:
101
103
  """
102
104
  Dream generic workflow with default parameters.
103
105
  The workflow is based on the GenericUnwrapWorkflow.
@@ -109,6 +111,10 @@ def DreamWorkflow(**kwargs) -> sciline.Pipeline:
109
111
 
110
112
  Parameters
111
113
  ----------
114
+ wavelength_from:
115
+ Mode for creating the wavelength lookup table. Possible values are
116
+ 'analytical', 'simulation', and 'file'. See
117
+ https://scipp.github.io/ess/reduce/user-guide/unwrap/lut-building-methods.html
112
118
  kwargs:
113
119
  Additional keyword arguments are forwarded to the base
114
120
  :func:`GenericUnwrapWorkflow`.
@@ -116,12 +122,14 @@ def DreamWorkflow(**kwargs) -> sciline.Pipeline:
116
122
  wf = GenericUnwrapWorkflow(
117
123
  run_types=[SampleRun, VanadiumRun, EmptyCanRun],
118
124
  monitor_types=[BunkerMonitor, CaveMonitor],
125
+ wavelength_from=wavelength_from,
119
126
  **kwargs,
120
127
  )
121
128
  wf[DetectorBankSizes] = DETECTOR_BANK_SIZES
122
129
  wf[NeXusName[BunkerMonitor]] = "monitor_bunker"
123
130
  wf[NeXusName[CaveMonitor]] = "monitor_cave"
124
- wf.insert(_get_lookup_table_filename_from_configuration)
131
+ if wavelength_from == "file":
132
+ wf.insert(_get_lookup_table_filename_from_configuration)
125
133
  wf[ReducerSoftware] = _collect_reducer_software()
126
134
  wf[LookupTableRelativeErrorThreshold] = {
127
135
  "endcap_backward_detector": float('inf'),
@@ -0,0 +1,19 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ # Copyright (c) 2026 Scipp contributors (https://github.com/scipp)
3
+
4
+ import importlib.metadata
5
+
6
+ from .workflow import MagicWorkflow, default_parameters
7
+
8
+ try:
9
+ __version__ = importlib.metadata.version("essdiffraction")
10
+ except importlib.metadata.PackageNotFoundError:
11
+ __version__ = "0.0.0"
12
+
13
+ del importlib
14
+
15
+ __all__ = [
16
+ 'MagicWorkflow',
17
+ '__version__',
18
+ 'default_parameters',
19
+ ]
@@ -0,0 +1,9 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ # Copyright (c) 2026 Scipp contributors (https://github.com/scipp)
3
+ """Geometry and default parameters for MAGIC."""
4
+
5
+ DETECTOR_BANK_SIZES: dict[str, dict[str, int]] = {
6
+ 'detector_a': {},
7
+ 'detector_b': {},
8
+ }
9
+ """Names and dimensions are placeholders."""
@@ -0,0 +1,10 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ # Copyright (c) 2026 Scipp contributors (https://github.com/scipp)
3
+
4
+ from ess.reduce.data import make_registry
5
+
6
+ _registry = make_registry(
7
+ "ess/magic",
8
+ version="1",
9
+ files={},
10
+ )
@@ -0,0 +1,31 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ # Copyright (c) 2026 Scipp contributors (https://github.com/scipp)
3
+
4
+ from enum import Enum
5
+ from typing import NewType
6
+
7
+ import scipp as sc
8
+
9
+ from ess.reduce.nexus.types import Filename, RawDetector, RunType, SampleRun
10
+
11
+ RawDetector = RawDetector
12
+ Filename = Filename
13
+ RunType = RunType
14
+ SampleRun = SampleRun
15
+
16
+
17
+ class DetectorBank(Enum):
18
+ detector_a = 'detector_a'
19
+ detector_b = 'detector_b'
20
+
21
+
22
+ class PolarizationState(Enum):
23
+ up = 'up'
24
+ down = 'down'
25
+
26
+
27
+ IncidentPolarization = NewType("IncidentPolarization", sc.Variable)
28
+ """Polarisation of the incident beam."""
29
+
30
+ ScatteredPolarization = NewType("ScatteredPolarization", sc.Variable)
31
+ """Polarisation of the scattered beam (polarisation analysis mode)."""
@@ -0,0 +1,23 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ # Copyright (c) 2026 Scipp contributors (https://github.com/scipp)
3
+
4
+ import sciline as sl
5
+
6
+ from ess.reduce.nexus.types import DetectorBankSizes
7
+
8
+ from .beamline import DETECTOR_BANK_SIZES
9
+
10
+ default_parameters = {
11
+ DetectorBankSizes: DETECTOR_BANK_SIZES,
12
+ }
13
+
14
+
15
+ def MagicWorkflow() -> sl.Pipeline:
16
+ """Workflow for the MAGIC single-crystal magnetism diffractometer.
17
+
18
+ This is currently a placeholder skeleton: it registers default beamline
19
+ parameters but provides no reduction providers yet. Single-crystal and
20
+ polarisation-analysis providers will be added as the MAGIC reduction
21
+ pipeline is developed.
22
+ """
23
+ return sl.Pipeline(providers=(), params=default_parameters)
@@ -33,6 +33,7 @@ NeXusDetectorName = reduce_t.NeXusDetectorName
33
33
  NeXusMonitorName = reduce_t.NeXusName
34
34
  NeXusComponent = reduce_t.NeXusComponent
35
35
  Position = reduce_t.Position
36
+ ProtonCharge = reduce_t.ProtonCharge
36
37
 
37
38
  DetectorBankSizes = reduce_t.DetectorBankSizes
38
39
 
@@ -191,10 +192,6 @@ PixelMaskFilename = NewType("PixelMaskFilename", str)
191
192
  """Filename of a pixel mask."""
192
193
 
193
194
 
194
- class ProtonCharge(sciline.Scope[RunType, sc.DataArray], sc.DataArray):
195
- """Time-dependent proton charge."""
196
-
197
-
198
195
  class RawDataAndMetadata(sciline.Scope[RunType, sc.DataGroup], sc.DataGroup):
199
196
  """Raw data and associated metadata."""
200
197
 
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: essdiffraction
3
- Version: 26.5.1
3
+ Version: 26.6.0
4
4
  Summary: Diffraction data reduction for the European Spallation Source
5
5
  Author: Scipp contributors
6
6
  License-Expression: BSD-3-Clause
7
- Project-URL: Bug Tracker, https://github.com/scipp/essdiffraction/issues
8
- Project-URL: Documentation, https://scipp.github.io/essdiffraction
9
- Project-URL: Source, https://github.com/scipp/essdiffraction
7
+ Project-URL: Bug Tracker, https://github.com/scipp/ess/issues
8
+ Project-URL: Documentation, https://scipp.github.io/ess/diffraction
9
+ Project-URL: Source, https://github.com/scipp/ess/tree/main/packages/essdiffraction
10
10
  Classifier: Intended Audience :: Science/Research
11
11
  Classifier: Natural Language :: English
12
12
  Classifier: Operating System :: OS Independent
@@ -21,8 +21,8 @@ Requires-Python: >=3.11
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
23
  Requires-Dist: dask>=2022.1.0
24
- Requires-Dist: essreduce>=26.4.0
25
- Requires-Dist: graphviz
24
+ Requires-Dist: essreduce>=26.6.0
25
+ Requires-Dist: graphviz>=0.20
26
26
  Requires-Dist: numpy>=2
27
27
  Requires-Dist: plopp>=26.2.0
28
28
  Requires-Dist: pythreejs>=2.4.1
@@ -32,33 +32,33 @@ Requires-Dist: scippneutron>=26.3.0
32
32
  Requires-Dist: scippnexus>=23.12.0
33
33
  Requires-Dist: tof>=25.12.0
34
34
  Requires-Dist: ncrystal[cif]>=4.1.0
35
- Requires-Dist: spglib!=2.7
35
+ Requires-Dist: spglib!=2.7,>=2.0.0
36
36
  Provides-Extra: test
37
37
  Requires-Dist: pandas>=2.1.2; extra == "test"
38
38
  Requires-Dist: pooch>=1.5; extra == "test"
39
39
  Requires-Dist: pytest>=7.0; extra == "test"
40
40
  Requires-Dist: ipywidgets>=8.1.7; extra == "test"
41
41
  Provides-Extra: docs
42
- Requires-Dist: autodoc-pydantic; extra == "docs"
43
- Requires-Dist: ipykernel; extra == "docs"
44
- Requires-Dist: ipympl; extra == "docs"
45
- Requires-Dist: ipython!=8.7.0; extra == "docs"
46
- Requires-Dist: myst-parser; extra == "docs"
47
- Requires-Dist: nbsphinx; extra == "docs"
48
- Requires-Dist: pandas; extra == "docs"
49
- Requires-Dist: pooch; extra == "docs"
42
+ Requires-Dist: autodoc-pydantic>=2.0.0; extra == "docs"
43
+ Requires-Dist: ipykernel>=6.20.0; extra == "docs"
44
+ Requires-Dist: ipympl>=0.9.0; extra == "docs"
45
+ Requires-Dist: ipython!=8.7.0,>=8.8.0; extra == "docs"
46
+ Requires-Dist: myst-parser>=2.0.0; extra == "docs"
47
+ Requires-Dist: nbsphinx>=0.9.3; extra == "docs"
48
+ Requires-Dist: pandas>=2.1.2; extra == "docs"
49
+ Requires-Dist: pooch>=1.5; extra == "docs"
50
50
  Requires-Dist: pydata-sphinx-theme>=0.14; extra == "docs"
51
- Requires-Dist: sphinx; extra == "docs"
52
- Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
53
- Requires-Dist: sphinx-copybutton; extra == "docs"
54
- Requires-Dist: sphinx-design; extra == "docs"
55
- Requires-Dist: sphinxcontrib-bibtex; extra == "docs"
56
- Requires-Dist: pyarrow; extra == "docs"
51
+ Requires-Dist: sphinx>=7; extra == "docs"
52
+ Requires-Dist: sphinx-autodoc-typehints>=1.24.0; extra == "docs"
53
+ Requires-Dist: sphinx-copybutton>=0.5.2; extra == "docs"
54
+ Requires-Dist: sphinx-design>=0.5.0; extra == "docs"
55
+ Requires-Dist: sphinxcontrib-bibtex>=2.5.0; extra == "docs"
56
+ Requires-Dist: pyarrow>=12.0.0; extra == "docs"
57
57
  Dynamic: license-file
58
58
 
59
59
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
60
60
  [![PyPI badge](http://img.shields.io/pypi/v/essdiffraction.svg)](https://pypi.python.org/pypi/essdiffraction)
61
- [![Anaconda-Server Badge](https://anaconda.org/conda-forge/essdiffraction/badges/version.svg)](https://anaconda.org/conda-forge/essdiffraction)
61
+ [![Conda Badge](https://img.shields.io/conda/v/conda-forge/essdiffraction)](https://anaconda.org/conda-forge/essdiffraction)
62
62
  [![License: BSD 3-Clause](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](LICENSE)
63
63
 
64
64
  # ESSdiffraction
@@ -42,6 +42,7 @@ docs/user-guide/dream/dream-powder-reduction.ipynb
42
42
  docs/user-guide/dream/dream-visualize-absorption.ipynb
43
43
  docs/user-guide/dream/index.md
44
44
  docs/user-guide/dream/workflow-widget-dream.ipynb
45
+ docs/user-guide/magic/index.md
45
46
  docs/user-guide/sns-instruments/POWGEN_data_reduction.ipynb
46
47
  docs/user-guide/sns-instruments/index.md
47
48
  resources/logo.svg
@@ -67,6 +68,11 @@ src/ess/dream/workflows.py
67
68
  src/ess/dream/io/__init__.py
68
69
  src/ess/dream/io/cif.py
69
70
  src/ess/dream/io/geant4.py
71
+ src/ess/magic/__init__.py
72
+ src/ess/magic/beamline.py
73
+ src/ess/magic/data.py
74
+ src/ess/magic/types.py
75
+ src/ess/magic/workflow.py
70
76
  src/ess/powder/__init__.py
71
77
  src/ess/powder/_util.py
72
78
  src/ess/powder/calibration.py
@@ -103,6 +109,7 @@ tests/dream/instrument_view_test.py
103
109
  tests/dream/io/cif_test.py
104
110
  tests/dream/io/geant4_test.py
105
111
  tests/dream/workflows/dream_generic_workflow_test.py
112
+ tests/magic/workflow_test.py
106
113
  tests/powder/conversion_test.py
107
114
  tests/powder/correction_test.py
108
115
  tests/powder/filtering_test.py
@@ -0,0 +1,36 @@
1
+ dask>=2022.1.0
2
+ essreduce>=26.6.0
3
+ graphviz>=0.20
4
+ numpy>=2
5
+ plopp>=26.2.0
6
+ pythreejs>=2.4.1
7
+ sciline>=25.04.1
8
+ scipp>=25.11.0
9
+ scippneutron>=26.3.0
10
+ scippnexus>=23.12.0
11
+ tof>=25.12.0
12
+ ncrystal[cif]>=4.1.0
13
+ spglib!=2.7,>=2.0.0
14
+
15
+ [docs]
16
+ autodoc-pydantic>=2.0.0
17
+ ipykernel>=6.20.0
18
+ ipympl>=0.9.0
19
+ ipython!=8.7.0,>=8.8.0
20
+ myst-parser>=2.0.0
21
+ nbsphinx>=0.9.3
22
+ pandas>=2.1.2
23
+ pooch>=1.5
24
+ pydata-sphinx-theme>=0.14
25
+ sphinx>=7
26
+ sphinx-autodoc-typehints>=1.24.0
27
+ sphinx-copybutton>=0.5.2
28
+ sphinx-design>=0.5.0
29
+ sphinxcontrib-bibtex>=2.5.0
30
+ pyarrow>=12.0.0
31
+
32
+ [test]
33
+ pandas>=2.1.2
34
+ pooch>=1.5
35
+ pytest>=7.0
36
+ ipywidgets>=8.1.7
@@ -105,6 +105,9 @@ def test_can_load_3d_detector():
105
105
  mcstas_few_neutrons_3d_detector_example(), DetectorBank.south, sizes
106
106
  )
107
107
  assert 'panel' in da.dims
108
+ # Detector position.x is monotone in panel dimension.
109
+ panel_x_diff = np.diff(da.coords['detector_position'].fields.x.values)
110
+ assert (panel_x_diff > 0).all() or (panel_x_diff < 0).all()
108
111
 
109
112
 
110
113
  def test_can_load_monitor():