essdiffraction 26.4.0__tar.gz → 26.5.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.
Files changed (158) hide show
  1. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/LICENSE +1 -1
  2. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/PKG-INFO +17 -1
  3. essdiffraction-26.5.1/docs/_static/essdiffraction-search-logo.png +0 -0
  4. essdiffraction-26.5.1/docs/_templates/layout.html +5 -0
  5. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/beer/beer_modulation_mcstas.ipynb +23 -26
  6. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/common/vanadium_processing.ipynb +2 -2
  7. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/dream/dream-powder-reduction.ipynb +1 -1
  8. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/dream/workflow-widget-dream.ipynb +1 -1
  9. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/pyproject.toml +22 -46
  10. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/beer/clustering.py +2 -2
  11. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/beer/conversions.py +64 -58
  12. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/beer/data.py +2 -1
  13. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/beer/io.py +126 -52
  14. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/beer/types.py +2 -9
  15. essdiffraction-26.5.1/src/ess/beer/workflow.py +117 -0
  16. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/diffraction/__init__.py +0 -1
  17. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/io/cif.py +1 -2
  18. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/io/geant4.py +1 -2
  19. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/parameters.py +1 -0
  20. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/workflows.py +3 -2
  21. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/snspowder/powgen/workflow.py +2 -1
  22. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/essdiffraction.egg-info/PKG-INFO +17 -1
  23. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/essdiffraction.egg-info/SOURCES.txt +3 -41
  24. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/essdiffraction.egg-info/requires.txt +17 -0
  25. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/beer/mcstas_reduction_test.py +45 -12
  26. essdiffraction-26.4.0/tests/diffraction/test_peaks.py → essdiffraction-26.5.1/tests/diffraction/peaks_test.py +0 -1
  27. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/dream/instrument_view_test.py +0 -1
  28. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/dream/io/cif_test.py +3 -4
  29. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/dream/io/geant4_test.py +0 -1
  30. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/powder/conversion_test.py +0 -1
  31. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/powder/correction_test.py +0 -1
  32. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/powder/filtering_test.py +0 -1
  33. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/powder/transform_test.py +1 -2
  34. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/snspowder/powgen/load_test.py +0 -1
  35. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/snspowder/powgen/powgen_reduction_test.py +6 -5
  36. essdiffraction-26.4.0/.github/ISSUE_TEMPLATE/high-level-requirement.yml +0 -97
  37. essdiffraction-26.4.0/.github/dependabot.yml +0 -13
  38. essdiffraction-26.4.0/.github/workflows/ci.yml +0 -58
  39. essdiffraction-26.4.0/.github/workflows/docs.yml +0 -79
  40. essdiffraction-26.4.0/.github/workflows/nightly_at_main.yml +0 -35
  41. essdiffraction-26.4.0/.github/workflows/nightly_at_main_lower_bound.yml +0 -37
  42. essdiffraction-26.4.0/.github/workflows/nightly_at_release.yml +0 -42
  43. essdiffraction-26.4.0/.github/workflows/python-version-ci +0 -1
  44. essdiffraction-26.4.0/.github/workflows/release.yml +0 -73
  45. essdiffraction-26.4.0/.github/workflows/test.yml +0 -90
  46. essdiffraction-26.4.0/.github/workflows/unpinned.yml +0 -41
  47. essdiffraction-26.4.0/.github/workflows/weekly_windows_macos.yml +0 -42
  48. essdiffraction-26.4.0/.gitignore +0 -48
  49. essdiffraction-26.4.0/.pre-commit-config.yaml +0 -55
  50. essdiffraction-26.4.0/.python-version +0 -1
  51. essdiffraction-26.4.0/CODE_OF_CONDUCT.md +0 -134
  52. essdiffraction-26.4.0/CONTRIBUTING.md +0 -20
  53. essdiffraction-26.4.0/MANIFEST.in +0 -1
  54. essdiffraction-26.4.0/requirements/base.in +0 -17
  55. essdiffraction-26.4.0/requirements/base.txt +0 -227
  56. essdiffraction-26.4.0/requirements/basetest.in +0 -13
  57. essdiffraction-26.4.0/requirements/basetest.txt +0 -87
  58. essdiffraction-26.4.0/requirements/ci.in +0 -4
  59. essdiffraction-26.4.0/requirements/ci.txt +0 -56
  60. essdiffraction-26.4.0/requirements/dev.in +0 -11
  61. essdiffraction-26.4.0/requirements/dev.txt +0 -123
  62. essdiffraction-26.4.0/requirements/docs.in +0 -18
  63. essdiffraction-26.4.0/requirements/docs.txt +0 -181
  64. essdiffraction-26.4.0/requirements/make_base.py +0 -78
  65. essdiffraction-26.4.0/requirements/mypy.in +0 -2
  66. essdiffraction-26.4.0/requirements/mypy.txt +0 -16
  67. essdiffraction-26.4.0/requirements/nightly.in +0 -23
  68. essdiffraction-26.4.0/requirements/nightly.txt +0 -245
  69. essdiffraction-26.4.0/requirements/static.in +0 -1
  70. essdiffraction-26.4.0/requirements/static.txt +0 -31
  71. essdiffraction-26.4.0/requirements/test.in +0 -4
  72. essdiffraction-26.4.0/requirements/test.txt +0 -9
  73. essdiffraction-26.4.0/requirements/wheels.in +0 -1
  74. essdiffraction-26.4.0/requirements/wheels.txt +0 -13
  75. essdiffraction-26.4.0/src/ess/beer/workflow.py +0 -61
  76. essdiffraction-26.4.0/tox.ini +0 -76
  77. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/.copier-answers.ess.yml +0 -0
  78. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/.copier-answers.yml +0 -0
  79. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/README.md +0 -0
  80. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/anaconda-icon.js +0 -0
  81. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/favicon.svg +0 -0
  82. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/logo-dark.svg +0 -0
  83. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/logo.svg +0 -0
  84. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/thumbnails/beer_mcstas_dark.svg +0 -0
  85. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/thumbnails/beer_mcstas_light.svg +0 -0
  86. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/thumbnails/dream_advanced_powder_reduction_dark.svg +0 -0
  87. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/thumbnails/dream_advanced_powder_reduction_light.svg +0 -0
  88. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/thumbnails/dream_basic_powder_reduction_dark.svg +0 -0
  89. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_static/thumbnails/dream_basic_powder_reduction_light.svg +0 -0
  90. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_templates/class-template.rst +0 -0
  91. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_templates/doc_version.html +0 -0
  92. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/_templates/module-template.rst +0 -0
  93. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/about/bibliography.rst +0 -0
  94. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/about/index.md +0 -0
  95. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/api-reference/index.md +0 -0
  96. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/bibliography.bib +0 -0
  97. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/conf.py +0 -0
  98. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/developer/coding-conventions.md +0 -0
  99. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/developer/dependency-management.md +0 -0
  100. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/developer/getting-started.md +0 -0
  101. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/developer/index.md +0 -0
  102. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/index.md +0 -0
  103. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/beer/index.md +0 -0
  104. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/common/index.md +0 -0
  105. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/dream/dream-advanced-powder-reduction.ipynb +0 -0
  106. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/dream/dream-detector-diagnostics.ipynb +0 -0
  107. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/dream/dream-instrument-view.ipynb +0 -0
  108. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/dream/dream-make-wavelength-lookup-table.ipynb +0 -0
  109. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/dream/dream-visualize-absorption.ipynb +0 -0
  110. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/dream/index.md +0 -0
  111. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/index.md +0 -0
  112. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/installation.md +0 -0
  113. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/sns-instruments/POWGEN_data_reduction.ipynb +0 -0
  114. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/docs/user-guide/sns-instruments/index.md +0 -0
  115. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/resources/logo.svg +0 -0
  116. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/setup.cfg +0 -0
  117. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/beer/__init__.py +0 -0
  118. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/beer/peakfinding.py +0 -0
  119. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/diffraction/peaks.py +0 -0
  120. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/diffraction/py.typed +0 -0
  121. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/__init__.py +0 -0
  122. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/beamline.py +0 -0
  123. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/data.py +0 -0
  124. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/diagnostics.py +0 -0
  125. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/instrument_view.py +0 -0
  126. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/io/__init__.py +0 -0
  127. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/dream/py.typed +0 -0
  128. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/__init__.py +0 -0
  129. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/_util.py +0 -0
  130. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/calibration.py +0 -0
  131. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/conversion.py +0 -0
  132. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/correction.py +0 -0
  133. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/filtering.py +0 -0
  134. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/grouping.py +0 -0
  135. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/logging.py +0 -0
  136. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/masking.py +0 -0
  137. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/py.typed +0 -0
  138. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/smoothing.py +0 -0
  139. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/transform.py +0 -0
  140. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/types.py +0 -0
  141. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/powder/workflow.py +0 -0
  142. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/snspowder/powgen/__init__.py +0 -0
  143. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/snspowder/powgen/beamline.py +0 -0
  144. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/snspowder/powgen/calibration.py +0 -0
  145. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/snspowder/powgen/data.py +1 -1
  146. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/snspowder/powgen/instrument_view.py +0 -0
  147. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/ess/snspowder/powgen/peaks.py +0 -0
  148. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/essdiffraction.egg-info/dependency_links.txt +0 -0
  149. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/src/essdiffraction.egg-info/top_level.txt +0 -0
  150. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/conftest.py +0 -0
  151. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/dream/diagnostics_test.py +0 -0
  152. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/dream/geant4_reduction_test.py +3 -3
  153. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/dream/workflows/dream_generic_workflow_test.py +2 -2
  154. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tests/package_test.py +0 -0
  155. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tools/docs/beer-thumbnails.ipynb +0 -0
  156. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tools/docs/dream-thumbnails.ipynb +0 -0
  157. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/tools/preprocess_pg3_files.ipynb +0 -0
  158. {essdiffraction-26.4.0 → essdiffraction-26.5.1}/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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: essdiffraction
3
- Version: 26.4.0
3
+ Version: 26.5.1
4
4
  Summary: Diffraction data reduction for the European Spallation Source
5
5
  Author: Scipp contributors
6
6
  License-Expression: BSD-3-Clause
@@ -38,6 +38,22 @@ 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)
@@ -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 %}
@@ -22,6 +22,7 @@
22
22
  "from ess.beer import BeerModMcStasWorkflow, BeerModMcStasWorkflowKnownPeaks\n",
23
23
  "from ess.beer.data import mcstas_silicon_medium_resolution, mcstas_duplex, duplex_peaks_array, silicon_peaks_array\n",
24
24
  "from ess.beer.types import *\n",
25
+ "from ess.powder.types import *\n",
25
26
  "\n",
26
27
  "# Default bin edges for our d_hkl histograms\n",
27
28
  "dspacing = sc.linspace('dspacing', 0.8, 2.2, 2000, unit='angstrom')\n",
@@ -39,7 +40,7 @@
39
40
  "source": [
40
41
  "## Beam modulation mode\n",
41
42
  "\n",
42
- "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",
43
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",
44
45
  "\n",
45
46
  "\n",
@@ -82,7 +83,7 @@
82
83
  "\n",
83
84
  "### Difference between modulation modes\n",
84
85
  "\n",
85
- "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",
86
87
  "Below is a table describing the available modes.\n",
87
88
  "\n",
88
89
  "<table style=\"border-collapse: collapse; border: 1px solid #aaa; font-family: Arial, sans-serif; font-size: 14px;\">\n",
@@ -163,7 +164,8 @@
163
164
  "wf = BeerModMcStasWorkflowKnownPeaks()\n",
164
165
  "wf[DetectorBank] = DetectorBank.north\n",
165
166
  "wf[Filename[SampleRun]] = mcstas_silicon_medium_resolution()\n",
166
- "da = wf.compute(RawDetector[SampleRun])\n",
167
+ "wf[DHKLList] = silicon_peaks_array()\n",
168
+ "da = wf.compute(WavelengthDetector[SampleRun])\n",
167
169
  "da.masks.clear()\n",
168
170
  "da.hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
169
171
  ]
@@ -183,13 +185,12 @@
183
185
  "metadata": {},
184
186
  "outputs": [],
185
187
  "source": [
186
- "wf[DHKLList] = silicon_peaks_array()\n",
187
188
  "wf[Filename[SampleRun]] = mcstas_silicon_medium_resolution()\n",
188
189
  "\n",
189
190
  "results = {}\n",
190
191
  "for bank in DetectorBank:\n",
191
192
  " wf[DetectorBank] = bank\n",
192
- " da = wf.compute(TofDetector[SampleRun])\n",
193
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
193
194
  " results[bank] = (\n",
194
195
  " da\n",
195
196
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -220,7 +221,7 @@
220
221
  "results = {}\n",
221
222
  "for bank in DetectorBank:\n",
222
223
  " wf[DetectorBank] = bank\n",
223
- " da = wf.compute(TofDetector[SampleRun])\n",
224
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
224
225
  " results[bank] = (\n",
225
226
  " da\n",
226
227
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -279,7 +280,8 @@
279
280
  "wf = BeerModMcStasWorkflowKnownPeaks()\n",
280
281
  "wf[DetectorBank] = DetectorBank.south\n",
281
282
  "wf[Filename[SampleRun]] = mcstas_duplex(8)\n",
282
- "wf.compute(RawDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-2)"
283
+ "wf[DHKLList] = duplex_peaks_array()\n",
284
+ "wf.compute(WavelengthDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-2)"
283
285
  ]
284
286
  },
285
287
  {
@@ -297,12 +299,10 @@
297
299
  "metadata": {},
298
300
  "outputs": [],
299
301
  "source": [
300
- "wf[DHKLList] = duplex_peaks_array()\n",
301
- "\n",
302
302
  "results = {}\n",
303
303
  "for bank in DetectorBank:\n",
304
304
  " wf[DetectorBank] = bank\n",
305
- " da = wf.compute(TofDetector[SampleRun])\n",
305
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
306
306
  " results[bank] = (\n",
307
307
  " da\n",
308
308
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -333,7 +333,7 @@
333
333
  "results = {}\n",
334
334
  "for bank in DetectorBank:\n",
335
335
  " wf[DetectorBank] = bank\n",
336
- " da = wf.compute(TofDetector[SampleRun])\n",
336
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
337
337
  " results[bank] = (\n",
338
338
  " da\n",
339
339
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -392,7 +392,8 @@
392
392
  "wf = BeerModMcStasWorkflowKnownPeaks()\n",
393
393
  "wf[DetectorBank] = DetectorBank.south\n",
394
394
  "wf[Filename[SampleRun]] = mcstas_duplex(9)\n",
395
- "wf.compute(RawDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
395
+ "wf[DHKLList] = duplex_peaks_array()\n",
396
+ "wf.compute(WavelengthDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
396
397
  ]
397
398
  },
398
399
  {
@@ -410,12 +411,10 @@
410
411
  "metadata": {},
411
412
  "outputs": [],
412
413
  "source": [
413
- "wf[DHKLList] = duplex_peaks_array()\n",
414
- "\n",
415
414
  "results = {}\n",
416
415
  "for bank in DetectorBank:\n",
417
416
  " wf[DetectorBank] = bank\n",
418
- " da = wf.compute(TofDetector[SampleRun])\n",
417
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
419
418
  " results[bank] = (\n",
420
419
  " da\n",
421
420
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -446,7 +445,7 @@
446
445
  "results = {}\n",
447
446
  "for bank in DetectorBank:\n",
448
447
  " wf[DetectorBank] = bank\n",
449
- " da = wf.compute(TofDetector[SampleRun])\n",
448
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
450
449
  " results[bank] = (\n",
451
450
  " da\n",
452
451
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -505,7 +504,8 @@
505
504
  "wf = BeerModMcStasWorkflowKnownPeaks()\n",
506
505
  "wf[DetectorBank] = DetectorBank.south\n",
507
506
  "wf[Filename[SampleRun]] = mcstas_duplex(10)\n",
508
- "wf.compute(RawDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
507
+ "wf[DHKLList] = duplex_peaks_array()\n",
508
+ "wf.compute(WavelengthDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
509
509
  ]
510
510
  },
511
511
  {
@@ -523,12 +523,10 @@
523
523
  "metadata": {},
524
524
  "outputs": [],
525
525
  "source": [
526
- "wf[DHKLList] = duplex_peaks_array()\n",
527
- "\n",
528
526
  "results = {}\n",
529
527
  "for bank in DetectorBank:\n",
530
528
  " wf[DetectorBank] = bank\n",
531
- " da = wf.compute(TofDetector[SampleRun])\n",
529
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
532
530
  " results[bank] = (\n",
533
531
  " da\n",
534
532
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -559,7 +557,7 @@
559
557
  "results = {}\n",
560
558
  "for bank in DetectorBank:\n",
561
559
  " wf[DetectorBank] = bank\n",
562
- " da = wf.compute(TofDetector[SampleRun])\n",
560
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
563
561
  " results[bank] = (\n",
564
562
  " da\n",
565
563
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -618,7 +616,8 @@
618
616
  "wf = BeerModMcStasWorkflowKnownPeaks()\n",
619
617
  "wf[DetectorBank] = DetectorBank.south\n",
620
618
  "wf[Filename[SampleRun]] = mcstas_duplex(16)\n",
621
- "wf.compute(RawDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
619
+ "wf[DHKLList] = duplex_peaks_array()\n",
620
+ "wf.compute(WavelengthDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
622
621
  ]
623
622
  },
624
623
  {
@@ -636,12 +635,10 @@
636
635
  "metadata": {},
637
636
  "outputs": [],
638
637
  "source": [
639
- "wf[DHKLList] = duplex_peaks_array()\n",
640
- "\n",
641
638
  "results = {}\n",
642
639
  "for bank in DetectorBank:\n",
643
640
  " wf[DetectorBank] = bank\n",
644
- " da = wf.compute(TofDetector[SampleRun])\n",
641
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
645
642
  " results[bank] = (\n",
646
643
  " da\n",
647
644
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -672,7 +669,7 @@
672
669
  "results = {}\n",
673
670
  "for bank in DetectorBank:\n",
674
671
  " wf[DetectorBank] = bank\n",
675
- " da = wf.compute(TofDetector[SampleRun])\n",
672
+ " da = wf.compute(WavelengthDetector[SampleRun])\n",
676
673
  " results[bank] = (\n",
677
674
  " da\n",
678
675
  " .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\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:"
@@ -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",
@@ -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,6 +53,25 @@ 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
77
  "Bug Tracker" = "https://github.com/scipp/essdiffraction/issues"
@@ -61,6 +79,9 @@ test = [
61
79
  "Source" = "https://github.com/scipp/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,11 +1,11 @@
1
1
  import scipp as sc
2
+ from ess.powder.types import RunType
2
3
  from scipy.signal import find_peaks, medfilt
3
4
 
4
5
  from .conversions import tof_from_t0_estimate_graph
5
6
  from .types import (
6
7
  GeometryCoordTransformGraph,
7
8
  RawDetector,
8
- RunType,
9
9
  StreakClusteredData,
10
10
  )
11
11
 
@@ -13,7 +13,7 @@ from .types import (
13
13
  def cluster_events_by_streak(
14
14
  da: RawDetector[RunType], gg: GeometryCoordTransformGraph
15
15
  ) -> StreakClusteredData[RunType]:
16
- graph = tof_from_t0_estimate_graph(gg)
16
+ graph = tof_from_t0_estimate_graph(da, gg)
17
17
 
18
18
  da = da.transform_coords(['dspacing'], graph=graph)
19
19
  da.bins.coords['coarse_d'] = da.bins.coords.pop('dspacing').to(unit='angstrom')
@@ -1,5 +1,6 @@
1
1
  import scipp as sc
2
2
  import scipp.constants
3
+ from ess.powder.types import ElasticCoordTransformGraph, RunType
3
4
  from scippneutron.conversion import graph
4
5
 
5
6
  from .types import (
@@ -8,19 +9,18 @@ from .types import (
8
9
  ModulationPeriod,
9
10
  PulseLength,
10
11
  RawDetector,
11
- RunType,
12
12
  StreakClusteredData,
13
- TofCoordTransformGraph,
14
- TofDetector,
15
13
  WavelengthDefinitionChopperDelay,
14
+ WavelengthDetector,
16
15
  )
17
16
 
18
17
 
19
- def compute_tof_in_each_cluster(
18
+ def compute_wavelength_in_each_cluster(
20
19
  da: StreakClusteredData[RunType],
21
20
  chopper_delay: WavelengthDefinitionChopperDelay,
22
21
  mod_period: ModulationPeriod,
23
- ) -> TofDetector[RunType]:
22
+ graph: GeometryCoordTransformGraph,
23
+ ) -> WavelengthDetector[RunType]:
24
24
  """Fits a line through each cluster, the intercept of the line is t0.
25
25
  The line is fitted using linear regression with an outlier removal procedure.
26
26
 
@@ -37,7 +37,10 @@ def compute_tof_in_each_cluster(
37
37
  """
38
38
  if isinstance(da, sc.DataGroup):
39
39
  return sc.DataGroup(
40
- {k: compute_tof_in_each_cluster(v, mod_period) for k, v in da.items()}
40
+ {
41
+ k: compute_wavelength_in_each_cluster(v, mod_period)
42
+ for k, v in da.items()
43
+ }
41
44
  )
42
45
 
43
46
  max_distance_from_streak_line = mod_period / 3
@@ -110,7 +113,7 @@ def _compute_d_given_list_of_peaks(
110
113
  theta: sc.Variable,
111
114
  dhkl_list: sc.Variable,
112
115
  pulse_length: sc.Variable,
113
- L0: sc.Variable,
116
+ moderator_to_detector_distance: sc.Variable,
114
117
  ) -> sc.Variable:
115
118
  """Determines the ``d_hkl`` peak each event belongs to,
116
119
  given a list of known peaks."""
@@ -123,9 +126,12 @@ def _compute_d_given_list_of_peaks(
123
126
  )
124
127
  dtfound = sc.full_like(time_of_arrival, value=float('nan'), dtype='float64')
125
128
 
126
- const = (2 * sinth * L0 / (scipp.constants.h / scipp.constants.m_n)).to(
127
- unit=f'{time_of_arrival.unit}/angstrom'
128
- )
129
+ const = (
130
+ 2
131
+ * sinth
132
+ * moderator_to_detector_distance
133
+ / (scipp.constants.h / scipp.constants.m_n)
134
+ ).to(unit=f'{time_of_arrival.unit}/angstrom')
129
135
  for dhkl in dhkl_list:
130
136
  dt = sc.abs(t - dhkl * const)
131
137
  dt_in_range = dt < pulse_length / 2
@@ -185,17 +191,53 @@ def _tof_from_dhkl(
185
191
  return out
186
192
 
187
193
 
194
+ def t0_estimate(
195
+ wavelength_estimate: sc.Variable,
196
+ source_to_wavelength_definition_chopper_distance: sc.Variable,
197
+ ) -> sc.Variable:
198
+ """
199
+ Computes the time a neutron reaches a chopper at
200
+ ``source_to_wavelength_chopper_distance`` distance from the source
201
+ if it has wavelength ``wavelength_estimate``.
202
+ """
203
+ return (
204
+ sc.constants.m_n
205
+ / sc.constants.h
206
+ * wavelength_estimate
207
+ * source_to_wavelength_definition_chopper_distance.to(
208
+ unit=wavelength_estimate.unit
209
+ )
210
+ ).to(unit='s')
211
+
212
+
213
+ def tof_from_t0_estimate_graph(
214
+ da: RawDetector[RunType],
215
+ gg: GeometryCoordTransformGraph,
216
+ ) -> ElasticCoordTransformGraph[RunType]:
217
+ """Graph for computing ``wavelength`` in pulse shaping chopper modes."""
218
+ return {
219
+ **gg,
220
+ 't0': t0_estimate,
221
+ 'tof': lambda time_of_arrival, t0: time_of_arrival - t0,
222
+ 'time_of_arrival': time_of_arrival,
223
+ }
224
+
225
+
188
226
  def geometry_graph() -> GeometryCoordTransformGraph:
189
- return graph.beamline.beamline(scatter=True)
227
+ return {
228
+ **graph.beamline.beamline(scatter=True),
229
+ **graph.tof.elastic("tof"),
230
+ }
190
231
 
191
232
 
192
233
  def tof_from_known_dhkl_graph(
234
+ da: RawDetector[RunType],
193
235
  mod_period: ModulationPeriod,
194
236
  pulse_length: PulseLength,
195
237
  chopper_delay: WavelengthDefinitionChopperDelay,
196
238
  dhkl_list: DHKLList,
197
239
  gg: GeometryCoordTransformGraph,
198
- ) -> TofCoordTransformGraph:
240
+ ) -> ElasticCoordTransformGraph[RunType]:
199
241
  """Graph computing ``tof`` in modulation chopper modes using
200
242
  list of peak positions."""
201
243
 
@@ -203,7 +245,7 @@ def tof_from_known_dhkl_graph(
203
245
  time_of_arrival: sc.Variable,
204
246
  theta: sc.Variable,
205
247
  pulse_length: sc.Variable,
206
- L0: sc.Variable,
248
+ moderator_to_detector_distance: sc.Variable,
207
249
  ):
208
250
  """To capture dhkl_list, otherwise it causes an error when
209
251
  ``.transform_coords`` is called unless it is called with
@@ -215,13 +257,12 @@ def tof_from_known_dhkl_graph(
215
257
  time_of_arrival=time_of_arrival,
216
258
  theta=theta,
217
259
  pulse_length=pulse_length,
218
- L0=L0,
260
+ moderator_to_detector_distance=moderator_to_detector_distance,
219
261
  dhkl_list=dhkl_list,
220
262
  )
221
263
 
222
264
  return {
223
265
  **gg,
224
- **graph.tof.elastic("tof"),
225
266
  'pulse_length': lambda: pulse_length,
226
267
  'mod_period': lambda: mod_period,
227
268
  'chopper_delay': lambda: chopper_delay,
@@ -232,56 +273,21 @@ def tof_from_known_dhkl_graph(
232
273
  }
233
274
 
234
275
 
235
- def t0_estimate(
236
- wavelength_estimate: sc.Variable,
237
- L0: sc.Variable,
238
- Ltotal: sc.Variable,
239
- ) -> sc.Variable:
240
- """Estimates the time-at-chopper by assuming the wavelength."""
241
- return (
242
- sc.constants.m_n
243
- / sc.constants.h
244
- * wavelength_estimate
245
- * (L0 - Ltotal).to(unit=wavelength_estimate.unit)
246
- ).to(unit='s')
247
-
248
-
249
- def _tof_from_t0(
250
- time_of_arrival: sc.Variable,
251
- t0: sc.Variable,
252
- ) -> sc.Variable:
253
- """Computes time-of-flight by subtracting a start time."""
254
- return time_of_arrival - t0
255
-
256
-
257
- def tof_from_t0_estimate_graph(
258
- gg: GeometryCoordTransformGraph,
259
- ) -> TofCoordTransformGraph:
260
- """Graph for computing ``tof`` in pulse shaping chopper modes."""
261
- return {
262
- **gg,
263
- **graph.tof.elastic("tof"),
264
- 't0': t0_estimate,
265
- 'tof': _tof_from_t0,
266
- 'time_of_arrival': time_of_arrival,
267
- }
268
-
269
-
270
- def compute_tof(
271
- da: RawDetector[RunType], graph: TofCoordTransformGraph
272
- ) -> TofDetector[RunType]:
273
- """Uses the transformation graph to compute ``tof``."""
274
- return da.transform_coords(('tof',), graph=graph)
276
+ def wavelength_detector(
277
+ da: RawDetector[RunType], graph: ElasticCoordTransformGraph[RunType]
278
+ ) -> WavelengthDetector[RunType]:
279
+ """Applies the transformation graph to compute ``wavelength``."""
280
+ return da.transform_coords(('wavelength',), graph=graph)
275
281
 
276
282
 
277
283
  convert_from_known_peaks_providers = (
278
284
  geometry_graph,
279
285
  tof_from_known_dhkl_graph,
280
- compute_tof,
286
+ wavelength_detector,
281
287
  )
282
288
  convert_pulse_shaping = (
283
289
  geometry_graph,
284
290
  tof_from_t0_estimate_graph,
285
- compute_tof,
291
+ wavelength_detector,
286
292
  )
287
- providers = (compute_tof_in_each_cluster, geometry_graph)
293
+ providers = (compute_wavelength_in_each_cluster, geometry_graph)
@@ -28,7 +28,8 @@ _registry = make_registry(
28
28
  "silicon-dhkl.tab": "md5:59ee9ed57a7c039ce416c8df886da9cc",
29
29
  "duplex-dhkl.tab": "md5:b4c6c2fcd66466ad291f306b2d6b346e",
30
30
  "dhkl_quartz_nc.tab": "md5:40887d736e3acf859e44488bfd9a9213",
31
- # Simulations from new model with corrected(?) L0.
31
+ # Simulations from new model with corrected(?) moderator to detector
32
+ # distance.
32
33
  # For correct reduction you need to use
33
34
  # beer.io.mcstas_chopper_delay_from_mode_new_simulations
34
35
  # to obtain the correct WavelengthDefinitionChopperDelay for these files.