dkist-processing-dlnirsp 0.32.9__py3-none-any.whl → 0.33.0__py3-none-any.whl
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.
- dkist_processing_dlnirsp/models/constants.py +6 -0
- dkist_processing_dlnirsp/models/parameters.py +33 -3
- dkist_processing_dlnirsp/parsers/task.py +2 -25
- dkist_processing_dlnirsp/parsers/time.py +2 -2
- dkist_processing_dlnirsp/tasks/__init__.py +1 -2
- dkist_processing_dlnirsp/tasks/movie.py +1121 -0
- dkist_processing_dlnirsp/tasks/parse.py +13 -8
- dkist_processing_dlnirsp/tasks/solar.py +129 -30
- dkist_processing_dlnirsp/tests/conftest.py +45 -6
- dkist_processing_dlnirsp/tests/local_trial_workflows/l0_polcals_as_science.py +21 -18
- dkist_processing_dlnirsp/tests/local_trial_workflows/l0_solar_gain_as_science.py +21 -18
- dkist_processing_dlnirsp/tests/local_trial_workflows/l0_to_l1.py +21 -18
- dkist_processing_dlnirsp/tests/local_trial_workflows/local_trial_dev_mockers.py +1 -1
- dkist_processing_dlnirsp/tests/test_dlnirsp_constants.py +2 -0
- dkist_processing_dlnirsp/tests/test_movie.py +141 -0
- dkist_processing_dlnirsp/tests/test_parameters.py +8 -0
- dkist_processing_dlnirsp/tests/test_parse.py +10 -0
- dkist_processing_dlnirsp/tests/test_science.py +0 -9
- dkist_processing_dlnirsp/tests/test_solar.py +114 -17
- dkist_processing_dlnirsp/workflows/l0_processing.py +6 -8
- dkist_processing_dlnirsp/workflows/trial_workflow.py +7 -7
- {dkist_processing_dlnirsp-0.32.9.dist-info → dkist_processing_dlnirsp-0.33.0.dist-info}/METADATA +41 -24
- {dkist_processing_dlnirsp-0.32.9.dist-info → dkist_processing_dlnirsp-0.33.0.dist-info}/RECORD +27 -29
- docs/gain.rst +7 -3
- dkist_processing_dlnirsp/tasks/assemble_movie.py +0 -150
- dkist_processing_dlnirsp/tasks/make_movie_frames.py +0 -156
- dkist_processing_dlnirsp/tests/test_assemble_movie.py +0 -169
- dkist_processing_dlnirsp/tests/test_make_movie_frames.py +0 -98
- {dkist_processing_dlnirsp-0.32.9.dist-info → dkist_processing_dlnirsp-0.33.0.dist-info}/WHEEL +0 -0
- {dkist_processing_dlnirsp-0.32.9.dist-info → dkist_processing_dlnirsp-0.33.0.dist-info}/entry_points.txt +0 -0
- {dkist_processing_dlnirsp-0.32.9.dist-info → dkist_processing_dlnirsp-0.33.0.dist-info}/top_level.txt +0 -0
|
@@ -16,7 +16,6 @@ from dkist_processing_common.tasks import TrialTeardown
|
|
|
16
16
|
from dkist_processing_core import ResourceQueue
|
|
17
17
|
from dkist_processing_core import Workflow
|
|
18
18
|
|
|
19
|
-
from dkist_processing_dlnirsp.tasks import AssembleDlnirspMovie
|
|
20
19
|
from dkist_processing_dlnirsp.tasks import BadPixelCalibration
|
|
21
20
|
from dkist_processing_dlnirsp.tasks import DarkCalibration
|
|
22
21
|
from dkist_processing_dlnirsp.tasks import DlnirspAssembleQualityData
|
|
@@ -28,7 +27,7 @@ from dkist_processing_dlnirsp.tasks import IfuDriftCalibration
|
|
|
28
27
|
from dkist_processing_dlnirsp.tasks import InstrumentPolarizationCalibration
|
|
29
28
|
from dkist_processing_dlnirsp.tasks import LampCalibration
|
|
30
29
|
from dkist_processing_dlnirsp.tasks import LinearityCorrection
|
|
31
|
-
from dkist_processing_dlnirsp.tasks import
|
|
30
|
+
from dkist_processing_dlnirsp.tasks import MakeDlnirspMovie
|
|
32
31
|
from dkist_processing_dlnirsp.tasks import ParseL0DlnirspLinearizedData
|
|
33
32
|
from dkist_processing_dlnirsp.tasks import ParseL0DlnirspRampData
|
|
34
33
|
from dkist_processing_dlnirsp.tasks import ScienceCalibration
|
|
@@ -55,22 +54,23 @@ trial_pipeline.add_node(task=LampCalibration, upstreams=DarkCalibration)
|
|
|
55
54
|
trial_pipeline.add_node(task=BadPixelCalibration, upstreams=[LampCalibration, IfuDriftCalibration])
|
|
56
55
|
trial_pipeline.add_node(task=GeometricCalibration, upstreams=[IfuDriftCalibration, LampCalibration])
|
|
57
56
|
trial_pipeline.add_node(task=WavelengthCalibration, upstreams=GeometricCalibration)
|
|
58
|
-
trial_pipeline.add_node(task=SolarCalibration, upstreams=GeometricCalibration)
|
|
59
57
|
trial_pipeline.add_node(
|
|
60
58
|
task=InstrumentPolarizationCalibration,
|
|
61
59
|
resource_queue=ResourceQueue.HIGH_MEMORY,
|
|
62
60
|
upstreams=BadPixelCalibration,
|
|
63
61
|
)
|
|
64
62
|
trial_pipeline.add_node(
|
|
65
|
-
task=
|
|
63
|
+
task=SolarCalibration, upstreams=[GeometricCalibration, InstrumentPolarizationCalibration]
|
|
66
64
|
)
|
|
65
|
+
trial_pipeline.add_node(task=ScienceCalibration, upstreams=SolarCalibration)
|
|
67
66
|
trial_pipeline.add_node(
|
|
68
67
|
task=DlnirspWriteL1Frame, upstreams=[WavelengthCalibration, ScienceCalibration]
|
|
69
68
|
)
|
|
70
69
|
|
|
71
70
|
# Movie flow
|
|
72
|
-
trial_pipeline.add_node(
|
|
73
|
-
|
|
71
|
+
trial_pipeline.add_node(
|
|
72
|
+
task=MakeDlnirspMovie, upstreams=[ScienceCalibration, WavelengthCalibration]
|
|
73
|
+
)
|
|
74
74
|
|
|
75
75
|
# Quality flow
|
|
76
76
|
trial_pipeline.add_node(task=DlnirspL0QualityMetrics, upstreams=ParseL0DlnirspLinearizedData)
|
|
@@ -96,7 +96,7 @@ trial_pipeline.add_node(
|
|
|
96
96
|
trial_pipeline.add_node(
|
|
97
97
|
task=TransferTrialData,
|
|
98
98
|
upstreams=[
|
|
99
|
-
|
|
99
|
+
MakeDlnirspMovie,
|
|
100
100
|
CreateTrialDatasetInventory,
|
|
101
101
|
CreateTrialAsdf,
|
|
102
102
|
CreateTrialQualityReport,
|
{dkist_processing_dlnirsp-0.32.9.dist-info → dkist_processing_dlnirsp-0.33.0.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-dlnirsp
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.33.0
|
|
4
4
|
Summary: Science processing code for the DLNIRSP instrument on DKIST
|
|
5
5
|
Author-email: NSO / AURA <dkistdc@nso.edu>
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -26,7 +26,8 @@ Requires-Dist: numba==0.61.2
|
|
|
26
26
|
Requires-Dist: scipy==1.15.3
|
|
27
27
|
Requires-Dist: peakutils==1.3.5
|
|
28
28
|
Requires-Dist: sunpy==6.1.1
|
|
29
|
-
Requires-Dist:
|
|
29
|
+
Requires-Dist: reproject==0.19.0
|
|
30
|
+
Requires-Dist: imageio-ffmpeg==0.6.0
|
|
30
31
|
Requires-Dist: asdf==3.5.0
|
|
31
32
|
Requires-Dist: solar-wavelength-calibration==2.0.0
|
|
32
33
|
Provides-Extra: test
|
|
@@ -80,7 +81,9 @@ Requires-Dist: ImageIO==2.37.2; extra == "frozen"
|
|
|
80
81
|
Requires-Dist: Jinja2==3.1.6; extra == "frozen"
|
|
81
82
|
Requires-Dist: Mako==1.3.10; extra == "frozen"
|
|
82
83
|
Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
|
|
84
|
+
Requires-Dist: PIMS==0.7; extra == "frozen"
|
|
83
85
|
Requires-Dist: PeakUtils==1.3.5; extra == "frozen"
|
|
86
|
+
Requires-Dist: PyAVM==0.9.8; extra == "frozen"
|
|
84
87
|
Requires-Dist: PyJWT==2.10.1; extra == "frozen"
|
|
85
88
|
Requires-Dist: PyYAML==6.0.3; extra == "frozen"
|
|
86
89
|
Requires-Dist: Pygments==2.19.2; extra == "frozen"
|
|
@@ -91,22 +94,22 @@ Requires-Dist: WTForms==3.2.1; extra == "frozen"
|
|
|
91
94
|
Requires-Dist: Werkzeug==2.2.3; extra == "frozen"
|
|
92
95
|
Requires-Dist: aioftp==0.27.2; extra == "frozen"
|
|
93
96
|
Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
|
|
94
|
-
Requires-Dist: aiohttp==3.13.
|
|
97
|
+
Requires-Dist: aiohttp==3.13.3; extra == "frozen"
|
|
95
98
|
Requires-Dist: aiosignal==1.4.0; extra == "frozen"
|
|
96
99
|
Requires-Dist: aiosmtplib==5.0.0; extra == "frozen"
|
|
97
100
|
Requires-Dist: alembic==1.17.2; extra == "frozen"
|
|
98
101
|
Requires-Dist: amqp==5.3.1; extra == "frozen"
|
|
99
102
|
Requires-Dist: annotated-types==0.7.0; extra == "frozen"
|
|
100
|
-
Requires-Dist: anyio==4.12.
|
|
103
|
+
Requires-Dist: anyio==4.12.1; extra == "frozen"
|
|
101
104
|
Requires-Dist: apache-airflow==2.11.0; extra == "frozen"
|
|
102
|
-
Requires-Dist: apache-airflow-providers-celery==3.
|
|
103
|
-
Requires-Dist: apache-airflow-providers-common-compat==1.
|
|
105
|
+
Requires-Dist: apache-airflow-providers-celery==3.15.0; extra == "frozen"
|
|
106
|
+
Requires-Dist: apache-airflow-providers-common-compat==1.11.0; extra == "frozen"
|
|
104
107
|
Requires-Dist: apache-airflow-providers-common-io==1.7.0; extra == "frozen"
|
|
105
|
-
Requires-Dist: apache-airflow-providers-common-sql==1.30.
|
|
108
|
+
Requires-Dist: apache-airflow-providers-common-sql==1.30.2; extra == "frozen"
|
|
106
109
|
Requires-Dist: apache-airflow-providers-fab==1.5.3; extra == "frozen"
|
|
107
110
|
Requires-Dist: apache-airflow-providers-ftp==3.14.0; extra == "frozen"
|
|
108
|
-
Requires-Dist: apache-airflow-providers-http==5.6.
|
|
109
|
-
Requires-Dist: apache-airflow-providers-imap==3.10.
|
|
111
|
+
Requires-Dist: apache-airflow-providers-http==5.6.2; extra == "frozen"
|
|
112
|
+
Requires-Dist: apache-airflow-providers-imap==3.10.2; extra == "frozen"
|
|
110
113
|
Requires-Dist: apache-airflow-providers-postgres==6.5.1; extra == "frozen"
|
|
111
114
|
Requires-Dist: apache-airflow-providers-smtp==2.4.1; extra == "frozen"
|
|
112
115
|
Requires-Dist: apache-airflow-providers-sqlite==4.2.0; extra == "frozen"
|
|
@@ -118,17 +121,18 @@ Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
|
|
|
118
121
|
Requires-Dist: asgiref==3.11.0; extra == "frozen"
|
|
119
122
|
Requires-Dist: asteval==1.0.8; extra == "frozen"
|
|
120
123
|
Requires-Dist: astropy==7.0.2; extra == "frozen"
|
|
121
|
-
Requires-Dist: astropy-iers-data==0.
|
|
124
|
+
Requires-Dist: astropy-iers-data==0.2026.1.5.0.43.43; extra == "frozen"
|
|
125
|
+
Requires-Dist: astropy_healpix==1.1.2; extra == "frozen"
|
|
122
126
|
Requires-Dist: asyncpg==0.31.0; extra == "frozen"
|
|
123
127
|
Requires-Dist: attrs==25.4.0; extra == "frozen"
|
|
124
128
|
Requires-Dist: babel==2.17.0; extra == "frozen"
|
|
125
129
|
Requires-Dist: billiard==4.2.4; extra == "frozen"
|
|
126
130
|
Requires-Dist: blinker==1.9.0; extra == "frozen"
|
|
127
|
-
Requires-Dist: boto3==1.42.
|
|
128
|
-
Requires-Dist: botocore==1.42.
|
|
131
|
+
Requires-Dist: boto3==1.42.23; extra == "frozen"
|
|
132
|
+
Requires-Dist: botocore==1.42.23; extra == "frozen"
|
|
129
133
|
Requires-Dist: cachelib==0.13.0; extra == "frozen"
|
|
130
|
-
Requires-Dist: celery==5.6.
|
|
131
|
-
Requires-Dist: certifi==
|
|
134
|
+
Requires-Dist: celery==5.6.2; extra == "frozen"
|
|
135
|
+
Requires-Dist: certifi==2026.1.4; extra == "frozen"
|
|
132
136
|
Requires-Dist: cffi==2.0.0; extra == "frozen"
|
|
133
137
|
Requires-Dist: charset-normalizer==3.4.4; extra == "frozen"
|
|
134
138
|
Requires-Dist: click==8.3.1; extra == "frozen"
|
|
@@ -136,6 +140,7 @@ Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
|
|
|
136
140
|
Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
|
|
137
141
|
Requires-Dist: click-repl==0.3.0; extra == "frozen"
|
|
138
142
|
Requires-Dist: clickclick==20.10.2; extra == "frozen"
|
|
143
|
+
Requires-Dist: cloudpickle==3.1.2; extra == "frozen"
|
|
139
144
|
Requires-Dist: colorama==0.4.6; extra == "frozen"
|
|
140
145
|
Requires-Dist: colorlog==6.10.1; extra == "frozen"
|
|
141
146
|
Requires-Dist: connexion==2.14.2; extra == "frozen"
|
|
@@ -145,29 +150,33 @@ Requires-Dist: croniter==6.0.0; extra == "frozen"
|
|
|
145
150
|
Requires-Dist: cryptography==46.0.3; extra == "frozen"
|
|
146
151
|
Requires-Dist: cycler==0.12.1; extra == "frozen"
|
|
147
152
|
Requires-Dist: dacite==1.9.2; extra == "frozen"
|
|
153
|
+
Requires-Dist: dask==2025.12.0; extra == "frozen"
|
|
154
|
+
Requires-Dist: dask-image==2025.11.0; extra == "frozen"
|
|
148
155
|
Requires-Dist: decorator==5.2.1; extra == "frozen"
|
|
149
156
|
Requires-Dist: dill==0.4.0; extra == "frozen"
|
|
150
157
|
Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
|
|
151
158
|
Requires-Dist: dkist-processing-common==11.9.2; extra == "frozen"
|
|
152
159
|
Requires-Dist: dkist-processing-core==6.0.1; extra == "frozen"
|
|
153
|
-
Requires-Dist: dkist-processing-dlnirsp==0.
|
|
160
|
+
Requires-Dist: dkist-processing-dlnirsp==0.33.0; extra == "frozen"
|
|
154
161
|
Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
|
|
155
162
|
Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
|
|
156
163
|
Requires-Dist: dkist-service-configuration==4.1.13; extra == "frozen"
|
|
157
164
|
Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
|
|
158
165
|
Requires-Dist: dkist_fits_specifications==4.19.0; extra == "frozen"
|
|
159
166
|
Requires-Dist: dnspython==2.8.0; extra == "frozen"
|
|
167
|
+
Requires-Dist: donfig==0.8.1.post1; extra == "frozen"
|
|
160
168
|
Requires-Dist: email-validator==2.3.0; extra == "frozen"
|
|
161
|
-
Requires-Dist: exceptiongroup==1.3.1; extra == "frozen"
|
|
162
169
|
Requires-Dist: fastjsonschema==2.21.2; extra == "frozen"
|
|
163
170
|
Requires-Dist: flower==2.0.1; extra == "frozen"
|
|
164
171
|
Requires-Dist: fonttools==4.61.1; extra == "frozen"
|
|
165
172
|
Requires-Dist: frozenlist==1.8.0; extra == "frozen"
|
|
166
173
|
Requires-Dist: fsspec==2025.12.0; extra == "frozen"
|
|
167
174
|
Requires-Dist: globus-sdk==4.3.0; extra == "frozen"
|
|
175
|
+
Requires-Dist: google-crc32c==1.8.0; extra == "frozen"
|
|
168
176
|
Requires-Dist: google-re2==1.1.20251105; extra == "frozen"
|
|
169
177
|
Requires-Dist: googleapis-common-protos==1.72.0; extra == "frozen"
|
|
170
178
|
Requires-Dist: gqlclient==1.2.3; extra == "frozen"
|
|
179
|
+
Requires-Dist: greenlet==3.3.0; extra == "frozen"
|
|
171
180
|
Requires-Dist: grpcio==1.76.0; extra == "frozen"
|
|
172
181
|
Requires-Dist: gunicorn==23.0.0; extra == "frozen"
|
|
173
182
|
Requires-Dist: h11==0.16.0; extra == "frozen"
|
|
@@ -180,17 +189,18 @@ Requires-Dist: importlib_metadata==8.7.1; extra == "frozen"
|
|
|
180
189
|
Requires-Dist: inflection==0.5.1; extra == "frozen"
|
|
181
190
|
Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
|
|
182
191
|
Requires-Dist: jmespath==1.0.1; extra == "frozen"
|
|
183
|
-
Requires-Dist: jsonschema==4.
|
|
192
|
+
Requires-Dist: jsonschema==4.26.0; extra == "frozen"
|
|
184
193
|
Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
|
|
185
194
|
Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
|
|
186
195
|
Requires-Dist: kiwisolver==1.4.9; extra == "frozen"
|
|
187
|
-
Requires-Dist: kombu==5.6.
|
|
196
|
+
Requires-Dist: kombu==5.6.2; extra == "frozen"
|
|
188
197
|
Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
|
|
189
198
|
Requires-Dist: lazy_loader==0.4; extra == "frozen"
|
|
190
199
|
Requires-Dist: limits==5.6.0; extra == "frozen"
|
|
191
200
|
Requires-Dist: linkify-it-py==2.0.3; extra == "frozen"
|
|
192
201
|
Requires-Dist: llvmlite==0.44.0; extra == "frozen"
|
|
193
202
|
Requires-Dist: lmfit==1.3.4; extra == "frozen"
|
|
203
|
+
Requires-Dist: locket==1.0.0; extra == "frozen"
|
|
194
204
|
Requires-Dist: lockfile==0.12.2; extra == "frozen"
|
|
195
205
|
Requires-Dist: loguru==0.7.3; extra == "frozen"
|
|
196
206
|
Requires-Dist: markdown-it-py==4.0.0; extra == "frozen"
|
|
@@ -202,11 +212,12 @@ Requires-Dist: mdit-py-plugins==0.5.0; extra == "frozen"
|
|
|
202
212
|
Requires-Dist: mdurl==0.1.2; extra == "frozen"
|
|
203
213
|
Requires-Dist: methodtools==0.4.7; extra == "frozen"
|
|
204
214
|
Requires-Dist: more-itertools==10.8.0; extra == "frozen"
|
|
205
|
-
Requires-Dist: moviepy==2.1
|
|
215
|
+
Requires-Dist: moviepy==2.2.1; extra == "frozen"
|
|
206
216
|
Requires-Dist: multidict==6.7.0; extra == "frozen"
|
|
207
217
|
Requires-Dist: nbformat==5.10.4; extra == "frozen"
|
|
208
218
|
Requires-Dist: networkx==3.6.1; extra == "frozen"
|
|
209
219
|
Requires-Dist: numba==0.61.2; extra == "frozen"
|
|
220
|
+
Requires-Dist: numcodecs==0.16.5; extra == "frozen"
|
|
210
221
|
Requires-Dist: numpy==2.2.5; extra == "frozen"
|
|
211
222
|
Requires-Dist: object-clerk==1.0.0; extra == "frozen"
|
|
212
223
|
Requires-Dist: opentelemetry-api==1.39.1; extra == "frozen"
|
|
@@ -237,11 +248,12 @@ Requires-Dist: ordered-set==4.1.0; extra == "frozen"
|
|
|
237
248
|
Requires-Dist: packaging==25.0; extra == "frozen"
|
|
238
249
|
Requires-Dist: pandas==2.3.3; extra == "frozen"
|
|
239
250
|
Requires-Dist: parfive==2.2.0; extra == "frozen"
|
|
251
|
+
Requires-Dist: partd==1.4.2; extra == "frozen"
|
|
240
252
|
Requires-Dist: pathlib_abc==0.5.2; extra == "frozen"
|
|
241
|
-
Requires-Dist: pathspec==0.
|
|
253
|
+
Requires-Dist: pathspec==1.0.1; extra == "frozen"
|
|
242
254
|
Requires-Dist: pendulum==3.1.0; extra == "frozen"
|
|
243
255
|
Requires-Dist: pika==1.3.2; extra == "frozen"
|
|
244
|
-
Requires-Dist: pillow==
|
|
256
|
+
Requires-Dist: pillow==11.3.0; extra == "frozen"
|
|
245
257
|
Requires-Dist: pip==25.3; extra == "frozen"
|
|
246
258
|
Requires-Dist: platformdirs==4.5.1; extra == "frozen"
|
|
247
259
|
Requires-Dist: pluggy==1.6.0; extra == "frozen"
|
|
@@ -252,14 +264,15 @@ Requires-Dist: prometheus_client==0.23.1; extra == "frozen"
|
|
|
252
264
|
Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
|
|
253
265
|
Requires-Dist: propcache==0.4.1; extra == "frozen"
|
|
254
266
|
Requires-Dist: protobuf==6.33.2; extra == "frozen"
|
|
255
|
-
Requires-Dist: psutil==7.1
|
|
267
|
+
Requires-Dist: psutil==7.2.1; extra == "frozen"
|
|
256
268
|
Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
|
|
269
|
+
Requires-Dist: pyarrow==22.0.0; extra == "frozen"
|
|
257
270
|
Requires-Dist: pycparser==2.23; extra == "frozen"
|
|
258
271
|
Requires-Dist: pydantic==2.12.5; extra == "frozen"
|
|
259
272
|
Requires-Dist: pydantic-settings==2.12.0; extra == "frozen"
|
|
260
273
|
Requires-Dist: pydantic_core==2.41.5; extra == "frozen"
|
|
261
274
|
Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
|
|
262
|
-
Requires-Dist: pyparsing==3.3.
|
|
275
|
+
Requires-Dist: pyparsing==3.3.1; extra == "frozen"
|
|
263
276
|
Requires-Dist: python-daemon==3.1.2; extra == "frozen"
|
|
264
277
|
Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
|
|
265
278
|
Requires-Dist: python-dotenv==1.2.1; extra == "frozen"
|
|
@@ -268,6 +281,7 @@ Requires-Dist: python-slugify==8.0.4; extra == "frozen"
|
|
|
268
281
|
Requires-Dist: pytz==2025.2; extra == "frozen"
|
|
269
282
|
Requires-Dist: redis==6.4.0; extra == "frozen"
|
|
270
283
|
Requires-Dist: referencing==0.37.0; extra == "frozen"
|
|
284
|
+
Requires-Dist: reproject==0.19.0; extra == "frozen"
|
|
271
285
|
Requires-Dist: requests==2.32.5; extra == "frozen"
|
|
272
286
|
Requires-Dist: requests-toolbelt==1.0.0; extra == "frozen"
|
|
273
287
|
Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
|
|
@@ -280,6 +294,7 @@ Requires-Dist: scipy==1.15.3; extra == "frozen"
|
|
|
280
294
|
Requires-Dist: semantic-version==2.10.0; extra == "frozen"
|
|
281
295
|
Requires-Dist: setproctitle==1.3.7; extra == "frozen"
|
|
282
296
|
Requires-Dist: six==1.17.0; extra == "frozen"
|
|
297
|
+
Requires-Dist: slicerator==1.1.0; extra == "frozen"
|
|
283
298
|
Requires-Dist: solar-wavelength-calibration==2.0.0; extra == "frozen"
|
|
284
299
|
Requires-Dist: sqids==0.5.1; extra == "frozen"
|
|
285
300
|
Requires-Dist: sqlparse==0.5.5; extra == "frozen"
|
|
@@ -287,9 +302,10 @@ Requires-Dist: sunpy==6.1.1; extra == "frozen"
|
|
|
287
302
|
Requires-Dist: tabulate==0.9.0; extra == "frozen"
|
|
288
303
|
Requires-Dist: talus==1.3.4; extra == "frozen"
|
|
289
304
|
Requires-Dist: tenacity==8.5.0; extra == "frozen"
|
|
290
|
-
Requires-Dist: termcolor==3.
|
|
305
|
+
Requires-Dist: termcolor==3.3.0; extra == "frozen"
|
|
291
306
|
Requires-Dist: text-unidecode==1.3; extra == "frozen"
|
|
292
307
|
Requires-Dist: tifffile==2025.12.20; extra == "frozen"
|
|
308
|
+
Requires-Dist: toolz==1.1.0; extra == "frozen"
|
|
293
309
|
Requires-Dist: tornado==6.5.4; extra == "frozen"
|
|
294
310
|
Requires-Dist: tqdm==4.67.1; extra == "frozen"
|
|
295
311
|
Requires-Dist: traitlets==5.14.3; extra == "frozen"
|
|
@@ -308,6 +324,7 @@ Requires-Dist: wirerope==1.0.0; extra == "frozen"
|
|
|
308
324
|
Requires-Dist: wrapt==1.17.3; extra == "frozen"
|
|
309
325
|
Requires-Dist: yamale==6.1.0; extra == "frozen"
|
|
310
326
|
Requires-Dist: yarl==1.22.0; extra == "frozen"
|
|
327
|
+
Requires-Dist: zarr==3.1.5; extra == "frozen"
|
|
311
328
|
Requires-Dist: zipp==3.23.0; extra == "frozen"
|
|
312
329
|
|
|
313
330
|
dkist-processing-dlnirsp
|
{dkist_processing_dlnirsp-0.32.9.dist-info → dkist_processing_dlnirsp-0.33.0.dist-info}/RECORD
RENAMED
|
@@ -4,21 +4,20 @@ dkist_processing_dlnirsp/config.py,sha256=3jM7P00T-Xlzfnvc3jwRiFtinW5GoTczQ6qNLL
|
|
|
4
4
|
dkist_processing_dlnirsp/dev_scripts/__init__.py,sha256=tITkbcFg1a-24sdFaWK8OyLrQSQk7AI6Ycs8PHHfHEM,83
|
|
5
5
|
dkist_processing_dlnirsp/dev_scripts/test_slitbeam_group_assignment.py,sha256=ac-8G-P2L_xW6m3tOooFlHs1N5_C6F_7k2VAU2a9_1A,4171
|
|
6
6
|
dkist_processing_dlnirsp/models/__init__.py,sha256=ItaZgbjndT5uwEv2YDQZCVAHGbiB_sjzkX8MMbIgcSo,45
|
|
7
|
-
dkist_processing_dlnirsp/models/constants.py,sha256=
|
|
7
|
+
dkist_processing_dlnirsp/models/constants.py,sha256=y4c8boq1Rp4mqtkNJi3aj1EkhUnU7fiq013aqiFOonM,6602
|
|
8
8
|
dkist_processing_dlnirsp/models/fits_access.py,sha256=5HH8NM2tAh63Aauy6oCXKJGJ2AbQPBP5L1DitVfFEs0,895
|
|
9
|
-
dkist_processing_dlnirsp/models/parameters.py,sha256=
|
|
9
|
+
dkist_processing_dlnirsp/models/parameters.py,sha256=YD2BdQRO0Yk1sz3DJP-wNehBUJvDQ7cHqEnQP6UYo6w,17210
|
|
10
10
|
dkist_processing_dlnirsp/models/tags.py,sha256=xD_XaCjMXmd70P0FoHy92XSdlabIk07RGVEyFpXpGfM,5791
|
|
11
11
|
dkist_processing_dlnirsp/models/task_name.py,sha256=LmEoI_h4UecvIMGcO5U8mGTqfToPjABuFbsYkC_rZyw,506
|
|
12
12
|
dkist_processing_dlnirsp/parsers/__init__.py,sha256=O6KcssCD39an60pqLISt1aHQ4u5ADg0TMNw1dB694Ug,81
|
|
13
13
|
dkist_processing_dlnirsp/parsers/dlnirsp_l0_fits_access.py,sha256=ziUeSWPOiFV0HdkCCfFZGPOZB-PB1OhK2qjYbVdsAb4,4314
|
|
14
14
|
dkist_processing_dlnirsp/parsers/dlnirsp_l1_fits_acess.py,sha256=K-9HRVZ02IUl0wRnhlTMnwSikTt7vYi_zSWYs0V_6-Y,878
|
|
15
15
|
dkist_processing_dlnirsp/parsers/mosaic.py,sha256=0z0sTbDQFhg2hyCp6hSKFpuaS-rOSUBvuBOT6mSSadA,31061
|
|
16
|
-
dkist_processing_dlnirsp/parsers/task.py,sha256=
|
|
17
|
-
dkist_processing_dlnirsp/parsers/time.py,sha256=
|
|
16
|
+
dkist_processing_dlnirsp/parsers/task.py,sha256=wtg8kNuxqGHaK34dJAZ92-f29-3V1QrnLGUGRAebUUk,990
|
|
17
|
+
dkist_processing_dlnirsp/parsers/time.py,sha256=bdsNRXGpiKe7nBt3rOvk5gKYtqo10nFkTR9EMwbDcsg,2093
|
|
18
18
|
dkist_processing_dlnirsp/parsers/wavelength.py,sha256=CHZDFqOpzErhaR0MSbzQ6NiagdmkVkZ-6HWRERH5TNY,972
|
|
19
19
|
dkist_processing_dlnirsp/parsers/wcs_corrections.py,sha256=yeTLowmtAIs5sjNStIKmBTZUxttOtldJSeW_adsXFYQ,1786
|
|
20
|
-
dkist_processing_dlnirsp/tasks/__init__.py,sha256=
|
|
21
|
-
dkist_processing_dlnirsp/tasks/assemble_movie.py,sha256=BxUO7_Zj_QGLXqNpp87bLawyLo4G0I0DTLZPMXpi5Mo,5539
|
|
20
|
+
dkist_processing_dlnirsp/tasks/__init__.py,sha256=zGSL-fIB0el6PCjf4VEIHU_pOTv945D95I2G4vxHtHA,924
|
|
22
21
|
dkist_processing_dlnirsp/tasks/bad_pixel_map.py,sha256=ZzG86mXped2k2PjX7okKAi3JCQGJHalBhBgFU-T8K_8,8194
|
|
23
22
|
dkist_processing_dlnirsp/tasks/dark.py,sha256=rFnVULAunChEdxEXcosxNJM_iqRGslia9cUnV1FAOQQ,3580
|
|
24
23
|
dkist_processing_dlnirsp/tasks/dlnirsp_base.py,sha256=dIpQGE0COLAXPAUbKn6dpLJj5VDCxfAVYFfX8fR6OSo,1519
|
|
@@ -28,25 +27,24 @@ dkist_processing_dlnirsp/tasks/instrument_polarization.py,sha256=G79qXg1080zsd8Z
|
|
|
28
27
|
dkist_processing_dlnirsp/tasks/l1_output_data.py,sha256=Psta0476jih-cfmpdnzmquys030sW4f4VX6ksAb-g1o,465
|
|
29
28
|
dkist_processing_dlnirsp/tasks/lamp.py,sha256=twoMHMnE2jm2OYxkeHFcjqcyQYVtEjSU2_z2mmn3Ybs,5390
|
|
30
29
|
dkist_processing_dlnirsp/tasks/linearity_correction.py,sha256=z3MpWHp0lZYB2zrfHfH7HlcKoro6TPxwEN8rpqVv08c,22716
|
|
31
|
-
dkist_processing_dlnirsp/tasks/
|
|
32
|
-
dkist_processing_dlnirsp/tasks/parse.py,sha256=
|
|
30
|
+
dkist_processing_dlnirsp/tasks/movie.py,sha256=IaZCRg2KIETEXDyyOe3FLoY5cd7eJOhMtjkiSYjElEU,44291
|
|
31
|
+
dkist_processing_dlnirsp/tasks/parse.py,sha256=WGFIssavbQg1BAbW0_jS56SoEya-X-bHkLTbxTooUFI,11218
|
|
33
32
|
dkist_processing_dlnirsp/tasks/quality_metrics.py,sha256=1ScLAinv3WG-0M7u_26gnogbJ_D84K9CP7eRvEuwb9E,7346
|
|
34
33
|
dkist_processing_dlnirsp/tasks/science.py,sha256=sNI4AYO10qe3JL62KWXR87MnfX9m85Jo4_PkQ0qd5TQ,35737
|
|
35
|
-
dkist_processing_dlnirsp/tasks/solar.py,sha256=
|
|
34
|
+
dkist_processing_dlnirsp/tasks/solar.py,sha256=hVOVwQkzO4kioPDgJz3GqSNcisfpEMbDPESJN-INh10,15494
|
|
36
35
|
dkist_processing_dlnirsp/tasks/wavelength_calibration.py,sha256=QhFlbX8h9UqkK2vx779nK6LBksp2P2yPqhAxrwcuJ4o,16851
|
|
37
36
|
dkist_processing_dlnirsp/tasks/write_l1.py,sha256=Smd9Fzp3Kx4F3nHYJJRAXqNy9n71TsYovuvFjLcUYs4,9732
|
|
38
37
|
dkist_processing_dlnirsp/tasks/mixin/__init__.py,sha256=5PMbkD6K0zTfhCxv8vg2lvJCNP81qItJ_R_7Yy3Mpwc,26
|
|
39
38
|
dkist_processing_dlnirsp/tasks/mixin/corrections.py,sha256=MRZXCEc0KBE-9cQUpRP-K3ioDYRH8_ORFlJcH2SsmWA,6803
|
|
40
39
|
dkist_processing_dlnirsp/tasks/mixin/group_id.py,sha256=u28XLVtvZ_lmzzaSX2SuA2MOiY69GC8AJsic2Vi2OSQ,11137
|
|
41
40
|
dkist_processing_dlnirsp/tests/__init__.py,sha256=UHIAs0SglAXeB7UeDgVwo1EE9QPRq3rG3BZkiCpBq7M,42
|
|
42
|
-
dkist_processing_dlnirsp/tests/conftest.py,sha256=
|
|
43
|
-
dkist_processing_dlnirsp/tests/test_assemble_movie.py,sha256=hKAIHCRQu8fZwCuWsX_4WHFrDpC0bDQ9CCI9A5bRkqg,5665
|
|
41
|
+
dkist_processing_dlnirsp/tests/conftest.py,sha256=cmYQ9PnOiEXeTpAsRmRm64MVEVYwgOyHWafQTHl932E,70413
|
|
44
42
|
dkist_processing_dlnirsp/tests/test_assemble_quality.py,sha256=djZsVSuRGl3akH3LmYjWvYuNSUFFQfS5y0S3Op7lQIE,1327
|
|
45
43
|
dkist_processing_dlnirsp/tests/test_bad_pixel_map.py,sha256=g5jWhVGSHMOtkcdiZ27G51ciud4ySjoDAjvMGLlgTIM,6093
|
|
46
44
|
dkist_processing_dlnirsp/tests/test_corrections.py,sha256=hefVNm3bgwfGQ7Wn0hi077LU_fKlDXJ0eeMl6HCRogA,7569
|
|
47
45
|
dkist_processing_dlnirsp/tests/test_dark.py,sha256=qv7SvUNgafzfdyIW11I6eSFeaXjw34-9X1ipnqKE1cY,3726
|
|
48
46
|
dkist_processing_dlnirsp/tests/test_dlnirsp_base.py,sha256=PCFklqGEqrgIhTYcatu7RfOxr_b_XjHotc36MRbUvnk,1853
|
|
49
|
-
dkist_processing_dlnirsp/tests/test_dlnirsp_constants.py,sha256=
|
|
47
|
+
dkist_processing_dlnirsp/tests/test_dlnirsp_constants.py,sha256=0E7Z4LHBDTAJ8G6TqGL7EU-MGN60Iqze4uZgZJwxqRc,6487
|
|
50
48
|
dkist_processing_dlnirsp/tests/test_dlnirsp_fits_access.py,sha256=5C5NPOkNigoNhIFNUKyrJvyt_mRjke1tkfXQcv1cnPI,5639
|
|
51
49
|
dkist_processing_dlnirsp/tests/test_geometric.py,sha256=94RDg1mGEMTibD2oPOoCKil5yUQMp_0vO4cDWzG3644,7742
|
|
52
50
|
dkist_processing_dlnirsp/tests/test_group_id.py,sha256=TpNllN6OZuYF8almsayk7pRTc4J8TcLGp1SHCBG6QAU,6279
|
|
@@ -54,32 +52,32 @@ dkist_processing_dlnirsp/tests/test_ifu_drift.py,sha256=K6ushbVQVE6AATjiP3hEgF6o
|
|
|
54
52
|
dkist_processing_dlnirsp/tests/test_instrument_polarization_calibration.py,sha256=pPXjfzi3EcaawNqvXsz3OcCF1XITEJeCzQ8-iOjlm7U,23430
|
|
55
53
|
dkist_processing_dlnirsp/tests/test_lamp.py,sha256=umy4ydYR5M3dqXTQP14qbamOleutyD1jSj3325aitl0,3940
|
|
56
54
|
dkist_processing_dlnirsp/tests/test_linearity_correction.py,sha256=JkPNtsRad2JQQ2QiJjQar9tJuCi9-ksOdEYHW_-kl58,31793
|
|
57
|
-
dkist_processing_dlnirsp/tests/
|
|
58
|
-
dkist_processing_dlnirsp/tests/test_parameters.py,sha256=
|
|
59
|
-
dkist_processing_dlnirsp/tests/test_parse.py,sha256=
|
|
55
|
+
dkist_processing_dlnirsp/tests/test_movie.py,sha256=j1ocVuy7PZCJrL-MrTczI-mFEsnECyCQ6P8uiK3mokw,4284
|
|
56
|
+
dkist_processing_dlnirsp/tests/test_parameters.py,sha256=bL30vGwFMwY2vP6-mQ-KPsr7I213PaXP7S1wKVPqq8g,10705
|
|
57
|
+
dkist_processing_dlnirsp/tests/test_parse.py,sha256=prx8K0vFGkW-YZm0YB13FBobbiMf0u1k8TuCyNF4_qE,38418
|
|
60
58
|
dkist_processing_dlnirsp/tests/test_quality.py,sha256=OBWva_E6T5RfDuo73LiTdTr7uh2FO04VpBAsSOLfjVQ,6122
|
|
61
|
-
dkist_processing_dlnirsp/tests/test_science.py,sha256=
|
|
62
|
-
dkist_processing_dlnirsp/tests/test_solar.py,sha256=
|
|
59
|
+
dkist_processing_dlnirsp/tests/test_science.py,sha256=2dpNW8-QaFqYeTbTeXqKRSWSns1b9l1iRgfhj8UBAUw,20632
|
|
60
|
+
dkist_processing_dlnirsp/tests/test_solar.py,sha256=0_QpdZFUczXCalhFrXQcMf3SWErbalnVTqV9r0558Pc,15411
|
|
63
61
|
dkist_processing_dlnirsp/tests/test_trial_create_quality_report.py,sha256=5wgj4PhiB-JRl7Sm7EUIvk5DDcFYpytpVLPmMbPuN_Y,2807
|
|
64
62
|
dkist_processing_dlnirsp/tests/test_wavelength_calibration.py,sha256=Yp5A2I8WHrnKha56W_8o5BxVH21jervGsS0thN7ptn0,15028
|
|
65
63
|
dkist_processing_dlnirsp/tests/test_workflows.py,sha256=cRw_c90B-ZXGaw0vVWymYCE-_Ll6mBeM7aHsu-uXewo,290
|
|
66
64
|
dkist_processing_dlnirsp/tests/test_write_l1.py,sha256=J9D1QqCDe0IzYsphA4s_ciDEL0tUUSV1KLm8yo9mxyM,13335
|
|
67
65
|
dkist_processing_dlnirsp/tests/local_trial_workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
66
|
dkist_processing_dlnirsp/tests/local_trial_workflows/l0_linearize_only.py,sha256=WpO2T2PRDiglwBB3zQDV_3Cq1RSw-ufu_iFjT5aLFJk,6750
|
|
69
|
-
dkist_processing_dlnirsp/tests/local_trial_workflows/l0_polcals_as_science.py,sha256=
|
|
70
|
-
dkist_processing_dlnirsp/tests/local_trial_workflows/l0_solar_gain_as_science.py,sha256=
|
|
71
|
-
dkist_processing_dlnirsp/tests/local_trial_workflows/l0_to_l1.py,sha256=
|
|
72
|
-
dkist_processing_dlnirsp/tests/local_trial_workflows/local_trial_dev_mockers.py,sha256=
|
|
67
|
+
dkist_processing_dlnirsp/tests/local_trial_workflows/l0_polcals_as_science.py,sha256=Ms0a_P-d-6dmz_j1hXXQYpF7hfgJljdGjRgAnMampCw,19399
|
|
68
|
+
dkist_processing_dlnirsp/tests/local_trial_workflows/l0_solar_gain_as_science.py,sha256=J_Iijqxy9pYc0olA38QOGV5_pCeoKMojqWtyKAnhL1g,20163
|
|
69
|
+
dkist_processing_dlnirsp/tests/local_trial_workflows/l0_to_l1.py,sha256=jt8oeLKENlSUbOek6hDQAhYeq2zY3FuphmkiP44lnDk,17791
|
|
70
|
+
dkist_processing_dlnirsp/tests/local_trial_workflows/local_trial_dev_mockers.py,sha256=dQ5hYJUXQDx6O7x9eQn3GbKsfcjpB_ylAmQ2N2MPsDI,12198
|
|
73
71
|
dkist_processing_dlnirsp/tests/local_trial_workflows/local_trial_helpers.py,sha256=5abEDqLyJ1mH6RYlV6ReHOqUkUste0vC6raENFQeDNY,21375
|
|
74
72
|
dkist_processing_dlnirsp/tests/local_trial_workflows/translate_files.py,sha256=bsOqBtGE9SdOZL2ROJ-murJHjymYrE_nEPNHJgy7pDc,1882
|
|
75
73
|
dkist_processing_dlnirsp/workflows/__init__.py,sha256=bDRNGCIayR8Z-dcOClvk5nTmHgKORTrZUVX9e3UpCc8,165
|
|
76
|
-
dkist_processing_dlnirsp/workflows/l0_processing.py,sha256=
|
|
77
|
-
dkist_processing_dlnirsp/workflows/trial_workflow.py,sha256=
|
|
74
|
+
dkist_processing_dlnirsp/workflows/l0_processing.py,sha256=walF4jr4qNCZv_YIh2pnmyQ0BEakGtXrS8k1lkzlBNY,3976
|
|
75
|
+
dkist_processing_dlnirsp/workflows/trial_workflow.py,sha256=PCncn1-tDHrcqPziV3LzrCCtgk6dwJpHa4Cx3ff8lQ0,4598
|
|
78
76
|
docs/Makefile,sha256=qnlVz6PuBqE39NfHWuUnHhNEA-EFgT2-WJNNNy9ttfk,4598
|
|
79
77
|
docs/bad_pixel_calibration.rst,sha256=UPBJCG1XWIFMwaR8BnvvbfdEN68s1SJ2nlxsXe1viHU,3403
|
|
80
78
|
docs/changelog.rst,sha256=ZpZPJIyl4nI0Eicku6uSrLdiinNOF2GcZwrvTEsb-Zs,346
|
|
81
79
|
docs/conf.py,sha256=wCcGpP5TUXfMTPgumKu0ZInLxYSuKILyCGi8__Omnmo,2081
|
|
82
|
-
docs/gain.rst,sha256=
|
|
80
|
+
docs/gain.rst,sha256=XyktESmH9kVyp1wtwRdvNshYC1CqA-XBWqsMG2TyhHg,5060
|
|
83
81
|
docs/geometric.rst,sha256=1iI26WJkFbFR0yG_zNbDwiZxU4i0KPtqVkUQL-aKI70,3522
|
|
84
82
|
docs/ifu_drift.rst,sha256=8Hd1XmW9ay2ig__kZJ03ut1_6M6F_NnMqrbSLrIl9tQ,1997
|
|
85
83
|
docs/index.rst,sha256=c2KAA_icOw7Ao3rWVv7lRBTEZ-9JWidL615Xrt6fSq4,378
|
|
@@ -94,8 +92,8 @@ docs/science_calibration.rst,sha256=JUMeS7KyIsL9cUuy-IdV2tQ-wQ2lBx6j8u_51ThJzVg,
|
|
|
94
92
|
docs/scientific_changelog.rst,sha256=01AWBSHg8zElnodCgAq-hMxhk9CkX5rtEENx4iz0sjI,300
|
|
95
93
|
docs/wavelength_calibration.rst,sha256=QGUd5Xmv5f7WQ1EKvw2CcgiMJQULjzdCW1hSQ8h8jj0,4123
|
|
96
94
|
licenses/LICENSE.rst,sha256=piZaQplkzOMmH1NXg6QIdo9wwo9pPCoHkvm2-DmH76E,1462
|
|
97
|
-
dkist_processing_dlnirsp-0.
|
|
98
|
-
dkist_processing_dlnirsp-0.
|
|
99
|
-
dkist_processing_dlnirsp-0.
|
|
100
|
-
dkist_processing_dlnirsp-0.
|
|
101
|
-
dkist_processing_dlnirsp-0.
|
|
95
|
+
dkist_processing_dlnirsp-0.33.0.dist-info/METADATA,sha256=4xNQA-3ecQwtXglEbvb5BBaBYSwkSLEC3mpMe7XMUIQ,30900
|
|
96
|
+
dkist_processing_dlnirsp-0.33.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
97
|
+
dkist_processing_dlnirsp-0.33.0.dist-info/entry_points.txt,sha256=p4-7cpIfxmQGFUDIP5n5noE5KADHN2-JvV03e0gOx9s,140
|
|
98
|
+
dkist_processing_dlnirsp-0.33.0.dist-info/top_level.txt,sha256=4WmLV9LQM78KTFnkHmtaOJvVHAPpz0m9ruzDS-B_cUo,49
|
|
99
|
+
dkist_processing_dlnirsp-0.33.0.dist-info/RECORD,,
|
docs/gain.rst
CHANGED
|
@@ -14,7 +14,8 @@ polarized beams. We call a single beam from a single slit a "slitbeam"; there ar
|
|
|
14
14
|
DLNIRSP gain calibration is performed by the `~dkist_processing_dlnirsp.tasks.solar` task using the following procedure.
|
|
15
15
|
The important steps are described in more detail below.
|
|
16
16
|
|
|
17
|
-
#. Apply dark, lamp, and geometric corrections to all solar gain frames and average them together.
|
|
17
|
+
#. Apply dark, lamp, and geometric corrections to all solar gain frames and average them together. For polarimetric data
|
|
18
|
+
the average is computed for each modstate and the result is demodulated. The Stokes I frame is then used for subsequent steps.
|
|
18
19
|
|
|
19
20
|
#. Compute a single characteristic solar spectrum across all slitbeams and place it into the full array.
|
|
20
21
|
|
|
@@ -37,7 +38,9 @@ Algorithm Detail
|
|
|
37
38
|
Apply Dark, Lamp, and Geometric Corrections
|
|
38
39
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
39
40
|
|
|
40
|
-
This step is mostly how it sounds.
|
|
41
|
+
This step is mostly how it sounds. For polarimetric data, each modstate is averaged separately and the final "average"
|
|
42
|
+
gain array is taken as the demodulated Stokes I signal. For intensity-mode data, a straight average over all modstates is
|
|
43
|
+
computed. The result (either Stokes I or full average) is then divided by the average lamp gain image, which
|
|
41
44
|
ensures that system illumination differences are not misidentified as true solar signal in the following steps. After
|
|
42
45
|
applying the :doc:`geometric correction </geometric>` all spectra will be on the reference wavelength grid.
|
|
43
46
|
|
|
@@ -59,7 +62,8 @@ geometric corrections. The result is a "raw" array that contains only the solar
|
|
|
59
62
|
Remove Characteristic Solar Spectra from Raw Solar Gain Frames
|
|
60
63
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
61
64
|
|
|
62
|
-
The re-distorted solar spectra are divided from the dark-corrected solar gain frames.
|
|
65
|
+
The re-distorted solar spectra are divided from the dark-corrected solar gain frames. For polarimetric data the solar
|
|
66
|
+
spectra are removed from the demodulated Stokes I dark-corrected gain signal. Because we don't use solar gains
|
|
63
67
|
with a lamp correction applied, the resulting gain image includes the full optical response of the system and can be
|
|
64
68
|
applied directly to the science data.
|
|
65
69
|
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"""Task for constructing a browse movie."""
|
|
2
|
-
|
|
3
|
-
from typing import Type
|
|
4
|
-
|
|
5
|
-
import numpy as np
|
|
6
|
-
from dkist_processing_common.codecs.fits import fits_array_decoder
|
|
7
|
-
from dkist_processing_common.tasks import AssembleMovie
|
|
8
|
-
from dkist_service_configuration.logging import logger
|
|
9
|
-
from PIL import ImageDraw
|
|
10
|
-
from PIL.ImageFont import FreeTypeFont
|
|
11
|
-
|
|
12
|
-
from dkist_processing_dlnirsp.models.constants import DlnirspConstants
|
|
13
|
-
from dkist_processing_dlnirsp.models.tags import DlnirspTag
|
|
14
|
-
from dkist_processing_dlnirsp.parsers.dlnirsp_l1_fits_acess import DlnirspL1FitsAccess
|
|
15
|
-
|
|
16
|
-
__all__ = ["AssembleDlnirspMovie"]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class AssembleDlnirspMovie(AssembleMovie):
|
|
20
|
-
"""
|
|
21
|
-
Assemble all DLNIRSP movie frames (tagged with DlnirspTag.movie_frame()) into an mp4 movie file.
|
|
22
|
-
|
|
23
|
-
Subclassed from the `AssembleMovie` task in `dkist_processing_common` as required to add DLNIRSP specific
|
|
24
|
-
text overlays.
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
constants: DlnirspConstants
|
|
28
|
-
|
|
29
|
-
MPL_COLOR_MAP = "afmhot"
|
|
30
|
-
|
|
31
|
-
@property
|
|
32
|
-
def constants_model_class(self) -> Type[DlnirspConstants]:
|
|
33
|
-
"""Get DLNIRSP constants."""
|
|
34
|
-
return DlnirspConstants
|
|
35
|
-
|
|
36
|
-
@property
|
|
37
|
-
def fits_parsing_class(self):
|
|
38
|
-
"""Parse frames as DlnirspL1FitsAccess objects."""
|
|
39
|
-
return DlnirspL1FitsAccess
|
|
40
|
-
|
|
41
|
-
def compute_frame_shape(self) -> tuple[int, int]:
|
|
42
|
-
"""Dynamically set the dimensions of the movie based on L1 file shape."""
|
|
43
|
-
movie_frame_arrays = self.read(tags=[DlnirspTag.movie_frame()], decoder=fits_array_decoder)
|
|
44
|
-
random_frame = next(movie_frame_arrays)
|
|
45
|
-
raw_L1_shape = random_frame.shape
|
|
46
|
-
flipped_shape = raw_L1_shape[::-1]
|
|
47
|
-
|
|
48
|
-
standard_HD_num_pix = 1920 * 1080
|
|
49
|
-
frame_num_pix = np.prod(flipped_shape)
|
|
50
|
-
scale_factor = np.sqrt(standard_HD_num_pix / frame_num_pix)
|
|
51
|
-
scaled_shape = tuple(int(i * scale_factor) for i in flipped_shape)
|
|
52
|
-
|
|
53
|
-
return scaled_shape
|
|
54
|
-
|
|
55
|
-
def pre_run(self) -> None:
|
|
56
|
-
"""Set the movie frame shape prior to running."""
|
|
57
|
-
super().pre_run()
|
|
58
|
-
frame_shape = self.compute_frame_shape()
|
|
59
|
-
logger.info(f"Setting movie shape to {frame_shape}")
|
|
60
|
-
self.MOVIE_FRAME_SHAPE = frame_shape
|
|
61
|
-
|
|
62
|
-
@property
|
|
63
|
-
def num_images(self) -> int:
|
|
64
|
-
"""
|
|
65
|
-
Total number of images in final movie.
|
|
66
|
-
|
|
67
|
-
Overloaded from `dkist-processing-common` so we can handle all the levels of instrument looping.
|
|
68
|
-
"""
|
|
69
|
-
return (
|
|
70
|
-
self.constants.num_mosaic_repeats
|
|
71
|
-
* self.constants.num_dither_steps
|
|
72
|
-
* self.constants.num_mosaic_tiles
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
def tags_for_image_n(self, n: int) -> list[str]:
|
|
76
|
-
"""Return tags that grab the n'th movie image.
|
|
77
|
-
|
|
78
|
-
Overloaded from `dkist-processing-common` so we can handle all the levels of instrument looping.
|
|
79
|
-
"""
|
|
80
|
-
mosaic_num = n // (self.constants.num_dither_steps * self.constants.num_mosaic_tiles)
|
|
81
|
-
dither_step = (n // self.constants.num_mosaic_tiles) % self.constants.num_dither_steps
|
|
82
|
-
tile_num = n % self.constants.num_mosaic_tiles
|
|
83
|
-
X_tile, Y_tile = np.unravel_index(
|
|
84
|
-
tile_num, (self.constants.num_mosaic_tiles_x, self.constants.num_mosaic_tiles_y)
|
|
85
|
-
)
|
|
86
|
-
# mosaic tile nums are 1-indexed
|
|
87
|
-
X_tile += 1
|
|
88
|
-
Y_tile += 1
|
|
89
|
-
|
|
90
|
-
tags = [
|
|
91
|
-
DlnirspTag.mosaic_num(mosaic_num),
|
|
92
|
-
DlnirspTag.dither_step(dither_step),
|
|
93
|
-
DlnirspTag.mosaic_tile_x(X_tile),
|
|
94
|
-
DlnirspTag.mosaic_tile_y(Y_tile),
|
|
95
|
-
]
|
|
96
|
-
logger.info(f"AssembleMovie.tags_for_image_n: {tags = }")
|
|
97
|
-
return tags
|
|
98
|
-
|
|
99
|
-
def write_overlay(self, draw: ImageDraw, fits_obj: DlnirspL1FitsAccess) -> None:
|
|
100
|
-
"""
|
|
101
|
-
Mark each movie frame the instrument, wavelength, and observe time.
|
|
102
|
-
|
|
103
|
-
Additionally, add labels for the 4 Stokes sub-frames if the data are polarimetric.
|
|
104
|
-
"""
|
|
105
|
-
self.write_line(
|
|
106
|
-
draw=draw,
|
|
107
|
-
text=f"INSTRUMENT: {self.constants.instrument}",
|
|
108
|
-
line=3,
|
|
109
|
-
column="right",
|
|
110
|
-
font=self.font_36,
|
|
111
|
-
)
|
|
112
|
-
self.write_line(
|
|
113
|
-
draw=draw,
|
|
114
|
-
text=f"WAVELENGTH: {fits_obj.wavelength} nm",
|
|
115
|
-
line=2,
|
|
116
|
-
column="right",
|
|
117
|
-
font=self.font_36,
|
|
118
|
-
)
|
|
119
|
-
self.write_line(
|
|
120
|
-
draw=draw,
|
|
121
|
-
text=f"OBS TIME: {fits_obj.time_obs}",
|
|
122
|
-
line=1,
|
|
123
|
-
column="right",
|
|
124
|
-
font=self.font_36,
|
|
125
|
-
)
|
|
126
|
-
|
|
127
|
-
if self.constants.correct_for_polarization:
|
|
128
|
-
# The `line` on which an item is drawn is a multiple of the height of that line.
|
|
129
|
-
IQ_line = self.get_middle_line(draw=draw, text="I Q", font=self.font_36)
|
|
130
|
-
|
|
131
|
-
# Subtract 1 from the UV line so that it's below IQ_line
|
|
132
|
-
UV_line = IQ_line - 1
|
|
133
|
-
|
|
134
|
-
self.write_line(
|
|
135
|
-
draw=draw, text="I Q", line=IQ_line, column="middle", font=self.font_36
|
|
136
|
-
)
|
|
137
|
-
self.write_line(
|
|
138
|
-
draw=draw, text="U V", line=UV_line, column="middle", font=self.font_36
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
def get_middle_line(self, draw: ImageDraw, text: str, font: FreeTypeFont) -> int:
|
|
142
|
-
"""
|
|
143
|
-
Get the line number for the middle of the frame.
|
|
144
|
-
|
|
145
|
-
We need to compute this in real time because the frame size is dynamically based on the L1 file shape.
|
|
146
|
-
"""
|
|
147
|
-
_, _, _, text_height = draw.textbbox(xy=(0, 0), text=text, font=font)
|
|
148
|
-
# See `write_line` in `dkist-processing-common` for why this is the expression.
|
|
149
|
-
line = (self.MOVIE_FRAME_SHAPE[1] // 2) / (self.TEXT_MARGIN_PX + text_height)
|
|
150
|
-
return line
|