essreduce 25.10.1__tar.gz → 25.11.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.
- {essreduce-25.10.1 → essreduce-25.11.0}/PKG-INFO +3 -3
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/user-guide/reduction-workflow-guidelines.md +63 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/user-guide/tof/dream.ipynb +10 -22
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/user-guide/tof/frame-unwrapping.ipynb +9 -27
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/user-guide/tof/wfm.ipynb +6 -24
- {essreduce-25.10.1 → essreduce-25.11.0}/pyproject.toml +2 -2
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/base.in +2 -2
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/base.txt +21 -21
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/basetest.txt +33 -31
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/ci.txt +12 -18
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/dev.txt +26 -22
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/docs.txt +41 -43
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/mypy.txt +1 -1
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/nightly.txt +40 -46
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/static.txt +7 -7
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/wheels.txt +1 -3
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/live/raw.py +5 -5
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/nexus/__init__.py +4 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/nexus/_nexus_loader.py +119 -14
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/nexus/types.py +25 -18
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/nexus/workflow.py +20 -58
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/time_of_flight/__init__.py +4 -4
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/time_of_flight/eto_to_tof.py +37 -22
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/time_of_flight/lut.py +2 -2
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/time_of_flight/types.py +2 -2
- {essreduce-25.10.1 → essreduce-25.11.0}/src/essreduce.egg-info/PKG-INFO +3 -3
- {essreduce-25.10.1 → essreduce-25.11.0}/src/essreduce.egg-info/requires.txt +2 -2
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/conftest.py +17 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/nexus_loader_test.py +12 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/workflow_test.py +39 -43
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/time_of_flight/lut_test.py +5 -4
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/time_of_flight/unwrap_test.py +19 -19
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/time_of_flight/wfm_test.py +8 -8
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/time_of_flight/workflow_test.py +24 -12
- {essreduce-25.10.1 → essreduce-25.11.0}/.copier-answers.ess.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.copier-answers.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/ISSUE_TEMPLATE/high-level-requirement.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/dependabot.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/ci.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/docs.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/nightly_at_main.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/nightly_at_main_lower_bound.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/nightly_at_release.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/python-version-ci +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/release.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/test.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/unpinned.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.github/workflows/weekly_windows_macos.yml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.gitignore +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.pre-commit-config.yaml +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/.python-version +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/CODE_OF_CONDUCT.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/CONTRIBUTING.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/LICENSE +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/MANIFEST.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/README.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/_static/anaconda-icon.js +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/_static/favicon.svg +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/_static/logo-dark.svg +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/_static/logo.svg +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/_templates/class-template.rst +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/_templates/doc_version.html +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/_templates/module-template.rst +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/about/index.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/api-reference/index.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/conf.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/developer/coding-conventions.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/developer/dependency-management.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/developer/getting-started.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/developer/gui.ipynb +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/developer/index.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/index.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/user-guide/index.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/user-guide/installation.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/user-guide/tof/index.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/docs/user-guide/widget.md +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/basetest.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/ci.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/dev.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/docs.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/make_base.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/mypy.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/nightly.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/static.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/test.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/test.txt +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/requirements/wheels.in +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/resources/logo.svg +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/setup.cfg +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/__init__.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/data/__init__.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/data/_registry.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/live/__init__.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/live/roi.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/live/workflow.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/logging.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/nexus/json_generator.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/nexus/json_nexus.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/parameter.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/py.typed +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/scripts/grow_nexus.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/streaming.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/time_of_flight/fakes.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/time_of_flight/interpolator_numba.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/time_of_flight/interpolator_scipy.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/time_of_flight/resample.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/time_of_flight/workflow.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/ui.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/uncertainty.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/__init__.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_base.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_binedges_widget.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_bounds_widget.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_config.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_filename_widget.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_linspace_widget.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_optional_widget.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_spinner.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_string_widget.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_switchable_widget.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/widgets/_vector_widget.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/ess/reduce/workflow.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/essreduce.egg-info/SOURCES.txt +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/essreduce.egg-info/dependency_links.txt +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/essreduce.egg-info/entry_points.txt +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/src/essreduce.egg-info/top_level.txt +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/accumulators_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/live/raw_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/live/roi_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/json_generator_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/json_nexus_examples/array_dataset.json +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/json_nexus_examples/dataset.json +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/json_nexus_examples/detector.json +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/json_nexus_examples/entry.json +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/json_nexus_examples/event_data.json +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/json_nexus_examples/instrument.json +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/json_nexus_examples/log.json +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/nexus/json_nexus_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/package_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/scripts/test_grow_nexus.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/streaming_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/time_of_flight/interpolator_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/time_of_flight/resample_tests.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/uncertainty_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tests/widget_test.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tools/shrink_nexus.py +0 -0
- {essreduce-25.10.1 → essreduce-25.11.0}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: essreduce
|
|
3
|
-
Version: 25.
|
|
3
|
+
Version: 25.11.0
|
|
4
4
|
Summary: Common data reduction tools for the ESS facility
|
|
5
5
|
Author: Scipp contributors
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -20,10 +20,10 @@ Classifier: Typing :: Typed
|
|
|
20
20
|
Requires-Python: >=3.11
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
|
-
Requires-Dist: sciline>=25.
|
|
23
|
+
Requires-Dist: sciline>=25.11.0
|
|
24
24
|
Requires-Dist: scipp>=25.04.0
|
|
25
25
|
Requires-Dist: scippneutron>=25.02.0
|
|
26
|
-
Requires-Dist: scippnexus>=
|
|
26
|
+
Requires-Dist: scippnexus>=25.06.0
|
|
27
27
|
Provides-Extra: test
|
|
28
28
|
Requires-Dist: ipywidgets>=8.1; extra == "test"
|
|
29
29
|
Requires-Dist: numba>=0.59; extra == "test"
|
|
@@ -146,6 +146,69 @@ workflow.visualize(Result)
|
|
|
146
146
|
workflow.compute(Result)
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
+
### C.6: Domain types for data products
|
|
150
|
+
|
|
151
|
+
Data types that flow through the reduction workflow should follow a systematic naming convention that reflects their processing stage and coordinate space. This ensures consistency across instruments and techniques, making workflows more transferable and easier to understand.
|
|
152
|
+
|
|
153
|
+
**Type structure**
|
|
154
|
+
|
|
155
|
+
Domain types use a **prefix-suffix** pattern:
|
|
156
|
+
- **Prefix**: Describes the processing stage (e.g., `Raw`, `Tof`, `Corrected`, `Normalized`)
|
|
157
|
+
- **Suffix**: Describes the coordinate space or component (e.g., `Monitor`, `Detector`, `Q`, `Dspacing`, `Energy`)
|
|
158
|
+
|
|
159
|
+
**Monitor types**
|
|
160
|
+
|
|
161
|
+
Monitors follow a linear progression through processing stages:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
EmptyMonitor # Geometry only, calibrated
|
|
165
|
+
RawMonitor # With counts
|
|
166
|
+
TofMonitor # Time-of-flight domain
|
|
167
|
+
WavelengthMonitor # Wavelength domain (end of monitor chain)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Detector types**
|
|
171
|
+
|
|
172
|
+
Detectors progress through both processing stages and move from "detector space" (pixel space) to, e.g., Q-space:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
EmptyDetector # Geometry only, calibrated, pixel-masked
|
|
176
|
+
RawDetector # With counts
|
|
177
|
+
TofDetector # With added time-of-flight coord
|
|
178
|
+
WavelengthDetector # With added wavelength coord
|
|
179
|
+
CorrectedDetector # Corrections applied (masking, filtering, efficiency, Lorentz, absorption)
|
|
180
|
+
CorrectedQ # Transformed to Q-space, pixels reduced
|
|
181
|
+
NormalizedQ # Normalized (to monitor, proton charge)
|
|
182
|
+
IntensityQ # Absolute intensity, e.g., normalized to vanadium
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Alternative domain-specific names to, e.g., `IntensityQ` such as `ReflectivityQ` are also valid.
|
|
186
|
+
|
|
187
|
+
**Coordinate space variants**
|
|
188
|
+
|
|
189
|
+
The final coordinate space (`Q` in the example above) should be replaced with the appropriate space for the technique:
|
|
190
|
+
- `Dspacing` for d-spacing coordinates
|
|
191
|
+
- `EnergyTransfer` for energy transfer
|
|
192
|
+
- `TwoTheta` for scattering angle
|
|
193
|
+
- Multiple dimensions can be combined: `DspacingTwoTheta`
|
|
194
|
+
|
|
195
|
+
For example, a powder diffraction workflow might use:
|
|
196
|
+
```
|
|
197
|
+
CorrectedDetector → CorrectedDspacing → NormalizedDspacing → IntensityDspacing
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Guidelines**
|
|
201
|
+
|
|
202
|
+
1. **Maintain the standard progression**: Keep processing stages separate unless there's a scientific reason to combine them (e.g., computational efficiency for a specific technique).
|
|
203
|
+
|
|
204
|
+
2. **Prefix carries forward**: When transforming coordinate spaces without additional processing, the prefix carries forward (e.g., `CorrectedDetector` → `CorrectedQ`).
|
|
205
|
+
|
|
206
|
+
3. **Skip only when appropriate**: Stages can be skipped if they don't exist for a particular technique, but avoid skipping for convenience alone.
|
|
207
|
+
|
|
208
|
+
4. **Be explicit about the space**: Always include the coordinate space or component in the suffix to make the data's nature clear.
|
|
209
|
+
|
|
210
|
+
5. **Consistency across instruments**: Use the same type names for equivalent processing stages across different instruments and techniques to facilitate knowledge transfer.
|
|
211
|
+
|
|
149
212
|
## D: Documentation
|
|
150
213
|
|
|
151
214
|
### D.1: Document math and references in docstrings
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"import plopp as pp\n",
|
|
25
25
|
"import scipp as sc\n",
|
|
26
26
|
"from scippneutron.chopper import DiskChopper\n",
|
|
27
|
-
"from ess.reduce.nexus.types import
|
|
27
|
+
"from ess.reduce.nexus.types import AnyRun, RawDetector, SampleRun\n",
|
|
28
28
|
"from ess.reduce.time_of_flight import *"
|
|
29
29
|
]
|
|
30
30
|
},
|
|
@@ -300,10 +300,10 @@
|
|
|
300
300
|
"source": [
|
|
301
301
|
"wf = GenericTofWorkflow(run_types=[SampleRun], monitor_types=[])\n",
|
|
302
302
|
"\n",
|
|
303
|
-
"wf[
|
|
303
|
+
"wf[RawDetector[SampleRun]] = raw_data\n",
|
|
304
304
|
"wf[DetectorLtotal[SampleRun]] = Ltotal\n",
|
|
305
305
|
"\n",
|
|
306
|
-
"wf.visualize(
|
|
306
|
+
"wf.visualize(TofDetector[SampleRun])"
|
|
307
307
|
]
|
|
308
308
|
},
|
|
309
309
|
{
|
|
@@ -340,7 +340,7 @@
|
|
|
340
340
|
"outputs": [],
|
|
341
341
|
"source": [
|
|
342
342
|
"lut_wf = TofLookupTableWorkflow()\n",
|
|
343
|
-
"lut_wf[DiskChoppers] = disk_choppers\n",
|
|
343
|
+
"lut_wf[DiskChoppers[AnyRun]] = disk_choppers\n",
|
|
344
344
|
"lut_wf[SourcePosition] = source_position\n",
|
|
345
345
|
"lut_wf[LtotalRange] = (\n",
|
|
346
346
|
" sc.scalar(75.5, unit=\"m\"),\n",
|
|
@@ -436,7 +436,6 @@
|
|
|
436
436
|
]
|
|
437
437
|
},
|
|
438
438
|
{
|
|
439
|
-
"attachments": {},
|
|
440
439
|
"cell_type": "markdown",
|
|
441
440
|
"id": "30",
|
|
442
441
|
"metadata": {},
|
|
@@ -457,7 +456,7 @@
|
|
|
457
456
|
"wf[TimeOfFlightLookupTable] = table\n",
|
|
458
457
|
"\n",
|
|
459
458
|
"# Compute time-of-flight of neutron events\n",
|
|
460
|
-
"tofs = wf.compute(
|
|
459
|
+
"tofs = wf.compute(TofDetector[SampleRun])\n",
|
|
461
460
|
"tofs"
|
|
462
461
|
]
|
|
463
462
|
},
|
|
@@ -616,11 +615,11 @@
|
|
|
616
615
|
"outputs": [],
|
|
617
616
|
"source": [
|
|
618
617
|
"# Update workflow\n",
|
|
619
|
-
"wf[
|
|
618
|
+
"wf[RawDetector[SampleRun]] = raw_data\n",
|
|
620
619
|
"wf[DetectorLtotal[SampleRun]] = Ltotal\n",
|
|
621
620
|
"\n",
|
|
622
621
|
"# Compute tofs and wavelengths\n",
|
|
623
|
-
"tofs = wf.compute(
|
|
622
|
+
"tofs = wf.compute(TofDetector[SampleRun])\n",
|
|
624
623
|
"wav_wfm = tofs.transform_coords(\"wavelength\", graph=graph)\n",
|
|
625
624
|
"\n",
|
|
626
625
|
"# Compare in plot\n",
|
|
@@ -713,7 +712,7 @@
|
|
|
713
712
|
"outputs": [],
|
|
714
713
|
"source": [
|
|
715
714
|
"# Update workflow\n",
|
|
716
|
-
"lut_wf[DiskChoppers] = disk_choppers\n",
|
|
715
|
+
"lut_wf[DiskChoppers[AnyRun]] = disk_choppers\n",
|
|
717
716
|
"\n",
|
|
718
717
|
"sim = lut_wf.compute(SimulationResults)\n",
|
|
719
718
|
"\n",
|
|
@@ -795,13 +794,13 @@
|
|
|
795
794
|
"metadata": {},
|
|
796
795
|
"outputs": [],
|
|
797
796
|
"source": [
|
|
798
|
-
"wf[
|
|
797
|
+
"wf[RawDetector[SampleRun]] = ess_beamline.get_monitor(\"detector\")[0]\n",
|
|
799
798
|
"wf[DetectorLtotal[SampleRun]] = Ltotal\n",
|
|
800
799
|
"\n",
|
|
801
800
|
"wf[TimeOfFlightLookupTable] = table\n",
|
|
802
801
|
"\n",
|
|
803
802
|
"# Compute time-of-flight\n",
|
|
804
|
-
"tofs = wf.compute(
|
|
803
|
+
"tofs = wf.compute(TofDetector[SampleRun])\n",
|
|
805
804
|
"# Compute wavelength\n",
|
|
806
805
|
"wav_wfm = tofs.transform_coords(\"wavelength\", graph=graph)\n",
|
|
807
806
|
"\n",
|
|
@@ -823,17 +822,6 @@
|
|
|
823
822
|
"display_name": "Python 3 (ipykernel)",
|
|
824
823
|
"language": "python",
|
|
825
824
|
"name": "python3"
|
|
826
|
-
},
|
|
827
|
-
"language_info": {
|
|
828
|
-
"codemirror_mode": {
|
|
829
|
-
"name": "ipython",
|
|
830
|
-
"version": 3
|
|
831
|
-
},
|
|
832
|
-
"file_extension": ".py",
|
|
833
|
-
"mimetype": "text/x-python",
|
|
834
|
-
"name": "python",
|
|
835
|
-
"nbconvert_exporter": "python",
|
|
836
|
-
"pygments_lexer": "ipython3"
|
|
837
825
|
}
|
|
838
826
|
},
|
|
839
827
|
"nbformat": 4,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"cells": [
|
|
3
3
|
{
|
|
4
|
-
"attachments": {},
|
|
5
4
|
"cell_type": "markdown",
|
|
6
5
|
"id": "0",
|
|
7
6
|
"metadata": {},
|
|
@@ -32,7 +31,7 @@
|
|
|
32
31
|
"import plopp as pp\n",
|
|
33
32
|
"import scipp as sc\n",
|
|
34
33
|
"from scippneutron.chopper import DiskChopper\n",
|
|
35
|
-
"from ess.reduce.nexus.types import
|
|
34
|
+
"from ess.reduce.nexus.types import AnyRun, RawDetector, SampleRun\n",
|
|
36
35
|
"from ess.reduce.time_of_flight import *\n",
|
|
37
36
|
"import tof\n",
|
|
38
37
|
"\n",
|
|
@@ -161,10 +160,10 @@
|
|
|
161
160
|
"source": [
|
|
162
161
|
"wf = GenericTofWorkflow(run_types=[SampleRun], monitor_types=[])\n",
|
|
163
162
|
"\n",
|
|
164
|
-
"wf[
|
|
163
|
+
"wf[RawDetector[SampleRun]] = nxevent_data\n",
|
|
165
164
|
"wf[DetectorLtotal[SampleRun]] = nxevent_data.coords[\"Ltotal\"]\n",
|
|
166
165
|
"\n",
|
|
167
|
-
"wf.visualize(
|
|
166
|
+
"wf.visualize(TofDetector[SampleRun])"
|
|
168
167
|
]
|
|
169
168
|
},
|
|
170
169
|
{
|
|
@@ -212,7 +211,7 @@
|
|
|
212
211
|
"source": [
|
|
213
212
|
"lut_wf = TofLookupTableWorkflow()\n",
|
|
214
213
|
"lut_wf[LtotalRange] = detectors[0].distance, detectors[-1].distance\n",
|
|
215
|
-
"lut_wf[DiskChoppers] = {\n",
|
|
214
|
+
"lut_wf[DiskChoppers[AnyRun]] = {\n",
|
|
216
215
|
" \"chopper\": DiskChopper(\n",
|
|
217
216
|
" frequency=-chopper.frequency,\n",
|
|
218
217
|
" beam_position=sc.scalar(0.0, unit=\"deg\"),\n",
|
|
@@ -271,7 +270,7 @@
|
|
|
271
270
|
"wf[TimeOfFlightLookupTable] = table\n",
|
|
272
271
|
"\n",
|
|
273
272
|
"# Compute neutron tofs\n",
|
|
274
|
-
"tofs = wf.compute(
|
|
273
|
+
"tofs = wf.compute(TofDetector[SampleRun])\n",
|
|
275
274
|
"\n",
|
|
276
275
|
"tof_hist = tofs.hist(tof=sc.scalar(500.0, unit=\"us\"))\n",
|
|
277
276
|
"pp.plot({det.name: tof_hist[\"detector_number\", i] for i, det in enumerate(detectors)})"
|
|
@@ -399,7 +398,7 @@
|
|
|
399
398
|
"lut_wf = TofLookupTableWorkflow()\n",
|
|
400
399
|
"lut_wf[PulseStride] = 2\n",
|
|
401
400
|
"lut_wf[LtotalRange] = detectors[0].distance, detectors[-1].distance\n",
|
|
402
|
-
"lut_wf[DiskChoppers] = {\n",
|
|
401
|
+
"lut_wf[DiskChoppers[AnyRun]] = {\n",
|
|
403
402
|
" ch.name: DiskChopper(\n",
|
|
404
403
|
" frequency=-ch.frequency,\n",
|
|
405
404
|
" beam_position=sc.scalar(0.0, unit=\"deg\"),\n",
|
|
@@ -456,11 +455,11 @@
|
|
|
456
455
|
"# Reduction workflow\n",
|
|
457
456
|
"wf = GenericTofWorkflow(run_types=[SampleRun], monitor_types=[])\n",
|
|
458
457
|
"nxevent_data = results.to_nxevent_data()\n",
|
|
459
|
-
"wf[
|
|
458
|
+
"wf[RawDetector[SampleRun]] = nxevent_data\n",
|
|
460
459
|
"wf[DetectorLtotal[SampleRun]] = nxevent_data.coords[\"Ltotal\"]\n",
|
|
461
460
|
"wf[TimeOfFlightLookupTable] = table\n",
|
|
462
461
|
"\n",
|
|
463
|
-
"tofs = wf.compute(
|
|
462
|
+
"tofs = wf.compute(TofDetector[SampleRun])\n",
|
|
464
463
|
"\n",
|
|
465
464
|
"tof_hist = tofs.hist(tof=sc.scalar(500.0, unit=\"us\"))\n",
|
|
466
465
|
"pp.plot({det.name: tof_hist[\"detector_number\", i] for i, det in enumerate(detectors)})"
|
|
@@ -500,24 +499,7 @@
|
|
|
500
499
|
]
|
|
501
500
|
}
|
|
502
501
|
],
|
|
503
|
-
"metadata": {
|
|
504
|
-
"kernelspec": {
|
|
505
|
-
"display_name": "Python 3 (ipykernel)",
|
|
506
|
-
"language": "python",
|
|
507
|
-
"name": "python3"
|
|
508
|
-
},
|
|
509
|
-
"language_info": {
|
|
510
|
-
"codemirror_mode": {
|
|
511
|
-
"name": "ipython",
|
|
512
|
-
"version": 3
|
|
513
|
-
},
|
|
514
|
-
"file_extension": ".py",
|
|
515
|
-
"mimetype": "text/x-python",
|
|
516
|
-
"name": "python",
|
|
517
|
-
"nbconvert_exporter": "python",
|
|
518
|
-
"pygments_lexer": "ipython3"
|
|
519
|
-
}
|
|
520
|
-
},
|
|
502
|
+
"metadata": {},
|
|
521
503
|
"nbformat": 4,
|
|
522
504
|
"nbformat_minor": 5
|
|
523
505
|
}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"import plopp as pp\n",
|
|
26
26
|
"import scipp as sc\n",
|
|
27
27
|
"from scippneutron.chopper import DiskChopper\n",
|
|
28
|
-
"from ess.reduce.nexus.types import
|
|
28
|
+
"from ess.reduce.nexus.types import AnyRun, RawDetector, SampleRun\n",
|
|
29
29
|
"from ess.reduce.time_of_flight import *"
|
|
30
30
|
]
|
|
31
31
|
},
|
|
@@ -321,10 +321,10 @@
|
|
|
321
321
|
"source": [
|
|
322
322
|
"wf = GenericTofWorkflow(run_types=[SampleRun], monitor_types=[])\n",
|
|
323
323
|
"\n",
|
|
324
|
-
"wf[
|
|
324
|
+
"wf[RawDetector[SampleRun]] = raw_data\n",
|
|
325
325
|
"wf[DetectorLtotal[SampleRun]] = Ltotal\n",
|
|
326
326
|
"\n",
|
|
327
|
-
"wf.visualize(
|
|
327
|
+
"wf.visualize(TofDetector[SampleRun])"
|
|
328
328
|
]
|
|
329
329
|
},
|
|
330
330
|
{
|
|
@@ -361,7 +361,7 @@
|
|
|
361
361
|
"outputs": [],
|
|
362
362
|
"source": [
|
|
363
363
|
"lut_wf = TofLookupTableWorkflow()\n",
|
|
364
|
-
"lut_wf[DiskChoppers] = disk_choppers\n",
|
|
364
|
+
"lut_wf[DiskChoppers[AnyRun]] = disk_choppers\n",
|
|
365
365
|
"lut_wf[SourcePosition] = source_position\n",
|
|
366
366
|
"lut_wf[LtotalRange] = Ltotal, Ltotal\n",
|
|
367
367
|
"lut_wf[LookupTableRelativeErrorThreshold] = 0.1\n",
|
|
@@ -442,7 +442,6 @@
|
|
|
442
442
|
]
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
|
-
"attachments": {},
|
|
446
445
|
"cell_type": "markdown",
|
|
447
446
|
"id": "27",
|
|
448
447
|
"metadata": {},
|
|
@@ -466,7 +465,7 @@
|
|
|
466
465
|
"source": [
|
|
467
466
|
"wf[TimeOfFlightLookupTable] = table\n",
|
|
468
467
|
"\n",
|
|
469
|
-
"tofs = wf.compute(
|
|
468
|
+
"tofs = wf.compute(TofDetector[SampleRun])\n",
|
|
470
469
|
"tofs"
|
|
471
470
|
]
|
|
472
471
|
},
|
|
@@ -549,24 +548,7 @@
|
|
|
549
548
|
]
|
|
550
549
|
}
|
|
551
550
|
],
|
|
552
|
-
"metadata": {
|
|
553
|
-
"kernelspec": {
|
|
554
|
-
"display_name": "Python 3 (ipykernel)",
|
|
555
|
-
"language": "python",
|
|
556
|
-
"name": "python3"
|
|
557
|
-
},
|
|
558
|
-
"language_info": {
|
|
559
|
-
"codemirror_mode": {
|
|
560
|
-
"name": "ipython",
|
|
561
|
-
"version": 3
|
|
562
|
-
},
|
|
563
|
-
"file_extension": ".py",
|
|
564
|
-
"mimetype": "text/x-python",
|
|
565
|
-
"name": "python",
|
|
566
|
-
"nbconvert_exporter": "python",
|
|
567
|
-
"pygments_lexer": "ipython3"
|
|
568
|
-
}
|
|
569
|
-
},
|
|
551
|
+
"metadata": {},
|
|
570
552
|
"nbformat": 4,
|
|
571
553
|
"nbformat_minor": 5
|
|
572
554
|
}
|
|
@@ -30,10 +30,10 @@ requires-python = ">=3.11"
|
|
|
30
30
|
# Run 'tox -e deps' after making changes here. This will update requirement files.
|
|
31
31
|
# Make sure to list one dependency per line.
|
|
32
32
|
dependencies = [
|
|
33
|
-
"sciline>=25.
|
|
33
|
+
"sciline>=25.11.0",
|
|
34
34
|
"scipp>=25.04.0",
|
|
35
35
|
"scippneutron>=25.02.0",
|
|
36
|
-
"scippnexus>=
|
|
36
|
+
"scippnexus>=25.06.0",
|
|
37
37
|
]
|
|
38
38
|
|
|
39
39
|
dynamic = ["version"]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# will not be touched by ``make_base.py``
|
|
3
3
|
# --- END OF CUSTOM SECTION ---
|
|
4
4
|
# The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY!
|
|
5
|
-
sciline>=25.
|
|
5
|
+
sciline>=25.11.0
|
|
6
6
|
scipp>=25.04.0
|
|
7
7
|
scippneutron>=25.02.0
|
|
8
|
-
scippnexus>=
|
|
8
|
+
scippnexus>=25.06.0
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SHA1:
|
|
1
|
+
# SHA1:e86f9d2876cf304569910ff89826c8e5aac84bf8
|
|
2
2
|
#
|
|
3
3
|
# This file was generated by pip-compile-multi.
|
|
4
4
|
# To update, run:
|
|
@@ -7,39 +7,39 @@
|
|
|
7
7
|
#
|
|
8
8
|
annotated-types==0.7.0
|
|
9
9
|
# via pydantic
|
|
10
|
-
contourpy==1.3.
|
|
10
|
+
contourpy==1.3.3
|
|
11
11
|
# via matplotlib
|
|
12
12
|
cyclebane==24.10.0
|
|
13
13
|
# via sciline
|
|
14
14
|
cycler==0.12.1
|
|
15
15
|
# via matplotlib
|
|
16
|
-
dnspython==2.
|
|
16
|
+
dnspython==2.8.0
|
|
17
17
|
# via email-validator
|
|
18
|
-
email-validator==2.
|
|
18
|
+
email-validator==2.3.0
|
|
19
19
|
# via scippneutron
|
|
20
|
-
fonttools==4.
|
|
20
|
+
fonttools==4.60.1
|
|
21
21
|
# via matplotlib
|
|
22
|
-
h5py==3.
|
|
22
|
+
h5py==3.15.1
|
|
23
23
|
# via
|
|
24
24
|
# scippneutron
|
|
25
25
|
# scippnexus
|
|
26
|
-
idna==3.
|
|
26
|
+
idna==3.11
|
|
27
27
|
# via email-validator
|
|
28
|
-
kiwisolver==1.4.
|
|
28
|
+
kiwisolver==1.4.9
|
|
29
29
|
# via matplotlib
|
|
30
30
|
lazy-loader==0.4
|
|
31
31
|
# via
|
|
32
32
|
# plopp
|
|
33
33
|
# scippneutron
|
|
34
|
-
matplotlib==3.10.
|
|
34
|
+
matplotlib==3.10.7
|
|
35
35
|
# via
|
|
36
36
|
# mpltoolbox
|
|
37
37
|
# plopp
|
|
38
|
-
mpltoolbox==25.
|
|
38
|
+
mpltoolbox==25.10.0
|
|
39
39
|
# via scippneutron
|
|
40
|
-
networkx==3.
|
|
40
|
+
networkx==3.5
|
|
41
41
|
# via cyclebane
|
|
42
|
-
numpy==2.
|
|
42
|
+
numpy==2.3.4
|
|
43
43
|
# via
|
|
44
44
|
# contourpy
|
|
45
45
|
# h5py
|
|
@@ -51,22 +51,22 @@ packaging==25.0
|
|
|
51
51
|
# via
|
|
52
52
|
# lazy-loader
|
|
53
53
|
# matplotlib
|
|
54
|
-
pillow==
|
|
54
|
+
pillow==12.0.0
|
|
55
55
|
# via matplotlib
|
|
56
|
-
plopp==25.
|
|
56
|
+
plopp==25.10.0
|
|
57
57
|
# via scippneutron
|
|
58
|
-
pydantic==2.
|
|
58
|
+
pydantic==2.12.3
|
|
59
59
|
# via scippneutron
|
|
60
|
-
pydantic-core==2.
|
|
60
|
+
pydantic-core==2.41.4
|
|
61
61
|
# via pydantic
|
|
62
|
-
pyparsing==3.2.
|
|
62
|
+
pyparsing==3.2.5
|
|
63
63
|
# via matplotlib
|
|
64
64
|
python-dateutil==2.9.0.post0
|
|
65
65
|
# via
|
|
66
66
|
# matplotlib
|
|
67
67
|
# scippneutron
|
|
68
68
|
# scippnexus
|
|
69
|
-
sciline==25.
|
|
69
|
+
sciline==25.11.0
|
|
70
70
|
# via -r base.in
|
|
71
71
|
scipp==25.8.0
|
|
72
72
|
# via
|
|
@@ -79,17 +79,17 @@ scippnexus==25.6.0
|
|
|
79
79
|
# via
|
|
80
80
|
# -r base.in
|
|
81
81
|
# scippneutron
|
|
82
|
-
scipy==1.
|
|
82
|
+
scipy==1.16.3
|
|
83
83
|
# via
|
|
84
84
|
# scippneutron
|
|
85
85
|
# scippnexus
|
|
86
86
|
six==1.17.0
|
|
87
87
|
# via python-dateutil
|
|
88
|
-
typing-extensions==4.
|
|
88
|
+
typing-extensions==4.15.0
|
|
89
89
|
# via
|
|
90
90
|
# pydantic
|
|
91
91
|
# pydantic-core
|
|
92
92
|
# sciline
|
|
93
93
|
# typing-inspection
|
|
94
|
-
typing-inspection==0.4.
|
|
94
|
+
typing-inspection==0.4.2
|
|
95
95
|
# via pydantic
|
|
@@ -7,49 +7,51 @@
|
|
|
7
7
|
#
|
|
8
8
|
asttokens==3.0.0
|
|
9
9
|
# via stack-data
|
|
10
|
-
certifi==2025.
|
|
10
|
+
certifi==2025.10.5
|
|
11
11
|
# via requests
|
|
12
|
-
charset-normalizer==3.4.
|
|
12
|
+
charset-normalizer==3.4.4
|
|
13
13
|
# via requests
|
|
14
|
-
comm==0.2.
|
|
14
|
+
comm==0.2.3
|
|
15
15
|
# via ipywidgets
|
|
16
|
-
contourpy==1.3.
|
|
16
|
+
contourpy==1.3.3
|
|
17
17
|
# via matplotlib
|
|
18
18
|
cycler==0.12.1
|
|
19
19
|
# via matplotlib
|
|
20
20
|
decorator==5.2.1
|
|
21
21
|
# via ipython
|
|
22
|
-
executing==2.2.
|
|
22
|
+
executing==2.2.1
|
|
23
23
|
# via stack-data
|
|
24
|
-
fonttools==4.
|
|
24
|
+
fonttools==4.60.1
|
|
25
25
|
# via matplotlib
|
|
26
|
-
idna==3.
|
|
26
|
+
idna==3.11
|
|
27
27
|
# via requests
|
|
28
|
-
iniconfig==2.
|
|
28
|
+
iniconfig==2.3.0
|
|
29
29
|
# via pytest
|
|
30
|
-
ipython==
|
|
30
|
+
ipython==9.6.0
|
|
31
31
|
# via ipywidgets
|
|
32
|
-
|
|
32
|
+
ipython-pygments-lexers==1.1.1
|
|
33
|
+
# via ipython
|
|
34
|
+
ipywidgets==8.1.8
|
|
33
35
|
# via -r basetest.in
|
|
34
36
|
jedi==0.19.2
|
|
35
37
|
# via ipython
|
|
36
|
-
jupyterlab-widgets==3.0.
|
|
38
|
+
jupyterlab-widgets==3.0.16
|
|
37
39
|
# via ipywidgets
|
|
38
|
-
kiwisolver==1.4.
|
|
40
|
+
kiwisolver==1.4.9
|
|
39
41
|
# via matplotlib
|
|
40
42
|
lazy-loader==0.4
|
|
41
43
|
# via
|
|
42
44
|
# plopp
|
|
43
45
|
# tof
|
|
44
|
-
llvmlite==0.
|
|
46
|
+
llvmlite==0.45.1
|
|
45
47
|
# via numba
|
|
46
|
-
matplotlib==3.10.
|
|
48
|
+
matplotlib==3.10.7
|
|
47
49
|
# via plopp
|
|
48
|
-
matplotlib-inline==0.1
|
|
50
|
+
matplotlib-inline==0.2.1
|
|
49
51
|
# via ipython
|
|
50
|
-
numba==0.
|
|
52
|
+
numba==0.62.1
|
|
51
53
|
# via -r basetest.in
|
|
52
|
-
numpy==2.
|
|
54
|
+
numpy==2.3.4
|
|
53
55
|
# via
|
|
54
56
|
# contourpy
|
|
55
57
|
# matplotlib
|
|
@@ -62,21 +64,21 @@ packaging==25.0
|
|
|
62
64
|
# matplotlib
|
|
63
65
|
# pooch
|
|
64
66
|
# pytest
|
|
65
|
-
parso==0.8.
|
|
67
|
+
parso==0.8.5
|
|
66
68
|
# via jedi
|
|
67
69
|
pexpect==4.9.0
|
|
68
70
|
# via ipython
|
|
69
|
-
pillow==
|
|
71
|
+
pillow==12.0.0
|
|
70
72
|
# via matplotlib
|
|
71
|
-
platformdirs==4.
|
|
73
|
+
platformdirs==4.5.0
|
|
72
74
|
# via pooch
|
|
73
|
-
plopp==25.
|
|
75
|
+
plopp==25.10.0
|
|
74
76
|
# via tof
|
|
75
77
|
pluggy==1.6.0
|
|
76
78
|
# via pytest
|
|
77
79
|
pooch==1.8.2
|
|
78
80
|
# via -r basetest.in
|
|
79
|
-
prompt-toolkit==3.0.
|
|
81
|
+
prompt-toolkit==3.0.52
|
|
80
82
|
# via ipython
|
|
81
83
|
ptyprocess==0.7.0
|
|
82
84
|
# via pexpect
|
|
@@ -85,18 +87,19 @@ pure-eval==0.2.3
|
|
|
85
87
|
pygments==2.19.2
|
|
86
88
|
# via
|
|
87
89
|
# ipython
|
|
90
|
+
# ipython-pygments-lexers
|
|
88
91
|
# pytest
|
|
89
|
-
pyparsing==3.2.
|
|
92
|
+
pyparsing==3.2.5
|
|
90
93
|
# via matplotlib
|
|
91
|
-
pytest==8.4.
|
|
94
|
+
pytest==8.4.2
|
|
92
95
|
# via -r basetest.in
|
|
93
96
|
python-dateutil==2.9.0.post0
|
|
94
97
|
# via matplotlib
|
|
95
|
-
requests==2.32.
|
|
98
|
+
requests==2.32.5
|
|
96
99
|
# via pooch
|
|
97
100
|
scipp==25.8.0
|
|
98
101
|
# via tof
|
|
99
|
-
scipy==1.
|
|
102
|
+
scipy==1.16.3
|
|
100
103
|
# via
|
|
101
104
|
# -r basetest.in
|
|
102
105
|
# tof
|
|
@@ -104,19 +107,18 @@ six==1.17.0
|
|
|
104
107
|
# via python-dateutil
|
|
105
108
|
stack-data==0.6.3
|
|
106
109
|
# via ipython
|
|
107
|
-
tof==25.
|
|
110
|
+
tof==25.10.1
|
|
108
111
|
# via -r basetest.in
|
|
109
112
|
traitlets==5.14.3
|
|
110
113
|
# via
|
|
111
|
-
# comm
|
|
112
114
|
# ipython
|
|
113
115
|
# ipywidgets
|
|
114
116
|
# matplotlib-inline
|
|
115
|
-
typing-extensions==4.
|
|
117
|
+
typing-extensions==4.15.0
|
|
116
118
|
# via ipython
|
|
117
119
|
urllib3==2.5.0
|
|
118
120
|
# via requests
|
|
119
|
-
wcwidth==0.2.
|
|
121
|
+
wcwidth==0.2.14
|
|
120
122
|
# via prompt-toolkit
|
|
121
|
-
widgetsnbextension==4.0.
|
|
123
|
+
widgetsnbextension==4.0.15
|
|
122
124
|
# via ipywidgets
|