essreduce 25.3.0__tar.gz → 25.4.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.3.0 → essreduce-25.4.0}/.copier-answers.yml +1 -1
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/workflows/docs.yml +3 -1
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/workflows/release.yml +1 -1
- {essreduce-25.3.0 → essreduce-25.4.0}/.gitignore +1 -0
- {essreduce-25.3.0/src/essreduce.egg-info → essreduce-25.4.0}/PKG-INFO +4 -2
- essreduce-25.4.0/docs/index.md +49 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/user-guide/index.md +3 -3
- essreduce-25.4.0/docs/user-guide/installation.md +16 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/user-guide/tof/dream.ipynb +72 -51
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/user-guide/tof/frame-unwrapping.ipynb +3 -1
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/user-guide/tof/wfm.ipynb +47 -26
- {essreduce-25.3.0 → essreduce-25.4.0}/pyproject.toml +1 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/base.in +2 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/base.txt +19 -13
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/basetest.in +1 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/basetest.txt +28 -12
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/ci.txt +11 -5
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/dev.txt +8 -8
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/docs.txt +15 -11
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/nightly.in +1 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/nightly.txt +32 -15
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/static.txt +5 -5
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/wheels.txt +2 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/live/raw.py +10 -4
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/nexus/_nexus_loader.py +5 -5
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/nexus/workflow.py +3 -1
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/streaming.py +91 -8
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/time_of_flight/__init__.py +1 -1
- essreduce-25.3.0/src/ess/reduce/time_of_flight/toa_to_tof.py → essreduce-25.4.0/src/ess/reduce/time_of_flight/eto_to_tof.py +114 -67
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/time_of_flight/fakes.py +8 -1
- essreduce-25.4.0/src/ess/reduce/time_of_flight/interpolator_numba.py +162 -0
- essreduce-25.4.0/src/ess/reduce/time_of_flight/interpolator_scipy.py +60 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/time_of_flight/simulation.py +9 -2
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/time_of_flight/to_events.py +2 -2
- {essreduce-25.3.0 → essreduce-25.4.0/src/essreduce.egg-info}/PKG-INFO +4 -2
- {essreduce-25.3.0 → essreduce-25.4.0}/src/essreduce.egg-info/SOURCES.txt +5 -1
- {essreduce-25.3.0 → essreduce-25.4.0}/src/essreduce.egg-info/requires.txt +1 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/nexus_loader_test.py +9 -9
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/workflow_test.py +4 -1
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/streaming_test.py +527 -0
- essreduce-25.4.0/tests/time_of_flight/interpolator_test.py +76 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/time_of_flight/unwrap_test.py +145 -75
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/time_of_flight/wfm_test.py +28 -9
- {essreduce-25.3.0 → essreduce-25.4.0}/tox.ini +2 -0
- essreduce-25.3.0/docs/index.md +0 -17
- {essreduce-25.3.0 → essreduce-25.4.0}/.copier-answers.ess.yml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/ISSUE_TEMPLATE/blank.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/ISSUE_TEMPLATE/high-level-requirement.yml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/dependabot.yml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/workflows/ci.yml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/workflows/nightly_at_main.yml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/workflows/nightly_at_release.yml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/workflows/python-version-ci +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/workflows/test.yml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/workflows/unpinned.yml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.github/workflows/weekly_windows_macos.yml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.pre-commit-config.yaml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/.python-version +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/CODE_OF_CONDUCT.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/CONTRIBUTING.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/LICENSE +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/MANIFEST.in +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/README.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/conda/meta.yaml +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/_static/anaconda-icon.js +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/_static/favicon.svg +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/_static/logo-dark.svg +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/_static/logo.svg +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/_templates/class-template.rst +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/_templates/doc_version.html +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/_templates/module-template.rst +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/about/index.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/api-reference/index.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/conf.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/developer/coding-conventions.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/developer/dependency-management.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/developer/getting-started.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/developer/gui.ipynb +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/developer/index.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/user-guide/reduction-workflow-guidelines.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/user-guide/tof/index.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/docs/user-guide/widget.md +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/ci.in +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/dev.in +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/docs.in +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/make_base.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/mypy.in +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/mypy.txt +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/static.in +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/test.in +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/test.txt +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/requirements/wheels.in +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/resources/logo.svg +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/setup.cfg +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/__init__.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/data.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/live/__init__.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/live/roi.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/live/workflow.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/logging.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/nexus/__init__.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/nexus/json_generator.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/nexus/json_nexus.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/nexus/types.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/parameter.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/py.typed +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/scripts/grow_nexus.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/time_of_flight/types.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/ui.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/uncertainty.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/__init__.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_base.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_binedges_widget.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_bounds_widget.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_config.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_filename_widget.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_linspace_widget.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_optional_widget.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_spinner.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_string_widget.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_switchable_widget.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/widgets/_vector_widget.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/ess/reduce/workflow.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/essreduce.egg-info/dependency_links.txt +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/essreduce.egg-info/entry_points.txt +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/src/essreduce.egg-info/top_level.txt +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/live/raw_test.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/live/roi_test.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/json_generator_test.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/json_nexus_examples/array_dataset.json +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/json_nexus_examples/dataset.json +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/json_nexus_examples/detector.json +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/json_nexus_examples/entry.json +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/json_nexus_examples/event_data.json +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/json_nexus_examples/instrument.json +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/json_nexus_examples/log.json +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/nexus/json_nexus_test.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/package_test.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/scripts/test_grow_nexus.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/time_of_flight/to_events_test.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/uncertainty_test.py +0 -0
- {essreduce-25.3.0 → essreduce-25.4.0}/tests/widget_test.py +0 -0
|
@@ -65,11 +65,13 @@ jobs:
|
|
|
65
65
|
- run: tox -e linkcheck
|
|
66
66
|
if: ${{ inputs.linkcheck }}
|
|
67
67
|
- uses: actions/upload-artifact@v4
|
|
68
|
+
id: artifact-upload-step
|
|
68
69
|
with:
|
|
69
70
|
name: docs_html
|
|
70
71
|
path: html/
|
|
72
|
+
- run: echo "::notice::https://remote-unzip.deno.dev/${{ github.repository }}/artifacts/${{ steps.artifact-upload-step.outputs.artifact-id }}"
|
|
71
73
|
|
|
72
|
-
- uses: JamesIves/github-pages-deploy-action@v4.7.
|
|
74
|
+
- uses: JamesIves/github-pages-deploy-action@v4.7.3
|
|
73
75
|
if: ${{ inputs.publish }}
|
|
74
76
|
with:
|
|
75
77
|
branch: gh-pages
|
|
@@ -68,7 +68,7 @@ jobs:
|
|
|
68
68
|
if: github.event_name == 'release' && github.event.action == 'published'
|
|
69
69
|
steps:
|
|
70
70
|
- uses: actions/download-artifact@v4
|
|
71
|
-
- uses: pypa/gh-action-pypi-publish@v1.
|
|
71
|
+
- uses: pypa/gh-action-pypi-publish@v1.12.4
|
|
72
72
|
|
|
73
73
|
upload_conda:
|
|
74
74
|
name: Deploy Conda
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: essreduce
|
|
3
|
-
Version: 25.
|
|
3
|
+
Version: 25.4.0
|
|
4
4
|
Summary: Common data reduction tools for the ESS facility
|
|
5
5
|
Author: Scipp contributors
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -57,10 +57,12 @@ Requires-Dist: scippneutron>=25.02.0
|
|
|
57
57
|
Requires-Dist: scippnexus>=24.11.0
|
|
58
58
|
Provides-Extra: test
|
|
59
59
|
Requires-Dist: ipywidgets; extra == "test"
|
|
60
|
+
Requires-Dist: numba; extra == "test"
|
|
60
61
|
Requires-Dist: pooch; extra == "test"
|
|
61
62
|
Requires-Dist: pytest; extra == "test"
|
|
62
63
|
Requires-Dist: scipy>=1.7.0; extra == "test"
|
|
63
64
|
Requires-Dist: tof>=25.01.2; extra == "test"
|
|
65
|
+
Dynamic: license-file
|
|
64
66
|
|
|
65
67
|
[](CODE_OF_CONDUCT.md)
|
|
66
68
|
[](https://pypi.python.org/pypi/essreduce)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
:::{image} _static/logo.svg
|
|
2
|
+
:class: only-light
|
|
3
|
+
:alt: ESSreduce
|
|
4
|
+
:width: 60%
|
|
5
|
+
:align: center
|
|
6
|
+
:::
|
|
7
|
+
:::{image} _static/logo-dark.svg
|
|
8
|
+
:class: only-dark
|
|
9
|
+
:alt: ESSreduce
|
|
10
|
+
:width: 60%
|
|
11
|
+
:align: center
|
|
12
|
+
:::
|
|
13
|
+
|
|
14
|
+
```{raw} html
|
|
15
|
+
<style>
|
|
16
|
+
.transparent {display: none; visibility: hidden;}
|
|
17
|
+
.transparent + a.headerlink {display: none; visibility: hidden;}
|
|
18
|
+
</style>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```{role} transparent
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
# {transparent}`ESSreduce`
|
|
25
|
+
|
|
26
|
+
<span style="font-size:1.2em;font-style:italic;color:var(--pst-color-text-muted)">
|
|
27
|
+
Common data reduction tools for the ESS facility
|
|
28
|
+
</br></br>
|
|
29
|
+
</span>
|
|
30
|
+
|
|
31
|
+
:::{include} user-guide/installation.md
|
|
32
|
+
:heading-offset: 1
|
|
33
|
+
:::
|
|
34
|
+
|
|
35
|
+
## Get in touch
|
|
36
|
+
|
|
37
|
+
- If you have questions that are not answered by these documentation pages, ask on [discussions](https://github.com/scipp/essreduce/discussions). Please include a self-contained reproducible example if possible.
|
|
38
|
+
- Report bugs (including unclear, missing, or wrong documentation!), suggest features or view the source code [on GitHub](https://github.com/scipp/essreduce).
|
|
39
|
+
|
|
40
|
+
```{toctree}
|
|
41
|
+
---
|
|
42
|
+
hidden:
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
user-guide/index
|
|
46
|
+
api-reference/index
|
|
47
|
+
developer/index
|
|
48
|
+
about/index
|
|
49
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Installation
|
|
2
|
+
|
|
3
|
+
To install ESSreduce and all of its dependencies, use
|
|
4
|
+
|
|
5
|
+
`````{tab-set}
|
|
6
|
+
````{tab-item} pip
|
|
7
|
+
```sh
|
|
8
|
+
pip install essreduce
|
|
9
|
+
```
|
|
10
|
+
````
|
|
11
|
+
````{tab-item} conda
|
|
12
|
+
```sh
|
|
13
|
+
conda install -c conda-forge -c scipp essreduce
|
|
14
|
+
```
|
|
15
|
+
````
|
|
16
|
+
`````
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
" frequency=sc.scalar(14.0, unit=\"Hz\"),\n",
|
|
60
60
|
" beam_position=sc.scalar(0.0, unit=\"deg\"),\n",
|
|
61
61
|
" phase=sc.scalar(286 - 180, unit=\"deg\"),\n",
|
|
62
|
-
" axle_position=sc.vector(value=[0, 0,
|
|
62
|
+
" axle_position=sc.vector(value=[0, 0, -70.405], unit=\"m\"),\n",
|
|
63
63
|
" slit_begin=sc.array(\n",
|
|
64
64
|
" dims=[\"cutout\"],\n",
|
|
65
65
|
" values=[-1.23, 70.49, 84.765, 113.565, 170.29, 271.635, 286.035, 301.17],\n",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
" frequency=sc.scalar(-14.0, unit=\"Hz\"),\n",
|
|
79
79
|
" beam_position=sc.scalar(0.0, unit=\"deg\"),\n",
|
|
80
80
|
" phase=sc.scalar(-236, unit=\"deg\"),\n",
|
|
81
|
-
" axle_position=sc.vector(value=[0, 0,
|
|
81
|
+
" axle_position=sc.vector(value=[0, 0, -70.395], unit=\"m\"),\n",
|
|
82
82
|
" slit_begin=sc.array(\n",
|
|
83
83
|
" dims=[\"cutout\"],\n",
|
|
84
84
|
" values=[-1.23, 27.0, 55.8, 142.385, 156.765, 214.115, 257.23, 315.49],\n",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
" frequency=sc.scalar(14.0, unit=\"Hz\"),\n",
|
|
98
98
|
" beam_position=sc.scalar(0.0, unit=\"deg\"),\n",
|
|
99
99
|
" phase=sc.scalar(297 - 180 - 90, unit=\"deg\"),\n",
|
|
100
|
-
" axle_position=sc.vector(value=[0, 0,
|
|
100
|
+
" axle_position=sc.vector(value=[0, 0, -70.376], unit=\"m\"),\n",
|
|
101
101
|
" slit_begin=sc.array(dims=[\"cutout\"], values=[-27.6 * 0.5], unit=\"deg\"),\n",
|
|
102
102
|
" slit_end=sc.array(dims=[\"cutout\"], values=[27.6 * 0.5], unit=\"deg\"),\n",
|
|
103
103
|
" slit_height=sc.scalar(10.0, unit=\"cm\"),\n",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
" frequency=sc.scalar(112.0, unit=\"Hz\"),\n",
|
|
109
109
|
" beam_position=sc.scalar(0.0, unit=\"deg\"),\n",
|
|
110
110
|
" phase=sc.scalar(240 - 180, unit=\"deg\"),\n",
|
|
111
|
-
" axle_position=sc.vector(value=[0, 0,
|
|
111
|
+
" axle_position=sc.vector(value=[0, 0, -66.77], unit=\"m\"),\n",
|
|
112
112
|
" slit_begin=sc.array(dims=[\"cutout\"], values=[-36.875, 143.125], unit=\"deg\"),\n",
|
|
113
113
|
" slit_end=sc.array(dims=[\"cutout\"], values=[36.875, 216.875], unit=\"deg\"),\n",
|
|
114
114
|
" slit_height=sc.scalar(10.0, unit=\"cm\"),\n",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
" frequency=sc.scalar(28.0, unit=\"Hz\"),\n",
|
|
120
120
|
" beam_position=sc.scalar(0.0, unit=\"deg\"),\n",
|
|
121
121
|
" phase=sc.scalar(280 - 180, unit=\"deg\"),\n",
|
|
122
|
-
" axle_position=sc.vector(value=[0, 0,
|
|
122
|
+
" axle_position=sc.vector(value=[0, 0, -63.5], unit=\"m\"),\n",
|
|
123
123
|
" slit_begin=sc.array(dims=[\"cutout\"], values=[-314.9 * 0.5], unit=\"deg\"),\n",
|
|
124
124
|
" slit_end=sc.array(dims=[\"cutout\"], values=[314.9 * 0.5], unit=\"deg\"),\n",
|
|
125
125
|
" slit_height=sc.scalar(10.0, unit=\"cm\"),\n",
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"id": "6",
|
|
153
153
|
"metadata": {},
|
|
154
154
|
"source": [
|
|
155
|
-
"
|
|
155
|
+
"Define the source position which is required to compute the distance that neutrons travelled."
|
|
156
156
|
]
|
|
157
157
|
},
|
|
158
158
|
{
|
|
@@ -162,13 +162,31 @@
|
|
|
162
162
|
"metadata": {},
|
|
163
163
|
"outputs": [],
|
|
164
164
|
"source": [
|
|
165
|
-
"
|
|
165
|
+
"source_position = sc.vector([0, 0, -76.55], unit=\"m\")"
|
|
166
166
|
]
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
"cell_type": "markdown",
|
|
170
170
|
"id": "8",
|
|
171
171
|
"metadata": {},
|
|
172
|
+
"source": [
|
|
173
|
+
"### Adding a detector"
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"cell_type": "code",
|
|
178
|
+
"execution_count": null,
|
|
179
|
+
"id": "9",
|
|
180
|
+
"metadata": {},
|
|
181
|
+
"outputs": [],
|
|
182
|
+
"source": [
|
|
183
|
+
"Ltotal = sc.scalar(76.55 + 1.125, unit=\"m\")"
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"cell_type": "markdown",
|
|
188
|
+
"id": "10",
|
|
189
|
+
"metadata": {},
|
|
172
190
|
"source": [
|
|
173
191
|
"## Creating some neutron events\n",
|
|
174
192
|
"\n",
|
|
@@ -178,7 +196,7 @@
|
|
|
178
196
|
{
|
|
179
197
|
"cell_type": "code",
|
|
180
198
|
"execution_count": null,
|
|
181
|
-
"id": "
|
|
199
|
+
"id": "11",
|
|
182
200
|
"metadata": {},
|
|
183
201
|
"outputs": [],
|
|
184
202
|
"source": [
|
|
@@ -186,6 +204,7 @@
|
|
|
186
204
|
"\n",
|
|
187
205
|
"ess_beamline = FakeBeamline(\n",
|
|
188
206
|
" choppers=disk_choppers,\n",
|
|
207
|
+
" source_position=source_position,\n",
|
|
189
208
|
" monitors={\"detector\": Ltotal},\n",
|
|
190
209
|
" run_length=sc.scalar(1 / 14, unit=\"s\") * 4,\n",
|
|
191
210
|
" events_per_pulse=200_000,\n",
|
|
@@ -194,7 +213,7 @@
|
|
|
194
213
|
},
|
|
195
214
|
{
|
|
196
215
|
"cell_type": "markdown",
|
|
197
|
-
"id": "
|
|
216
|
+
"id": "12",
|
|
198
217
|
"metadata": {},
|
|
199
218
|
"source": [
|
|
200
219
|
"The initial birth times and wavelengths of the generated neutrons can be visualized (for a single pulse):"
|
|
@@ -203,18 +222,18 @@
|
|
|
203
222
|
{
|
|
204
223
|
"cell_type": "code",
|
|
205
224
|
"execution_count": null,
|
|
206
|
-
"id": "
|
|
225
|
+
"id": "13",
|
|
207
226
|
"metadata": {},
|
|
208
227
|
"outputs": [],
|
|
209
228
|
"source": [
|
|
210
229
|
"one_pulse = ess_beamline.source.data[\"pulse\", 0]\n",
|
|
211
|
-
"one_pulse.hist(
|
|
230
|
+
"one_pulse.hist(birth_time=300).plot() + one_pulse.hist(wavelength=300).plot()"
|
|
212
231
|
]
|
|
213
232
|
},
|
|
214
233
|
{
|
|
215
234
|
"cell_type": "code",
|
|
216
235
|
"execution_count": null,
|
|
217
|
-
"id": "
|
|
236
|
+
"id": "14",
|
|
218
237
|
"metadata": {},
|
|
219
238
|
"outputs": [],
|
|
220
239
|
"source": [
|
|
@@ -223,7 +242,7 @@
|
|
|
223
242
|
},
|
|
224
243
|
{
|
|
225
244
|
"cell_type": "markdown",
|
|
226
|
-
"id": "
|
|
245
|
+
"id": "15",
|
|
227
246
|
"metadata": {},
|
|
228
247
|
"source": [
|
|
229
248
|
"From this fake beamline, we extract the raw neutron signal at our detector:"
|
|
@@ -232,7 +251,7 @@
|
|
|
232
251
|
{
|
|
233
252
|
"cell_type": "code",
|
|
234
253
|
"execution_count": null,
|
|
235
|
-
"id": "
|
|
254
|
+
"id": "16",
|
|
236
255
|
"metadata": {},
|
|
237
256
|
"outputs": [],
|
|
238
257
|
"source": [
|
|
@@ -244,7 +263,7 @@
|
|
|
244
263
|
},
|
|
245
264
|
{
|
|
246
265
|
"cell_type": "markdown",
|
|
247
|
-
"id": "
|
|
266
|
+
"id": "17",
|
|
248
267
|
"metadata": {},
|
|
249
268
|
"source": [
|
|
250
269
|
"The total number of neutrons in our sample data that make it through the to detector is:"
|
|
@@ -253,7 +272,7 @@
|
|
|
253
272
|
{
|
|
254
273
|
"cell_type": "code",
|
|
255
274
|
"execution_count": null,
|
|
256
|
-
"id": "
|
|
275
|
+
"id": "18",
|
|
257
276
|
"metadata": {},
|
|
258
277
|
"outputs": [],
|
|
259
278
|
"source": [
|
|
@@ -262,7 +281,7 @@
|
|
|
262
281
|
},
|
|
263
282
|
{
|
|
264
283
|
"cell_type": "markdown",
|
|
265
|
-
"id": "
|
|
284
|
+
"id": "19",
|
|
266
285
|
"metadata": {},
|
|
267
286
|
"source": [
|
|
268
287
|
"## Computing time-of-flight\n",
|
|
@@ -282,7 +301,7 @@
|
|
|
282
301
|
{
|
|
283
302
|
"cell_type": "code",
|
|
284
303
|
"execution_count": null,
|
|
285
|
-
"id": "
|
|
304
|
+
"id": "20",
|
|
286
305
|
"metadata": {},
|
|
287
306
|
"outputs": [],
|
|
288
307
|
"source": [
|
|
@@ -301,7 +320,7 @@
|
|
|
301
320
|
},
|
|
302
321
|
{
|
|
303
322
|
"cell_type": "markdown",
|
|
304
|
-
"id": "
|
|
323
|
+
"id": "21",
|
|
305
324
|
"metadata": {},
|
|
306
325
|
"source": [
|
|
307
326
|
"We can see from the workflow diagram that we are still missing the simulated neutrons that are used to build the lookup table.\n",
|
|
@@ -312,18 +331,18 @@
|
|
|
312
331
|
{
|
|
313
332
|
"cell_type": "code",
|
|
314
333
|
"execution_count": null,
|
|
315
|
-
"id": "
|
|
334
|
+
"id": "22",
|
|
316
335
|
"metadata": {},
|
|
317
336
|
"outputs": [],
|
|
318
337
|
"source": [
|
|
319
338
|
"workflow[time_of_flight.SimulationResults] = time_of_flight.simulate_beamline(\n",
|
|
320
|
-
" choppers=disk_choppers, neutrons=2_000_000\n",
|
|
339
|
+
" choppers=disk_choppers, source_position=source_position, neutrons=2_000_000\n",
|
|
321
340
|
")"
|
|
322
341
|
]
|
|
323
342
|
},
|
|
324
343
|
{
|
|
325
344
|
"cell_type": "markdown",
|
|
326
|
-
"id": "
|
|
345
|
+
"id": "23",
|
|
327
346
|
"metadata": {},
|
|
328
347
|
"source": [
|
|
329
348
|
"### Inspecting the lookup table\n",
|
|
@@ -340,7 +359,7 @@
|
|
|
340
359
|
{
|
|
341
360
|
"cell_type": "code",
|
|
342
361
|
"execution_count": null,
|
|
343
|
-
"id": "
|
|
362
|
+
"id": "24",
|
|
344
363
|
"metadata": {},
|
|
345
364
|
"outputs": [],
|
|
346
365
|
"source": [
|
|
@@ -368,7 +387,7 @@
|
|
|
368
387
|
},
|
|
369
388
|
{
|
|
370
389
|
"cell_type": "markdown",
|
|
371
|
-
"id": "
|
|
390
|
+
"id": "25",
|
|
372
391
|
"metadata": {},
|
|
373
392
|
"source": [
|
|
374
393
|
"The lookup table is then obtained by computing the weighted mean of the time-of-flight inside each time-of-arrival bin.\n",
|
|
@@ -379,7 +398,7 @@
|
|
|
379
398
|
{
|
|
380
399
|
"cell_type": "code",
|
|
381
400
|
"execution_count": null,
|
|
382
|
-
"id": "
|
|
401
|
+
"id": "26",
|
|
383
402
|
"metadata": {},
|
|
384
403
|
"outputs": [],
|
|
385
404
|
"source": [
|
|
@@ -392,7 +411,7 @@
|
|
|
392
411
|
{
|
|
393
412
|
"attachments": {},
|
|
394
413
|
"cell_type": "markdown",
|
|
395
|
-
"id": "
|
|
414
|
+
"id": "27",
|
|
396
415
|
"metadata": {},
|
|
397
416
|
"source": [
|
|
398
417
|
"### Computing a time-of-flight coordinate\n",
|
|
@@ -403,7 +422,7 @@
|
|
|
403
422
|
{
|
|
404
423
|
"cell_type": "code",
|
|
405
424
|
"execution_count": null,
|
|
406
|
-
"id": "
|
|
425
|
+
"id": "28",
|
|
407
426
|
"metadata": {},
|
|
408
427
|
"outputs": [],
|
|
409
428
|
"source": [
|
|
@@ -413,7 +432,7 @@
|
|
|
413
432
|
},
|
|
414
433
|
{
|
|
415
434
|
"cell_type": "markdown",
|
|
416
|
-
"id": "
|
|
435
|
+
"id": "29",
|
|
417
436
|
"metadata": {},
|
|
418
437
|
"source": [
|
|
419
438
|
"Histogramming the data for a plot should show a profile with 6 bumps that correspond to the frames:"
|
|
@@ -422,7 +441,7 @@
|
|
|
422
441
|
{
|
|
423
442
|
"cell_type": "code",
|
|
424
443
|
"execution_count": null,
|
|
425
|
-
"id": "
|
|
444
|
+
"id": "30",
|
|
426
445
|
"metadata": {},
|
|
427
446
|
"outputs": [],
|
|
428
447
|
"source": [
|
|
@@ -431,7 +450,7 @@
|
|
|
431
450
|
},
|
|
432
451
|
{
|
|
433
452
|
"cell_type": "markdown",
|
|
434
|
-
"id": "
|
|
453
|
+
"id": "31",
|
|
435
454
|
"metadata": {},
|
|
436
455
|
"source": [
|
|
437
456
|
"### Converting to wavelength\n",
|
|
@@ -442,7 +461,7 @@
|
|
|
442
461
|
{
|
|
443
462
|
"cell_type": "code",
|
|
444
463
|
"execution_count": null,
|
|
445
|
-
"id": "
|
|
464
|
+
"id": "32",
|
|
446
465
|
"metadata": {},
|
|
447
466
|
"outputs": [],
|
|
448
467
|
"source": [
|
|
@@ -462,7 +481,7 @@
|
|
|
462
481
|
},
|
|
463
482
|
{
|
|
464
483
|
"cell_type": "markdown",
|
|
465
|
-
"id": "
|
|
484
|
+
"id": "33",
|
|
466
485
|
"metadata": {},
|
|
467
486
|
"source": [
|
|
468
487
|
"### Comparing to the ground truth\n",
|
|
@@ -474,7 +493,7 @@
|
|
|
474
493
|
{
|
|
475
494
|
"cell_type": "code",
|
|
476
495
|
"execution_count": null,
|
|
477
|
-
"id": "
|
|
496
|
+
"id": "34",
|
|
478
497
|
"metadata": {},
|
|
479
498
|
"outputs": [],
|
|
480
499
|
"source": [
|
|
@@ -491,7 +510,7 @@
|
|
|
491
510
|
},
|
|
492
511
|
{
|
|
493
512
|
"cell_type": "markdown",
|
|
494
|
-
"id": "
|
|
513
|
+
"id": "35",
|
|
495
514
|
"metadata": {},
|
|
496
515
|
"source": [
|
|
497
516
|
"## Multiple detector pixels\n",
|
|
@@ -507,7 +526,7 @@
|
|
|
507
526
|
{
|
|
508
527
|
"cell_type": "code",
|
|
509
528
|
"execution_count": null,
|
|
510
|
-
"id": "
|
|
529
|
+
"id": "36",
|
|
511
530
|
"metadata": {},
|
|
512
531
|
"outputs": [],
|
|
513
532
|
"source": [
|
|
@@ -516,6 +535,7 @@
|
|
|
516
535
|
"\n",
|
|
517
536
|
"ess_beamline = FakeBeamline(\n",
|
|
518
537
|
" choppers=disk_choppers,\n",
|
|
538
|
+
" source_position=source_position,\n",
|
|
519
539
|
" monitors=monitors,\n",
|
|
520
540
|
" run_length=sc.scalar(1 / 14, unit=\"s\") * 4,\n",
|
|
521
541
|
" events_per_pulse=200_000,\n",
|
|
@@ -524,7 +544,7 @@
|
|
|
524
544
|
},
|
|
525
545
|
{
|
|
526
546
|
"cell_type": "markdown",
|
|
527
|
-
"id": "
|
|
547
|
+
"id": "37",
|
|
528
548
|
"metadata": {},
|
|
529
549
|
"source": [
|
|
530
550
|
"Our raw data has now a `detector_number` dimension of length 2.\n",
|
|
@@ -535,7 +555,7 @@
|
|
|
535
555
|
{
|
|
536
556
|
"cell_type": "code",
|
|
537
557
|
"execution_count": null,
|
|
538
|
-
"id": "
|
|
558
|
+
"id": "38",
|
|
539
559
|
"metadata": {},
|
|
540
560
|
"outputs": [],
|
|
541
561
|
"source": [
|
|
@@ -550,7 +570,7 @@
|
|
|
550
570
|
},
|
|
551
571
|
{
|
|
552
572
|
"cell_type": "markdown",
|
|
553
|
-
"id": "
|
|
573
|
+
"id": "39",
|
|
554
574
|
"metadata": {},
|
|
555
575
|
"source": [
|
|
556
576
|
"Computing time-of-flight is done in the same way as above.\n",
|
|
@@ -560,7 +580,7 @@
|
|
|
560
580
|
{
|
|
561
581
|
"cell_type": "code",
|
|
562
582
|
"execution_count": null,
|
|
563
|
-
"id": "
|
|
583
|
+
"id": "40",
|
|
564
584
|
"metadata": {},
|
|
565
585
|
"outputs": [],
|
|
566
586
|
"source": [
|
|
@@ -594,7 +614,7 @@
|
|
|
594
614
|
},
|
|
595
615
|
{
|
|
596
616
|
"cell_type": "markdown",
|
|
597
|
-
"id": "
|
|
617
|
+
"id": "41",
|
|
598
618
|
"metadata": {},
|
|
599
619
|
"source": [
|
|
600
620
|
"## Handling time overlap between subframes\n",
|
|
@@ -614,7 +634,7 @@
|
|
|
614
634
|
{
|
|
615
635
|
"cell_type": "code",
|
|
616
636
|
"execution_count": null,
|
|
617
|
-
"id": "
|
|
637
|
+
"id": "42",
|
|
618
638
|
"metadata": {},
|
|
619
639
|
"outputs": [],
|
|
620
640
|
"source": [
|
|
@@ -622,7 +642,7 @@
|
|
|
622
642
|
" frequency=sc.scalar(112.0, unit=\"Hz\"),\n",
|
|
623
643
|
" beam_position=sc.scalar(0.0, unit=\"deg\"),\n",
|
|
624
644
|
" phase=sc.scalar(240 - 180, unit=\"deg\"),\n",
|
|
625
|
-
" axle_position=sc.vector(value=[0, 0,
|
|
645
|
+
" axle_position=sc.vector(value=[0, 0, -66.77], unit=\"m\"),\n",
|
|
626
646
|
" slit_begin=sc.array(dims=[\"cutout\"], values=[-36.875, 143.125], unit=\"deg\"),\n",
|
|
627
647
|
" slit_end=sc.array(dims=[\"cutout\"], values=[46.875, 216.875], unit=\"deg\"),\n",
|
|
628
648
|
" slit_height=sc.scalar(10.0, unit=\"cm\"),\n",
|
|
@@ -634,6 +654,7 @@
|
|
|
634
654
|
"\n",
|
|
635
655
|
"ess_beamline = FakeBeamline(\n",
|
|
636
656
|
" choppers=disk_choppers,\n",
|
|
657
|
+
" source_position=source_position,\n",
|
|
637
658
|
" monitors={\"detector\": Ltotal},\n",
|
|
638
659
|
" run_length=sc.scalar(1 / 14, unit=\"s\") * 4,\n",
|
|
639
660
|
" events_per_pulse=200_000,\n",
|
|
@@ -644,7 +665,7 @@
|
|
|
644
665
|
},
|
|
645
666
|
{
|
|
646
667
|
"cell_type": "markdown",
|
|
647
|
-
"id": "
|
|
668
|
+
"id": "43",
|
|
648
669
|
"metadata": {},
|
|
649
670
|
"source": [
|
|
650
671
|
"We can now see that there is no longer a gap between the two frames at the center of each pulse (green region).\n",
|
|
@@ -656,13 +677,13 @@
|
|
|
656
677
|
{
|
|
657
678
|
"cell_type": "code",
|
|
658
679
|
"execution_count": null,
|
|
659
|
-
"id": "
|
|
680
|
+
"id": "44",
|
|
660
681
|
"metadata": {},
|
|
661
682
|
"outputs": [],
|
|
662
683
|
"source": [
|
|
663
684
|
"# Update workflow\n",
|
|
664
685
|
"workflow[time_of_flight.SimulationResults] = time_of_flight.simulate_beamline(\n",
|
|
665
|
-
" choppers=disk_choppers, neutrons=2_000_000\n",
|
|
686
|
+
" choppers=disk_choppers, source_position=source_position, neutrons=2_000_000\n",
|
|
666
687
|
")\n",
|
|
667
688
|
"workflow[time_of_flight.RawData] = ess_beamline.get_monitor(\"detector\")[0]\n",
|
|
668
689
|
"workflow[time_of_flight.Ltotal] = Ltotal\n",
|
|
@@ -675,7 +696,7 @@
|
|
|
675
696
|
},
|
|
676
697
|
{
|
|
677
698
|
"cell_type": "markdown",
|
|
678
|
-
"id": "
|
|
699
|
+
"id": "45",
|
|
679
700
|
"metadata": {},
|
|
680
701
|
"source": [
|
|
681
702
|
"The data in the lookup table contains both the mean time-of-flight for each distance and time-of-arrival bin,\n",
|
|
@@ -692,7 +713,7 @@
|
|
|
692
713
|
{
|
|
693
714
|
"cell_type": "code",
|
|
694
715
|
"execution_count": null,
|
|
695
|
-
"id": "
|
|
716
|
+
"id": "46",
|
|
696
717
|
"metadata": {},
|
|
697
718
|
"outputs": [],
|
|
698
719
|
"source": [
|
|
@@ -702,7 +723,7 @@
|
|
|
702
723
|
},
|
|
703
724
|
{
|
|
704
725
|
"cell_type": "markdown",
|
|
705
|
-
"id": "
|
|
726
|
+
"id": "47",
|
|
706
727
|
"metadata": {},
|
|
707
728
|
"source": [
|
|
708
729
|
"The workflow has a parameter which is used to mask out regions where the standard deviation is above a certain threshold.\n",
|
|
@@ -716,7 +737,7 @@
|
|
|
716
737
|
{
|
|
717
738
|
"cell_type": "code",
|
|
718
739
|
"execution_count": null,
|
|
719
|
-
"id": "
|
|
740
|
+
"id": "48",
|
|
720
741
|
"metadata": {},
|
|
721
742
|
"outputs": [],
|
|
722
743
|
"source": [
|
|
@@ -727,7 +748,7 @@
|
|
|
727
748
|
},
|
|
728
749
|
{
|
|
729
750
|
"cell_type": "markdown",
|
|
730
|
-
"id": "
|
|
751
|
+
"id": "49",
|
|
731
752
|
"metadata": {},
|
|
732
753
|
"source": [
|
|
733
754
|
"We can now see that the central region is masked out.\n",
|
|
@@ -742,7 +763,7 @@
|
|
|
742
763
|
{
|
|
743
764
|
"cell_type": "code",
|
|
744
765
|
"execution_count": null,
|
|
745
|
-
"id": "
|
|
766
|
+
"id": "50",
|
|
746
767
|
"metadata": {},
|
|
747
768
|
"outputs": [],
|
|
748
769
|
"source": [
|
|
@@ -180,7 +180,8 @@
|
|
|
180
180
|
" slit_height=sc.scalar(10.0, unit=\"cm\"),\n",
|
|
181
181
|
" radius=sc.scalar(30.0, unit=\"cm\"),\n",
|
|
182
182
|
" )\n",
|
|
183
|
-
" }
|
|
183
|
+
" },\n",
|
|
184
|
+
" source_position=sc.vector([0, 0, 0], unit=chopper.distance.unit),\n",
|
|
184
185
|
")\n",
|
|
185
186
|
"\n",
|
|
186
187
|
"workflow.visualize(time_of_flight.TofData)"
|
|
@@ -395,6 +396,7 @@
|
|
|
395
396
|
" )\n",
|
|
396
397
|
" for ch in choppers\n",
|
|
397
398
|
" },\n",
|
|
399
|
+
" source_position=sc.vector([0, 0, 0], unit=chopper.distance.unit),\n",
|
|
398
400
|
")\n",
|
|
399
401
|
"\n",
|
|
400
402
|
"workflow[time_of_flight.DistanceResolution] = sc.scalar(0.5, unit=\"m\")\n",
|