essdiffraction 26.4.1__tar.gz → 26.5.2__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 (164) hide show
  1. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/LICENSE +1 -1
  2. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/PKG-INFO +21 -5
  3. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/README.md +1 -1
  4. essdiffraction-26.5.2/docs/_static/essdiffraction-search-logo.png +0 -0
  5. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_templates/doc_version.html +1 -1
  6. essdiffraction-26.5.2/docs/_templates/layout.html +5 -0
  7. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/about/index.md +2 -2
  8. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/api-reference/index.md +28 -0
  9. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/conf.py +1 -1
  10. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/index.md +7 -2
  11. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/beer/beer_modulation_mcstas.ipynb +2 -2
  12. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/common/vanadium_processing.ipynb +2 -2
  13. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/dream/dream-powder-reduction.ipynb +2 -2
  14. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/dream/workflow-widget-dream.ipynb +1 -1
  15. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/index.md +1 -0
  16. essdiffraction-26.5.2/docs/user-guide/magic/index.md +4 -0
  17. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/pyproject.toml +25 -49
  18. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/beer/clustering.py +1 -2
  19. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/beer/conversions.py +1 -2
  20. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/beer/io.py +57 -14
  21. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/beer/workflow.py +6 -5
  22. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/diffraction/__init__.py +0 -1
  23. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/io/cif.py +1 -2
  24. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/io/geant4.py +1 -2
  25. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/parameters.py +1 -0
  26. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/workflows.py +3 -2
  27. essdiffraction-26.5.2/src/ess/magic/__init__.py +19 -0
  28. essdiffraction-26.5.2/src/ess/magic/beamline.py +9 -0
  29. essdiffraction-26.5.2/src/ess/magic/data.py +10 -0
  30. essdiffraction-26.5.2/src/ess/magic/types.py +31 -0
  31. essdiffraction-26.5.2/src/ess/magic/workflow.py +23 -0
  32. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/types.py +1 -4
  33. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/snspowder/powgen/workflow.py +2 -1
  34. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/essdiffraction.egg-info/PKG-INFO +21 -5
  35. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/essdiffraction.egg-info/SOURCES.txt +10 -41
  36. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/essdiffraction.egg-info/requires.txt +17 -0
  37. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/beer/mcstas_reduction_test.py +38 -6
  38. essdiffraction-26.4.1/tests/diffraction/test_peaks.py → essdiffraction-26.5.2/tests/diffraction/peaks_test.py +0 -1
  39. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/dream/geant4_reduction_test.py +4 -4
  40. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/dream/instrument_view_test.py +0 -1
  41. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/dream/io/cif_test.py +3 -4
  42. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/dream/io/geant4_test.py +0 -1
  43. essdiffraction-26.5.2/tests/magic/workflow_test.py +17 -0
  44. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/powder/conversion_test.py +0 -1
  45. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/powder/correction_test.py +0 -1
  46. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/powder/filtering_test.py +0 -1
  47. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/powder/transform_test.py +1 -2
  48. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/snspowder/powgen/load_test.py +0 -1
  49. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/snspowder/powgen/powgen_reduction_test.py +6 -5
  50. essdiffraction-26.4.1/.github/ISSUE_TEMPLATE/high-level-requirement.yml +0 -97
  51. essdiffraction-26.4.1/.github/dependabot.yml +0 -13
  52. essdiffraction-26.4.1/.github/workflows/ci.yml +0 -58
  53. essdiffraction-26.4.1/.github/workflows/docs.yml +0 -79
  54. essdiffraction-26.4.1/.github/workflows/nightly_at_main.yml +0 -35
  55. essdiffraction-26.4.1/.github/workflows/nightly_at_main_lower_bound.yml +0 -37
  56. essdiffraction-26.4.1/.github/workflows/nightly_at_release.yml +0 -42
  57. essdiffraction-26.4.1/.github/workflows/python-version-ci +0 -1
  58. essdiffraction-26.4.1/.github/workflows/release.yml +0 -73
  59. essdiffraction-26.4.1/.github/workflows/test.yml +0 -90
  60. essdiffraction-26.4.1/.github/workflows/unpinned.yml +0 -41
  61. essdiffraction-26.4.1/.github/workflows/weekly_windows_macos.yml +0 -42
  62. essdiffraction-26.4.1/.gitignore +0 -48
  63. essdiffraction-26.4.1/.pre-commit-config.yaml +0 -55
  64. essdiffraction-26.4.1/.python-version +0 -1
  65. essdiffraction-26.4.1/CODE_OF_CONDUCT.md +0 -134
  66. essdiffraction-26.4.1/CONTRIBUTING.md +0 -20
  67. essdiffraction-26.4.1/MANIFEST.in +0 -1
  68. essdiffraction-26.4.1/requirements/base.in +0 -17
  69. essdiffraction-26.4.1/requirements/base.txt +0 -227
  70. essdiffraction-26.4.1/requirements/basetest.in +0 -13
  71. essdiffraction-26.4.1/requirements/basetest.txt +0 -87
  72. essdiffraction-26.4.1/requirements/ci.in +0 -4
  73. essdiffraction-26.4.1/requirements/ci.txt +0 -56
  74. essdiffraction-26.4.1/requirements/dev.in +0 -11
  75. essdiffraction-26.4.1/requirements/dev.txt +0 -123
  76. essdiffraction-26.4.1/requirements/docs.in +0 -18
  77. essdiffraction-26.4.1/requirements/docs.txt +0 -181
  78. essdiffraction-26.4.1/requirements/make_base.py +0 -78
  79. essdiffraction-26.4.1/requirements/mypy.in +0 -2
  80. essdiffraction-26.4.1/requirements/mypy.txt +0 -16
  81. essdiffraction-26.4.1/requirements/nightly.in +0 -23
  82. essdiffraction-26.4.1/requirements/nightly.txt +0 -245
  83. essdiffraction-26.4.1/requirements/static.in +0 -1
  84. essdiffraction-26.4.1/requirements/static.txt +0 -31
  85. essdiffraction-26.4.1/requirements/test.in +0 -4
  86. essdiffraction-26.4.1/requirements/test.txt +0 -9
  87. essdiffraction-26.4.1/requirements/wheels.in +0 -1
  88. essdiffraction-26.4.1/requirements/wheels.txt +0 -13
  89. essdiffraction-26.4.1/tox.ini +0 -76
  90. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/.copier-answers.ess.yml +0 -0
  91. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/.copier-answers.yml +0 -0
  92. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/anaconda-icon.js +0 -0
  93. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/favicon.svg +0 -0
  94. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/logo-dark.svg +0 -0
  95. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/logo.svg +0 -0
  96. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/thumbnails/beer_mcstas_dark.svg +0 -0
  97. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/thumbnails/beer_mcstas_light.svg +0 -0
  98. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/thumbnails/dream_advanced_powder_reduction_dark.svg +0 -0
  99. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/thumbnails/dream_advanced_powder_reduction_light.svg +0 -0
  100. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/thumbnails/dream_basic_powder_reduction_dark.svg +0 -0
  101. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_static/thumbnails/dream_basic_powder_reduction_light.svg +0 -0
  102. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_templates/class-template.rst +0 -0
  103. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/_templates/module-template.rst +0 -0
  104. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/about/bibliography.rst +0 -0
  105. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/bibliography.bib +0 -0
  106. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/developer/coding-conventions.md +0 -0
  107. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/developer/dependency-management.md +0 -0
  108. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/developer/getting-started.md +0 -0
  109. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/developer/index.md +0 -0
  110. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/beer/index.md +0 -0
  111. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/common/index.md +0 -0
  112. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/dream/dream-advanced-powder-reduction.ipynb +0 -0
  113. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/dream/dream-detector-diagnostics.ipynb +0 -0
  114. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/dream/dream-instrument-view.ipynb +0 -0
  115. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/dream/dream-make-wavelength-lookup-table.ipynb +0 -0
  116. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/dream/dream-visualize-absorption.ipynb +0 -0
  117. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/dream/index.md +0 -0
  118. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/installation.md +0 -0
  119. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/sns-instruments/POWGEN_data_reduction.ipynb +0 -0
  120. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/docs/user-guide/sns-instruments/index.md +0 -0
  121. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/resources/logo.svg +0 -0
  122. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/setup.cfg +0 -0
  123. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/beer/__init__.py +0 -0
  124. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/beer/data.py +0 -0
  125. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/beer/peakfinding.py +0 -0
  126. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/beer/types.py +0 -0
  127. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/diffraction/peaks.py +0 -0
  128. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/diffraction/py.typed +0 -0
  129. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/__init__.py +0 -0
  130. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/beamline.py +0 -0
  131. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/data.py +0 -0
  132. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/diagnostics.py +0 -0
  133. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/instrument_view.py +0 -0
  134. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/io/__init__.py +0 -0
  135. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/dream/py.typed +0 -0
  136. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/__init__.py +0 -0
  137. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/_util.py +0 -0
  138. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/calibration.py +0 -0
  139. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/conversion.py +0 -0
  140. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/correction.py +0 -0
  141. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/filtering.py +0 -0
  142. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/grouping.py +0 -0
  143. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/logging.py +0 -0
  144. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/masking.py +0 -0
  145. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/py.typed +0 -0
  146. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/smoothing.py +0 -0
  147. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/transform.py +0 -0
  148. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/powder/workflow.py +0 -0
  149. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/snspowder/powgen/__init__.py +0 -0
  150. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/snspowder/powgen/beamline.py +0 -0
  151. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/snspowder/powgen/calibration.py +0 -0
  152. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/snspowder/powgen/data.py +1 -1
  153. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/snspowder/powgen/instrument_view.py +0 -0
  154. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/ess/snspowder/powgen/peaks.py +0 -0
  155. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/essdiffraction.egg-info/dependency_links.txt +0 -0
  156. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/src/essdiffraction.egg-info/top_level.txt +0 -0
  157. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/conftest.py +0 -0
  158. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/dream/diagnostics_test.py +0 -0
  159. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/dream/workflows/dream_generic_workflow_test.py +2 -2
  160. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tests/package_test.py +0 -0
  161. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tools/docs/beer-thumbnails.ipynb +0 -0
  162. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tools/docs/dream-thumbnails.ipynb +0 -0
  163. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tools/preprocess_pg3_files.ipynb +0 -0
  164. {essdiffraction-26.4.1 → essdiffraction-26.5.2}/tools/shrink_nexus.py +0 -0
@@ -1,6 +1,6 @@
1
1
  BSD 3-Clause License
2
2
 
3
- Copyright (c) 2025, Scipp contributors (https://github.com/scipp)
3
+ Copyright (c) 2026, Scipp contributors (https://github.com/scipp)
4
4
  All rights reserved.
5
5
 
6
6
  Redistribution and use in source and binary forms, with or without
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: essdiffraction
3
- Version: 26.4.1
3
+ Version: 26.5.2
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
@@ -38,11 +38,27 @@ 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
+ 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"
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"
41
57
  Dynamic: license-file
42
58
 
43
59
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
44
60
  [![PyPI badge](http://img.shields.io/pypi/v/essdiffraction.svg)](https://pypi.python.org/pypi/essdiffraction)
45
- [![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)
46
62
  [![License: BSD 3-Clause](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](LICENSE)
47
63
 
48
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>).
@@ -0,0 +1,5 @@
1
+ {% extends "!layout.html" %}
2
+ {% block docs_body %}
3
+ <span data-pagefind-meta="image[data-url]" data-url="{{ pathto('_static/essdiffraction-search-logo.png', 1) }}" hidden></span>
4
+ {{ super() }}
5
+ {% endblock %}
@@ -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
  ---
@@ -40,7 +40,7 @@
40
40
  "source": [
41
41
  "## Beam modulation mode\n",
42
42
  "\n",
43
- "In the \"modulation mode\" the BEER instrument maximizes signal intensity while retaining wavelength resolution by utilizing choppers to create multiple pulses, each with well defined wavelenth, that reach the sample simultaneously.\n",
43
+ "In the \"modulation mode\" the BEER instrument maximizes signal intensity while retaining wavelength resolution by utilizing choppers to create multiple pulses, each with well-defined wavelength, that reach the sample simultaneously.\n",
44
44
  "The pulses can be distinguished in the detector data under the assumption that the peaks in $d_{hkl}$ are sufficiently well separated from each other.\n",
45
45
  "\n",
46
46
  "\n",
@@ -83,7 +83,7 @@
83
83
  "\n",
84
84
  "### Difference between modulation modes\n",
85
85
  "\n",
86
- "There are different modulation modes depending on the desired trade off between resolution and intensity.\n",
86
+ "There are different modulation modes depending on the desired trade-off between resolution and intensity.\n",
87
87
  "Below is a table describing the available modes.\n",
88
88
  "\n",
89
89
  "<table style=\"border-collapse: collapse; border: 1px solid #aaa; font-family: Arial, sans-serif; font-size: 14px;\">\n",
@@ -8,7 +8,7 @@
8
8
  "# Vanadium processing\n",
9
9
  "\n",
10
10
  "We normalize by vanadium measurements because vanadium scatters almost entirely incoherently.\n",
11
- "But there it does produce some coherent scattering peaks and those need to be removed before normalization.\n",
11
+ "But vanadium does produce some coherent scattering peaks, and those need to be removed before normalization.\n",
12
12
  "This notebook demonstrates how this can be done using ESSdiffraction and ScippNeutron.\n",
13
13
  "It uses the same data as the [POWGEN_data_reduction](../sns-instruments/POWGEN_data_reduction.rst) workflow.\n",
14
14
  "\n",
@@ -130,7 +130,7 @@
130
130
  "Even though the peaks are small for vanadium, we need to remove them to extract pure incoherent scattering.\n",
131
131
  "We can approximate the coherent scattering contribution by fitting functions to the peaks and subtracting those fitted functions.\n",
132
132
  "[scippneutron.peaks](https://scipp.github.io/scippneutron/generated/modules/scippneutron.peaks.html) contains general functionality for fitting and removing peaks.\n",
133
- "Here, we use it through [ess.snspowder.powgen.peaks](../../generated/modules/ess.snspowder.powgen.peaks.rst) which provides useful defaults for vanadium peaks at POWGEN.\n",
133
+ "Here, we use it through [ess.snspowder.powgen.peaks](../../generated/modules/ess.snspowder.powgen.peaks.rst), which provides useful defaults for vanadium peaks at POWGEN.\n",
134
134
  "For example, it selects appropriate models for peaks (gaussian) and backgrounds (linear and quadratic).\n",
135
135
  "\n",
136
136
  "First, define estimates for the peaks based on the known crystal structure of vanadium:"
@@ -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
  ]
@@ -207,7 +207,7 @@
207
207
  "\n",
208
208
  "---\n",
209
209
  "\n",
210
- "Next, consider reading [DREAM advanced powder data reduction](./dream-advanced-powder-reduction.rst) guide which demonstrates some builtin options for customizing the workflow and how to compute alternative results."
210
+ "Next, consider reading the [DREAM advanced powder data reduction](./dream-advanced-powder-reduction.rst) guide, which demonstrates some built-in options for customizing the workflow and how to compute alternative results."
211
211
  ]
212
212
  }
213
213
  ],
@@ -7,7 +7,7 @@
7
7
  "source": [
8
8
  "# Workflow widgets example\n",
9
9
  "\n",
10
- "This notebook illustrates how we can use ESSreduces [workflow widgets](https://scipp.github.io/essreduce/user-guide/widget.html) to generate a graphical interface for running the [DREAM GEANT4 workflow](./dream-powder-reduction.rst).\n",
10
+ "This notebook illustrates how we can use ESSreduce's [workflow widgets](https://scipp.github.io/essreduce/user-guide/widget.html) to generate a graphical interface for running the [DREAM GEANT4 workflow](./dream-powder-reduction.rst).\n",
11
11
  "\n",
12
12
  "## Initializing the GUI\n",
13
13
  "\n",
@@ -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.
@@ -10,7 +10,6 @@ name = "essdiffraction"
10
10
  description = "Diffraction data reduction for the European Spallation Source"
11
11
  authors = [{ name = "Scipp contributors" }]
12
12
  license = "BSD-3-Clause"
13
- license-files = ["LICENSE"]
14
13
  readme = "README.md"
15
14
  classifiers = [
16
15
  "Intended Audience :: Science/Research",
@@ -54,13 +53,35 @@ test = [
54
53
  "pytest>=7.0",
55
54
  "ipywidgets>=8.1.7",
56
55
  ]
56
+ docs = [
57
+ "autodoc-pydantic",
58
+ "ipykernel",
59
+ "ipympl",
60
+ # Breaks syntax highlighting in Jupyter code cells.
61
+ "ipython!=8.7.0",
62
+ "myst-parser",
63
+ "nbsphinx",
64
+ "pandas",
65
+ "pooch",
66
+ "pydata-sphinx-theme>=0.14",
67
+ "sphinx",
68
+ "sphinx-autodoc-typehints",
69
+ "sphinx-copybutton",
70
+ "sphinx-design",
71
+ "sphinxcontrib-bibtex",
72
+ # needed by pandas < 3.0
73
+ "pyarrow",
74
+ ]
57
75
 
58
76
  [project.urls]
59
- "Bug Tracker" = "https://github.com/scipp/essdiffraction/issues"
60
- "Documentation" = "https://scipp.github.io/essdiffraction"
61
- "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"
62
80
 
63
81
  [tool.setuptools_scm]
82
+ root = "../.."
83
+ tag_regex = "^essdiffraction/(?P<version>[vV]?\\d+(?:\\.\\d+)*(?:[._-]?\\w+)*)$"
84
+ git_describe_command = ["git", "describe", "--dirty", "--tags", "--long", "--match", "essdiffraction/*[0-9]*"]
64
85
 
65
86
  [tool.pytest.ini_options]
66
87
  minversion = "7.0"
@@ -79,43 +100,6 @@ filterwarnings = [
79
100
  'ignore:\s*Pyarrow will become a required dependency of pandas:DeprecationWarning',
80
101
  ]
81
102
 
82
- [tool.ruff]
83
- line-length = 88
84
- extend-include = ["*.ipynb"]
85
- extend-exclude = [
86
- ".*", "__pycache__", "build", "dist", "install",
87
- ]
88
-
89
- [tool.ruff.lint]
90
- # See https://docs.astral.sh/ruff/rules/
91
- select = ["B", "C4", "DTZ", "E", "F", "G", "I", "PERF", "PGH", "PT", "PYI", "RUF", "S", "T20", "UP", "W"]
92
- ignore = [
93
- # Conflict with ruff format, see
94
- # https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules
95
- "COM812", "COM819", "D206", "D300", "E111", "E114", "E117", "ISC001", "ISC002", "Q000", "Q001", "Q002", "Q003", "W191",
96
- ]
97
- fixable = ["B010", "I001", "PT001", "RUF022"]
98
- isort.known-first-party = ["ess.diffraction", "ess.dream", "ess.powder"]
99
- pydocstyle.convention = "numpy"
100
-
101
- [tool.ruff.lint.per-file-ignores]
102
- # those files have an increased risk of relying on import order
103
- "tests/*" = [
104
- "S101", # asserts are fine in tests
105
- "B018", # 'useless expressions' are ok because some tests just check for exceptions
106
- ]
107
- "*.ipynb" = [
108
- "E501", # longer lines are sometimes more readable
109
- "F403", # *-imports used with domain types
110
- "F405", # linter may fail to find names because of *-imports
111
- "I", # we don't collect imports at the top
112
- "S101", # asserts are used for demonstration and are safe in notebooks
113
- "T201", # printing is ok for demonstration purposes
114
- ]
115
-
116
- [tool.ruff.format]
117
- quote-style = "preserve"
118
-
119
103
  [tool.mypy]
120
104
  strict = true
121
105
  ignore_missing_imports = true
@@ -125,11 +109,3 @@ enable_error_code = [
125
109
  "truthy-bool",
126
110
  ]
127
111
  warn_unreachable = true
128
-
129
- [tool.codespell]
130
- ignore-words-list = [
131
- # Codespell wants "socioeconomic" which seems to be the standard spelling.
132
- # But we use the word in our code of conduct which is the contributor covenant.
133
- # Let's not modify it if we don't have to.
134
- "socio-economic",
135
- ]
@@ -1,7 +1,6 @@
1
1
  import scipp as sc
2
- from scipy.signal import find_peaks, medfilt
3
-
4
2
  from ess.powder.types import RunType
3
+ from scipy.signal import find_peaks, medfilt
5
4
 
6
5
  from .conversions import tof_from_t0_estimate_graph
7
6
  from .types import (
@@ -1,8 +1,7 @@
1
1
  import scipp as sc
2
2
  import scipp.constants
3
- from scippneutron.conversion import graph
4
-
5
3
  from ess.powder.types import ElasticCoordTransformGraph, RunType
4
+ from scippneutron.conversion import graph
6
5
 
7
6
  from .types import (
8
7
  DHKLList,
@@ -8,9 +8,10 @@ import h5py
8
8
  import numpy as np
9
9
  import scipp as sc
10
10
  import scipp.constants
11
-
12
11
  from ess.powder.types import CaveMonitor, RunType, WavelengthMonitor
13
12
 
13
+ from ess.reduce.nexus.types import DetectorBankSizes
14
+
14
15
  from .types import (
15
16
  DetectorBank,
16
17
  Filename,
@@ -147,7 +148,38 @@ def _effective_chopper_position_from_mode(
147
148
  raise ValueError(f'Unkonwn chopper mode {mode}.')
148
149
 
149
150
 
150
- def _load_beer_mcstas(f, north_or_south=None, number=None):
151
+ def _load_beer_mcstas(f, *, north_or_south=None, number=None, detector_sizes):
152
+ # Allow the keys of detector_sizes to be both the
153
+ # NeXus detector name or DetectorBank enum.
154
+ # It makes the code a bit more complex here, but I think mixing them up
155
+ # is an easy mistake to make and it makes sense
156
+ # to handle that gracefully.
157
+ normalized_detector_sizes = {
158
+ (
159
+ 'south'
160
+ if key in (DetectorBank.south, 'south_detector')
161
+ else 'north'
162
+ if key in (DetectorBank.north, 'north_detector')
163
+ else key
164
+ ): value
165
+ for key, value in detector_sizes.items()
166
+ }
167
+ if north_or_south is not None:
168
+ # In newer files the bank is determined by a name (north or south).
169
+ sizes = normalized_detector_sizes[north_or_south]
170
+ else:
171
+ # In older files the detector bank is determined by an index.
172
+ if number == 1:
173
+ sizes = normalized_detector_sizes['south']
174
+ elif number == 2:
175
+ sizes = normalized_detector_sizes['north']
176
+ else:
177
+ raise ValueError(
178
+ 'Could not determine detector sizes from provided '
179
+ f'`DetectorBankSizes`: {detector_sizes}. '
180
+ 'Expected keys: "south_detector" and "north_detector".'
181
+ )
182
+
151
183
  positions = {
152
184
  name: f'/entry1/instrument/components/{key}/Position'
153
185
  for key in f['/entry1/instrument/components']
@@ -177,7 +209,7 @@ def _load_beer_mcstas(f, north_or_south=None, number=None):
177
209
  positions['MCC'],
178
210
  )
179
211
  data = (
180
- next(_find_all_h5(data_dir, f'.*{north_or_south}{number}'))
212
+ next(_find_all_h5(data_dir, f'.*{north_or_south}{number}_events'))
181
213
  if north_or_south is not None and number is not None
182
214
  else next(_find_all_h5(data_dir, f'.*{north_or_south}'))
183
215
  if north_or_south is not None
@@ -190,7 +222,7 @@ def _load_beer_mcstas(f, north_or_south=None, number=None):
190
222
  ]
191
223
  detector_rotation = _find_h5(
192
224
  f['/entry1/instrument/components'],
193
- f'.*nD_Mantid_?{north_or_south}_{number}.*'
225
+ f'.*nD_Mantid_?{north_or_south}_{number}$'
194
226
  if north_or_south is not None and number is not None
195
227
  else f'.*nD_Mantid_?{north_or_south}.*'
196
228
  if north_or_south is not None
@@ -255,8 +287,8 @@ def _load_beer_mcstas(f, north_or_south=None, number=None):
255
287
  # Bin detector panel into rectangular "pixels"
256
288
  # similar in size to the physical detector pixels.
257
289
  da = da.bin(
258
- y=sc.linspace('y', -0.5, 0.5, 201, unit='m'),
259
- x=sc.linspace('x', -0.5, 0.5, 501, unit='m'),
290
+ y=sc.linspace('y', -0.5, 0.5, sizes['y'] + 1, unit='m'),
291
+ x=sc.linspace('x', -0.5, 0.5, sizes['x'] + 1, unit='m'),
260
292
  )
261
293
 
262
294
  # Compute the position of each pixel in the global coordinate system.
@@ -318,7 +350,9 @@ def _load_beer_mcstas(f, north_or_south=None, number=None):
318
350
  return da
319
351
 
320
352
 
321
- def load_beer_mcstas(f: str | Path | h5py.File, bank: DetectorBank) -> sc.DataArray:
353
+ def load_beer_mcstas(
354
+ f: str | Path | h5py.File, bank: DetectorBank, detector_sizes: DetectorBankSizes
355
+ ) -> sc.DataArray:
322
356
  '''Load beer McStas data from a file to a data array.'''
323
357
  if not isinstance(bank, DetectorBank):
324
358
  raise ValueError(
@@ -327,20 +361,30 @@ def load_beer_mcstas(f: str | Path | h5py.File, bank: DetectorBank) -> sc.DataAr
327
361
 
328
362
  if isinstance(f, str | Path):
329
363
  with h5py.File(f) as ff:
330
- return load_beer_mcstas(ff, bank=bank)
364
+ return load_beer_mcstas(ff, bank=bank, detector_sizes=detector_sizes)
331
365
 
332
366
  if len(list(_find_all_h5(f['/entry1/data'], '.*bank', nxclass='NXdata'))) < 8:
333
367
  # If we don't find ~13 detectors, then assume the detectors are 2D
334
368
  if len(list(_find_all_h5(f['/entry1/data'], '.*south', nxclass='NXdata'))) > 0:
335
- return _load_beer_mcstas(f, north_or_south=bank.name)
369
+ return _load_beer_mcstas(
370
+ f, north_or_south=bank.name, detector_sizes=detector_sizes
371
+ )
336
372
 
337
373
  return _load_beer_mcstas(
338
- f, north_or_south=None, number=1 if bank == DetectorBank.south else 2
374
+ f,
375
+ north_or_south=None,
376
+ number=1 if bank == DetectorBank.south else 2,
377
+ detector_sizes=detector_sizes,
339
378
  )
340
379
 
341
380
  return sc.concat(
342
381
  [
343
- _load_beer_mcstas(f, north_or_south=bank.name, number=number)
382
+ _load_beer_mcstas(
383
+ f,
384
+ north_or_south=bank.name,
385
+ number=number,
386
+ detector_sizes=detector_sizes,
387
+ )
344
388
  for number in range(1, 13)
345
389
  ],
346
390
  dim='panel',
@@ -399,10 +443,9 @@ def load_beer_mcstas_monitor(f: str | Path | h5py.File):
399
443
 
400
444
 
401
445
  def load_beer_mcstas_provider(
402
- fname: Filename[RunType],
403
- bank: DetectorBank,
446
+ fname: Filename[RunType], bank: DetectorBank, detector_bank_sizes: DetectorBankSizes
404
447
  ) -> RawDetector[RunType]:
405
- return load_beer_mcstas(fname, bank)
448
+ return load_beer_mcstas(fname, bank, detector_bank_sizes)
406
449
 
407
450
 
408
451
  def load_beer_mcstas_monitor_provider(
@@ -4,7 +4,6 @@ import itertools
4
4
 
5
5
  import sciline as sl
6
6
  import scipp as sc
7
-
8
7
  from ess.powder import providers as powder_providers
9
8
  from ess.powder.correction import RunNormalization, insert_run_normalization
10
9
  from ess.powder.types import (
@@ -15,6 +14,7 @@ from ess.powder.types import (
15
14
  SampleRun,
16
15
  VanadiumRun,
17
16
  )
17
+
18
18
  from ess.reduce.nexus.types import DetectorBankSizes, NeXusName
19
19
  from ess.reduce.unwrap import GenericUnwrapWorkflow
20
20
 
@@ -28,6 +28,10 @@ from .types import (
28
28
 
29
29
  default_parameters = {
30
30
  PulseLength: sc.scalar(0.003, unit='s'),
31
+ DetectorBankSizes: {
32
+ 'south_detector': {'y': 200, 'x': 500},
33
+ 'north_detector': {'y': 200, 'x': 500},
34
+ },
31
35
  }
32
36
 
33
37
 
@@ -93,10 +97,6 @@ def BeerPowderWorkflow(
93
97
  monitor_types=[BunkerMonitor, CaveMonitor],
94
98
  **kwargs,
95
99
  )
96
- wf[DetectorBankSizes] = {
97
- 'south_detector': {'y': 200, 'x': 500},
98
- 'north_detector': {'y': 200, 'x': 500},
99
- }
100
100
  wf[NeXusName[CaveMonitor]] = "monitor_cave"
101
101
 
102
102
  for provider in itertools.chain(powder_providers, convert_pulse_shaping):
@@ -109,6 +109,7 @@ def BeerPowderWorkflow(
109
109
 
110
110
 
111
111
  def BeerPowderMcStasWorkflow(**kwargs) -> sl.Pipeline:
112
+ """Create the BEER powder workflow with McStas loaders inserted."""
112
113
  wf = BeerPowderWorkflow(**kwargs)
113
114
  for provider in mcstas_providers:
114
115
  wf.insert(provider)
@@ -1,6 +1,5 @@
1
1
  # SPDX-License-Identifier: BSD-3-Clause
2
2
  # Copyright (c) 2025 Scipp contributors (https://github.com/scipp)
3
- # ruff: noqa: E402, F401, I
4
3
 
5
4
  """
6
5
  Components for diffraction experiments (powder and single crystal).
@@ -4,8 +4,6 @@
4
4
  """CIF writer for DREAM."""
5
5
 
6
6
  import scipp as sc
7
- from scippneutron.io import cif
8
-
9
7
  from ess.powder.calibration import OutputCalibrationData
10
8
  from ess.powder.types import (
11
9
  Beamline,
@@ -19,6 +17,7 @@ from ess.powder.types import (
19
17
  SampleRun,
20
18
  Source,
21
19
  )
20
+ from scippneutron.io import cif
22
21
 
23
22
 
24
23
  def prepare_reduced_tof_cif(
@@ -5,8 +5,6 @@ import numpy as np
5
5
  import sciline
6
6
  import scipp as sc
7
7
  import scippnexus as snx
8
- from scippneutron.metadata import ESS_SOURCE
9
-
10
8
  from ess.powder.types import (
11
9
  Beamline,
12
10
  CalibrationData,
@@ -26,6 +24,7 @@ from ess.powder.types import (
26
24
  RunType,
27
25
  Source,
28
26
  )
27
+ from scippneutron.metadata import ESS_SOURCE
29
28
 
30
29
  MANTLE_DETECTOR_ID = sc.index(7)
31
30
  HIGH_RES_DETECTOR_ID = sc.index(8)
@@ -19,6 +19,7 @@ from ess.powder.types import (
19
19
  UncertaintyBroadcastMode,
20
20
  VanadiumRun,
21
21
  )
22
+
22
23
  from ess.reduce.parameter import (
23
24
  BinEdgesParameter,
24
25
  FilenameParameter,
@@ -6,8 +6,6 @@ import itertools
6
6
  import sciline
7
7
  import scipp as sc
8
8
  import scippnexus as snx
9
- from scippneutron.metadata import Software
10
-
11
9
  from ess.powder import providers as powder_providers
12
10
  from ess.powder import with_pixel_mask_filenames
13
11
  from ess.powder.correction import RunNormalization, insert_run_normalization
@@ -30,6 +28,8 @@ from ess.powder.types import (
30
28
  VanadiumRun,
31
29
  WavelengthMask,
32
30
  )
31
+ from scippneutron.metadata import Software
32
+
33
33
  from ess.reduce.nexus.types import DetectorBankSizes, NeXusName
34
34
  from ess.reduce.parameter import parameter_mappers
35
35
  from ess.reduce.unwrap import GenericUnwrapWorkflow
@@ -144,6 +144,7 @@ parameter_mappers[PixelMaskFilename] = with_pixel_mask_filenames
144
144
 
145
145
 
146
146
  def default_parameters() -> dict:
147
+ """Return the default reduction parameters shared by DREAM powder workflows."""
147
148
  return {
148
149
  KeepEvents[SampleRun]: KeepEvents[SampleRun](True),
149
150
  KeepEvents[VanadiumRun]: KeepEvents[VanadiumRun](True),
@@ -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
+ ]