dkist-processing-cryonirsp 1.4.15__py3-none-any.whl → 1.4.16rc1__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.
Potentially problematic release.
This version of dkist-processing-cryonirsp might be problematic. Click here for more details.
- changelog/170.feature.rst +11 -0
- changelog/170.misc.1.rst +2 -0
- changelog/170.misc.rst +3 -0
- changelog/174.bugfix.rst +1 -0
- dkist_processing_cryonirsp/codecs/__init__.py +5 -0
- dkist_processing_cryonirsp/codecs/fits.py +52 -0
- dkist_processing_cryonirsp/models/beam_boundaries.py +39 -0
- dkist_processing_cryonirsp/models/parameters.py +0 -1
- dkist_processing_cryonirsp/models/tags.py +34 -0
- dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +38 -2
- dkist_processing_cryonirsp/tasks/assemble_movie.py +2 -2
- dkist_processing_cryonirsp/tasks/bad_pixel_map.py +14 -9
- dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +24 -43
- dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +1 -1
- dkist_processing_cryonirsp/tasks/ci_science.py +24 -6
- dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -10
- dkist_processing_cryonirsp/tasks/dark.py +34 -14
- dkist_processing_cryonirsp/tasks/gain.py +69 -22
- dkist_processing_cryonirsp/tasks/instrument_polarization.py +131 -49
- dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -1
- dkist_processing_cryonirsp/tasks/linearity_correction.py +4 -7
- dkist_processing_cryonirsp/tasks/make_movie_frames.py +5 -5
- dkist_processing_cryonirsp/tasks/quality_metrics.py +4 -4
- dkist_processing_cryonirsp/tasks/science_base.py +34 -10
- dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +1 -1
- dkist_processing_cryonirsp/tasks/sp_dispersion_axis_correction.py +14 -6
- dkist_processing_cryonirsp/tasks/sp_geometric.py +112 -39
- dkist_processing_cryonirsp/tasks/sp_science.py +53 -11
- dkist_processing_cryonirsp/tasks/sp_solar_gain.py +108 -29
- dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py +2 -10
- dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py +8 -11
- dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py +1 -1
- dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +1 -2
- dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +6 -5
- dkist_processing_cryonirsp/tests/test_ci_science.py +25 -24
- dkist_processing_cryonirsp/tests/test_cryo_base.py +41 -43
- dkist_processing_cryonirsp/tests/test_dark.py +20 -28
- dkist_processing_cryonirsp/tests/test_gain.py +46 -35
- dkist_processing_cryonirsp/tests/test_instrument_polarization.py +22 -16
- dkist_processing_cryonirsp/tests/test_linearity_correction.py +1 -4
- dkist_processing_cryonirsp/tests/test_quality.py +1 -2
- dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +6 -5
- dkist_processing_cryonirsp/tests/test_sp_dispersion_axis_correction.py +10 -9
- dkist_processing_cryonirsp/tests/test_sp_geometric.py +108 -53
- dkist_processing_cryonirsp/tests/test_sp_science.py +49 -35
- dkist_processing_cryonirsp/tests/test_sp_solar.py +70 -38
- {dkist_processing_cryonirsp-1.4.15.dist-info → dkist_processing_cryonirsp-1.4.16rc1.dist-info}/METADATA +2 -2
- {dkist_processing_cryonirsp-1.4.15.dist-info → dkist_processing_cryonirsp-1.4.16rc1.dist-info}/RECORD +50 -46
- dkist_processing_cryonirsp/tasks/mixin/beam_access.py +0 -52
- dkist_processing_cryonirsp/tasks/mixin/intermediate_frame.py +0 -193
- dkist_processing_cryonirsp/tasks/mixin/linearized_frame.py +0 -309
- {dkist_processing_cryonirsp-1.4.15.dist-info → dkist_processing_cryonirsp-1.4.16rc1.dist-info}/WHEEL +0 -0
- {dkist_processing_cryonirsp-1.4.15.dist-info → dkist_processing_cryonirsp-1.4.16rc1.dist-info}/top_level.txt +0 -0
|
@@ -9,6 +9,7 @@ from astropy.time import Time
|
|
|
9
9
|
from astropy.time import TimeDelta
|
|
10
10
|
from dkist_header_validator import spec122_validator
|
|
11
11
|
from dkist_processing_common._util.scratch import WorkflowFileSystem
|
|
12
|
+
from dkist_processing_common.codecs.fits import fits_array_encoder
|
|
12
13
|
from dkist_processing_common.codecs.fits import fits_hdulist_encoder
|
|
13
14
|
from dkist_processing_common.tests.conftest import FakeGQLClient
|
|
14
15
|
|
|
@@ -69,9 +70,10 @@ def sp_science_calibration_task(
|
|
|
69
70
|
param_class = cryonirsp_testing_parameters_factory(param_path=tmp_path)
|
|
70
71
|
assign_input_dataset_doc_to_task(task, param_class())
|
|
71
72
|
# Create fake bad pixel map
|
|
72
|
-
task.
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
task.write(
|
|
74
|
+
data=np.zeros((30, 60)),
|
|
75
|
+
tags=[CryonirspTag.intermediate_frame(), CryonirspTag.task_bad_pixel_map()],
|
|
76
|
+
encoder=fits_array_encoder,
|
|
75
77
|
)
|
|
76
78
|
# Create fake demodulation matrices
|
|
77
79
|
demod_matrices = np.zeros((1, 1, 4, num_modstates))
|
|
@@ -82,10 +84,8 @@ def sp_science_calibration_task(
|
|
|
82
84
|
task.write(
|
|
83
85
|
data=demod_hdul,
|
|
84
86
|
tags=[
|
|
85
|
-
CryonirspTag.
|
|
86
|
-
CryonirspTag.frame(),
|
|
87
|
+
CryonirspTag.intermediate_frame(beam=beam + 1),
|
|
87
88
|
CryonirspTag.task_demodulation_matrices(),
|
|
88
|
-
CryonirspTag.beam(beam + 1),
|
|
89
89
|
],
|
|
90
90
|
encoder=fits_hdulist_encoder,
|
|
91
91
|
)
|
|
@@ -95,38 +95,56 @@ def sp_science_calibration_task(
|
|
|
95
95
|
offset = np.array([-10.2, 5.1])
|
|
96
96
|
spec_shift = np.zeros(intermediate_shape[0])
|
|
97
97
|
for beam in range(1, num_beams + 1):
|
|
98
|
-
task.
|
|
99
|
-
|
|
98
|
+
task.write(
|
|
99
|
+
data=angle,
|
|
100
|
+
tags=[
|
|
101
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
102
|
+
CryonirspTag.task_geometric_angle(),
|
|
103
|
+
],
|
|
104
|
+
encoder=fits_array_encoder,
|
|
100
105
|
)
|
|
101
|
-
task.
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
106
|
+
task.write(
|
|
107
|
+
data=spec_shift,
|
|
108
|
+
tags=[
|
|
109
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
110
|
+
CryonirspTag.task_geometric_spectral_shifts(),
|
|
111
|
+
],
|
|
112
|
+
encoder=fits_array_encoder,
|
|
105
113
|
)
|
|
106
114
|
for modstate in range(1, num_modstates + 1):
|
|
107
|
-
task.
|
|
108
|
-
|
|
115
|
+
task.write(
|
|
116
|
+
data=offset
|
|
109
117
|
* (beam - 1), # Because we need the fiducial array to have (0, 0) offset
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
118
|
+
tags=[
|
|
119
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
120
|
+
CryonirspTag.task_geometric_offset(),
|
|
121
|
+
CryonirspTag.modstate(modstate),
|
|
122
|
+
],
|
|
123
|
+
encoder=fits_array_encoder,
|
|
113
124
|
)
|
|
114
125
|
|
|
115
126
|
# Create fake dark intermediate arrays
|
|
116
127
|
for beam in range(1, num_beams + 1):
|
|
117
|
-
task.
|
|
128
|
+
task.write(
|
|
118
129
|
all_zeros,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
130
|
+
tags=[
|
|
131
|
+
CryonirspTag.intermediate_frame(
|
|
132
|
+
beam=beam, exposure_conditions=exposure_conditions
|
|
133
|
+
),
|
|
134
|
+
CryonirspTag.task_dark(),
|
|
135
|
+
],
|
|
136
|
+
encoder=fits_array_encoder,
|
|
122
137
|
)
|
|
123
138
|
|
|
124
139
|
# And a beam border intermediate array
|
|
125
140
|
for beam in range(1, num_beams + 1):
|
|
126
|
-
task.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
141
|
+
task.write(
|
|
142
|
+
data=np.array([0, 30, ((beam - 1) * 30), (30 + (beam - 1) * 30)]),
|
|
143
|
+
tags=[
|
|
144
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
145
|
+
CryonirspTag.task_beam_boundaries(),
|
|
146
|
+
],
|
|
147
|
+
encoder=fits_array_encoder,
|
|
130
148
|
)
|
|
131
149
|
|
|
132
150
|
# Create fake lamp and solar gain intermediate arrays
|
|
@@ -136,10 +154,8 @@ def sp_science_calibration_task(
|
|
|
136
154
|
task.write(
|
|
137
155
|
data=gain_hdul,
|
|
138
156
|
tags=[
|
|
139
|
-
CryonirspTag.
|
|
140
|
-
CryonirspTag.frame(),
|
|
157
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
141
158
|
CryonirspTag.task_lamp_gain(),
|
|
142
|
-
CryonirspTag.beam(beam),
|
|
143
159
|
CryonirspTag.modstate(modstate),
|
|
144
160
|
],
|
|
145
161
|
encoder=fits_hdulist_encoder,
|
|
@@ -148,10 +164,8 @@ def sp_science_calibration_task(
|
|
|
148
164
|
task.write(
|
|
149
165
|
data=gain_hdul,
|
|
150
166
|
tags=[
|
|
151
|
-
CryonirspTag.
|
|
152
|
-
CryonirspTag.frame(),
|
|
167
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
153
168
|
CryonirspTag.task_solar_gain(),
|
|
154
|
-
CryonirspTag.beam(beam),
|
|
155
169
|
CryonirspTag.modstate(modstate),
|
|
156
170
|
],
|
|
157
171
|
encoder=fits_hdulist_encoder,
|
|
@@ -196,9 +210,9 @@ def sp_science_calibration_task(
|
|
|
196
210
|
CryonirspTag.scan_step(scan_step),
|
|
197
211
|
CryonirspTag.map_scan(map_scan),
|
|
198
212
|
CryonirspTag.modstate(modstate),
|
|
199
|
-
CryonirspTag.
|
|
200
|
-
|
|
201
|
-
|
|
213
|
+
CryonirspTag.linearized_frame(
|
|
214
|
+
exposure_conditions=exposure_conditions
|
|
215
|
+
),
|
|
202
216
|
],
|
|
203
217
|
encoder=fits_hdulist_encoder,
|
|
204
218
|
)
|
|
@@ -372,7 +386,7 @@ def test_sp_science_calibration_task(sp_science_calibration_task, mocker):
|
|
|
372
386
|
data = json.load(f)
|
|
373
387
|
assert isinstance(data, dict)
|
|
374
388
|
assert data["total_frames"] == task.scratch.count_all(
|
|
375
|
-
tags=[CryonirspTag.
|
|
389
|
+
tags=[CryonirspTag.linearized_frame(), CryonirspTag.task_observe()]
|
|
376
390
|
)
|
|
377
391
|
|
|
378
392
|
|
|
@@ -3,9 +3,11 @@ import json
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
import pytest
|
|
5
5
|
from dkist_processing_common._util.scratch import WorkflowFileSystem
|
|
6
|
+
from dkist_processing_common.codecs.fits import fits_array_encoder
|
|
6
7
|
from dkist_processing_common.codecs.fits import fits_hdulist_encoder
|
|
7
8
|
from dkist_processing_common.tests.conftest import FakeGQLClient
|
|
8
9
|
|
|
10
|
+
from dkist_processing_cryonirsp.codecs.fits import cryo_fits_array_decoder
|
|
9
11
|
from dkist_processing_cryonirsp.models.exposure_conditions import AllowableOpticalDensityFilterNames
|
|
10
12
|
from dkist_processing_cryonirsp.models.exposure_conditions import ExposureConditions
|
|
11
13
|
from dkist_processing_cryonirsp.models.tags import CryonirspTag
|
|
@@ -54,37 +56,51 @@ def solar_gain_calibration_task_that_completes(
|
|
|
54
56
|
task, param_class(cryonirsp_fringe_correction_on=fringe_correction)
|
|
55
57
|
)
|
|
56
58
|
# Create fake bad pixel map
|
|
57
|
-
task.
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
task.write(
|
|
60
|
+
data=np.zeros((10, 20)),
|
|
61
|
+
tags=[CryonirspTag.intermediate_frame(), CryonirspTag.task_bad_pixel_map()],
|
|
62
|
+
encoder=fits_array_encoder,
|
|
60
63
|
)
|
|
61
64
|
for beam in range(1, number_of_beams + 1):
|
|
62
65
|
# Create fake beam border intermediate arrays
|
|
63
|
-
task.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
task.write(
|
|
67
|
+
data=np.array([0, 10, ((beam - 1) * 10), 10 + ((beam - 1) * 10)]),
|
|
68
|
+
tags=[
|
|
69
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
70
|
+
CryonirspTag.task_beam_boundaries(),
|
|
71
|
+
],
|
|
72
|
+
encoder=fits_array_encoder,
|
|
67
73
|
)
|
|
68
74
|
|
|
69
75
|
# DarkCal object
|
|
70
76
|
dark_cal = np.ones(intermediate_shape) * 3.0
|
|
71
|
-
task.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
task.write(
|
|
78
|
+
data=dark_cal,
|
|
79
|
+
tags=[
|
|
80
|
+
CryonirspTag.intermediate_frame(
|
|
81
|
+
beam=beam, exposure_conditions=exposure_conditions
|
|
82
|
+
),
|
|
83
|
+
CryonirspTag.task_dark(),
|
|
84
|
+
],
|
|
85
|
+
encoder=fits_array_encoder,
|
|
76
86
|
)
|
|
77
87
|
|
|
78
88
|
# Geo angles and spec_shifts
|
|
79
|
-
task.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
89
|
+
task.write(
|
|
90
|
+
data=np.zeros(1),
|
|
91
|
+
tags=[
|
|
92
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
93
|
+
CryonirspTag.task_geometric_angle(),
|
|
94
|
+
],
|
|
95
|
+
encoder=fits_array_encoder,
|
|
83
96
|
)
|
|
84
|
-
task.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
97
|
+
task.write(
|
|
98
|
+
data=np.zeros(intermediate_shape[0]),
|
|
99
|
+
tags=[
|
|
100
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
101
|
+
CryonirspTag.task_geometric_spectral_shifts(),
|
|
102
|
+
],
|
|
103
|
+
encoder=fits_array_encoder,
|
|
88
104
|
)
|
|
89
105
|
|
|
90
106
|
for modstate in range(1, number_of_modstates + 1):
|
|
@@ -93,19 +109,25 @@ def solar_gain_calibration_task_that_completes(
|
|
|
93
109
|
lamp_cal_ramp = np.flip(lamp_cal_ramp)
|
|
94
110
|
lamp_cal = np.ones(intermediate_shape) * lamp_cal_ramp[None, :]
|
|
95
111
|
lamp_cal /= np.nanmean(lamp_cal)
|
|
96
|
-
task.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
task.write(
|
|
113
|
+
data=lamp_cal,
|
|
114
|
+
tags=[
|
|
115
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
116
|
+
CryonirspTag.modstate(modstate),
|
|
117
|
+
CryonirspTag.task_lamp_gain(),
|
|
118
|
+
],
|
|
119
|
+
encoder=fits_array_encoder,
|
|
101
120
|
)
|
|
102
121
|
|
|
103
122
|
# Geo offsets
|
|
104
|
-
task.
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
123
|
+
task.write(
|
|
124
|
+
data=np.zeros(2),
|
|
125
|
+
tags=[
|
|
126
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
127
|
+
CryonirspTag.modstate(modstate),
|
|
128
|
+
CryonirspTag.task_geometric_offset(),
|
|
129
|
+
],
|
|
130
|
+
encoder=fits_array_encoder,
|
|
109
131
|
)
|
|
110
132
|
|
|
111
133
|
# Raw gain input images contain both beams, so are not beam specific!!!
|
|
@@ -129,11 +151,9 @@ def solar_gain_calibration_task_that_completes(
|
|
|
129
151
|
task.write(
|
|
130
152
|
data=solar_hdul,
|
|
131
153
|
tags=[
|
|
132
|
-
CryonirspTag.
|
|
154
|
+
CryonirspTag.linearized_frame(exposure_conditions=exposure_conditions),
|
|
133
155
|
CryonirspTag.task_solar_gain(),
|
|
134
156
|
CryonirspTag.modstate(modstate),
|
|
135
|
-
CryonirspTag.frame(),
|
|
136
|
-
CryonirspTag.exposure_conditions(exposure_conditions),
|
|
137
157
|
],
|
|
138
158
|
encoder=fits_hdulist_encoder,
|
|
139
159
|
)
|
|
@@ -172,7 +192,15 @@ def test_solar_gain_task(solar_gain_calibration_task_that_completes, mocker, fri
|
|
|
172
192
|
task()
|
|
173
193
|
for beam in range(1, task.constants.num_beams + 1):
|
|
174
194
|
for modstate in range(1, task.constants.num_modstates + 1):
|
|
175
|
-
solar_gain =
|
|
195
|
+
solar_gain = next(
|
|
196
|
+
task.read(
|
|
197
|
+
tags=[
|
|
198
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
199
|
+
CryonirspTag.task_solar_gain(),
|
|
200
|
+
],
|
|
201
|
+
decoder=cryo_fits_array_decoder,
|
|
202
|
+
)
|
|
203
|
+
)
|
|
176
204
|
# If fringe correction is on, then just be happy we got a file...
|
|
177
205
|
if task.parameters.fringe_correction_on:
|
|
178
206
|
continue
|
|
@@ -180,8 +208,13 @@ def test_solar_gain_task(solar_gain_calibration_task_that_completes, mocker, fri
|
|
|
180
208
|
expected = np.flip(true_solar_single_beam, axis=1)
|
|
181
209
|
np.testing.assert_allclose(expected, solar_gain)
|
|
182
210
|
# Test for the existence of the spectral corrected solar array
|
|
183
|
-
spectral_corrected_array =
|
|
184
|
-
|
|
211
|
+
spectral_corrected_array = next(
|
|
212
|
+
task.read(
|
|
213
|
+
tags=[
|
|
214
|
+
CryonirspTag.intermediate_frame(beam=beam),
|
|
215
|
+
CryonirspTag.task("SPECTRAL_CORRECTED_SOLAR_ARRAY"),
|
|
216
|
+
]
|
|
217
|
+
)
|
|
185
218
|
)
|
|
186
219
|
|
|
187
220
|
quality_files = task.read(tags=[CryonirspTag.quality("TASK_TYPES")])
|
|
@@ -191,8 +224,7 @@ def test_solar_gain_task(solar_gain_calibration_task_that_completes, mocker, fri
|
|
|
191
224
|
assert isinstance(data, dict)
|
|
192
225
|
assert data["total_frames"] == task.scratch.count_all(
|
|
193
226
|
tags=[
|
|
194
|
-
CryonirspTag.
|
|
195
|
-
CryonirspTag.frame(),
|
|
227
|
+
CryonirspTag.linearized_frame(),
|
|
196
228
|
CryonirspTag.task_solar_gain(),
|
|
197
229
|
]
|
|
198
230
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: dkist-processing-cryonirsp
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.16rc1
|
|
4
4
|
Summary: Science processing code for the Cryo-NIRSP instrument on DKIST
|
|
5
5
|
Author-email: NSO / AURA <dkistdc@nso.edu>
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -17,7 +17,7 @@ Requires-Dist: Pillow==10.3.0
|
|
|
17
17
|
Requires-Dist: astropy==6.1.0
|
|
18
18
|
Requires-Dist: dkist-fits-specifications==4.10.0
|
|
19
19
|
Requires-Dist: dkist-header-validator==5.1.1
|
|
20
|
-
Requires-Dist: dkist-processing-common==10.5.
|
|
20
|
+
Requires-Dist: dkist-processing-common==10.5.9rc1
|
|
21
21
|
Requires-Dist: dkist-processing-math==2.1.2
|
|
22
22
|
Requires-Dist: dkist-processing-pac==3.1.1
|
|
23
23
|
Requires-Dist: dkist-spectral-lines==3.0.0
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
changelog/.gitempty,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
changelog/170.feature.rst,sha256=tF7kPKPgPmf8zdRy3WbrzY68QWpNG0_kxs56SAIBNoI,812
|
|
3
|
+
changelog/170.misc.1.rst,sha256=Fx4p9ZmZ3UmUEqlOUflobUQCwluULe1g3FHHNr7H6cg,176
|
|
4
|
+
changelog/170.misc.rst,sha256=kUUheTfRYg1ZREpXLB7nn6DOZ_L1mmZ3IVzfcL-inOU,280
|
|
5
|
+
changelog/174.bugfix.rst,sha256=FNUEyNdW9-v04SzZmlQmdP2KEwbHgYSs0MMD9dcQA-M,51
|
|
2
6
|
dkist_processing_cryonirsp/__init__.py,sha256=Z6-kB7fXXUI-F7Vz1HnEaja2h8qgH9IZExRl1lUxvZg,350
|
|
3
7
|
dkist_processing_cryonirsp/config.py,sha256=xNkUNJ1BeBxJX881mTCIEbirZlD5_5txpV1QqkbfRM0,507
|
|
8
|
+
dkist_processing_cryonirsp/codecs/__init__.py,sha256=du1iitvsudSSOMENSywXmXSLOlvIocJsPbvfEcyqFNc,159
|
|
9
|
+
dkist_processing_cryonirsp/codecs/fits.py,sha256=EAdPcqWXMEWtWnRDLH_LX20giPoLVfmKBawb9J2z0wM,1718
|
|
4
10
|
dkist_processing_cryonirsp/models/__init__.py,sha256=m6UekKftTahNJ3W5K3mZSz4Y4ZZpHRxF_ZAxuaKYL7o,12
|
|
11
|
+
dkist_processing_cryonirsp/models/beam_boundaries.py,sha256=FyiLd2iCWA6TUojeGaqQ_ULxvakDY13VxqUJVlmYvV0,1159
|
|
5
12
|
dkist_processing_cryonirsp/models/constants.py,sha256=p0HTXr994UHUrDRf3o-S5lb2ic7K2TRrHWl-hTWJUlA,10650
|
|
6
13
|
dkist_processing_cryonirsp/models/exposure_conditions.py,sha256=slFq5-Qz4fRpJKDBabbm4evPWLQVYmT-Uf9rk7nI734,813
|
|
7
|
-
dkist_processing_cryonirsp/models/parameters.py,sha256=
|
|
8
|
-
dkist_processing_cryonirsp/models/tags.py,sha256=
|
|
14
|
+
dkist_processing_cryonirsp/models/parameters.py,sha256=Oa3H7nc3wb8AkKLCsEnxibBJTwwK5U9ZMxzpS7pGFp4,13342
|
|
15
|
+
dkist_processing_cryonirsp/models/tags.py,sha256=ac0MnYlsn8-w7IioOvWeo7mBaDKE9o9TlRpxCH1OsRc,5743
|
|
9
16
|
dkist_processing_cryonirsp/models/task_name.py,sha256=xK4AKwgOx2uANbjhr0Q5Q3R9iPxLfkVKxWYY8wWjKhE,439
|
|
10
17
|
dkist_processing_cryonirsp/parsers/__init__.py,sha256=m6UekKftTahNJ3W5K3mZSz4Y4ZZpHRxF_ZAxuaKYL7o,12
|
|
11
18
|
dkist_processing_cryonirsp/parsers/check_for_gains.py,sha256=v-eD1LG0dlFoZXz5Y-2ZyPvRL2TZ8gWfr5cN6YNYqvo,2341
|
|
12
|
-
dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py,sha256=
|
|
19
|
+
dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py,sha256=HtkmVdhEZxasKQyxWQyrirmiDrzAVfr3QCC2ldzBdSk,5617
|
|
13
20
|
dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py,sha256=sc8MzxYMc8E1eFrL5KguAGHViCMJhaDfiBtZPml4ELg,886
|
|
14
21
|
dkist_processing_cryonirsp/parsers/exposure_conditions.py,sha256=Mcud-0PQK0oJSxbqtQUtVk0t8b6YBEFSyGsGbG5UqGg,8445
|
|
15
22
|
dkist_processing_cryonirsp/parsers/map_repeats.py,sha256=PjZ986bqkCdii-EOzU045cWqadxQC_nyyqwWYIpYdls,1566
|
|
@@ -21,66 +28,63 @@ dkist_processing_cryonirsp/parsers/scan_step.py,sha256=7XNUq48qbdpV8GeaBeG9XFRDk
|
|
|
21
28
|
dkist_processing_cryonirsp/parsers/time.py,sha256=dpajm3tfrih-8pjlOWOvZVJVP2FihR87HFQSjR_KPYI,2543
|
|
22
29
|
dkist_processing_cryonirsp/parsers/wavelength.py,sha256=Ay5hZiDNV25-N_QXZINTCgn1ToiP2jvwumkbirBiJGk,883
|
|
23
30
|
dkist_processing_cryonirsp/tasks/__init__.py,sha256=JyM9oA1A6t5sPsbaNmnK9_e6t00kUYzDZzqmSg0nVjE,1061
|
|
24
|
-
dkist_processing_cryonirsp/tasks/assemble_movie.py,sha256=
|
|
25
|
-
dkist_processing_cryonirsp/tasks/bad_pixel_map.py,sha256=
|
|
26
|
-
dkist_processing_cryonirsp/tasks/beam_boundaries_base.py,sha256=
|
|
27
|
-
dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py,sha256=
|
|
28
|
-
dkist_processing_cryonirsp/tasks/ci_science.py,sha256=
|
|
29
|
-
dkist_processing_cryonirsp/tasks/cryonirsp_base.py,sha256=
|
|
30
|
-
dkist_processing_cryonirsp/tasks/dark.py,sha256=
|
|
31
|
-
dkist_processing_cryonirsp/tasks/gain.py,sha256=
|
|
32
|
-
dkist_processing_cryonirsp/tasks/instrument_polarization.py,sha256=
|
|
33
|
-
dkist_processing_cryonirsp/tasks/l1_output_data.py,sha256=
|
|
34
|
-
dkist_processing_cryonirsp/tasks/linearity_correction.py,sha256
|
|
35
|
-
dkist_processing_cryonirsp/tasks/make_movie_frames.py,sha256=
|
|
31
|
+
dkist_processing_cryonirsp/tasks/assemble_movie.py,sha256=UrxfKSsT3mBkV2LYvnePzKr9nXlvjpoa5amY5C3ftFI,7350
|
|
32
|
+
dkist_processing_cryonirsp/tasks/bad_pixel_map.py,sha256=z-ACCwHqiRANsR7gkkCIycPpgOdR04Mo85WLAPiAJno,3961
|
|
33
|
+
dkist_processing_cryonirsp/tasks/beam_boundaries_base.py,sha256=mOP_AlyZyO6aL6UW7OXV63852tK6Dljkbno_4jlFWNg,9618
|
|
34
|
+
dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py,sha256=pgpi6m0T1E1dkJ8btu45DMK--e7aCJ0wdEnZyD3g7MU,1889
|
|
35
|
+
dkist_processing_cryonirsp/tasks/ci_science.py,sha256=VCt5E2gqL2j5fseSfsqCyCKK5hCGpXiR0XCBC74BiKQ,7366
|
|
36
|
+
dkist_processing_cryonirsp/tasks/cryonirsp_base.py,sha256=7cMXOI7yQ8xTAtJg4ZkhBDej4AknHKBIvw8e9mCiRBw,1814
|
|
37
|
+
dkist_processing_cryonirsp/tasks/dark.py,sha256=h_n1SU2bFiK7lp4vAKxv2ETKHYRODUp2KkH0YXjgFq8,4936
|
|
38
|
+
dkist_processing_cryonirsp/tasks/gain.py,sha256=1aMeSOupmw-WQNb9O2Qx4uxGae0ilZDszo9xbf38Y_g,10438
|
|
39
|
+
dkist_processing_cryonirsp/tasks/instrument_polarization.py,sha256=CpewhRYIz7R6THkvvpsxuZTlz6O_k2w9seQDwaqcklY,23301
|
|
40
|
+
dkist_processing_cryonirsp/tasks/l1_output_data.py,sha256=3RFt493MEJxdpF81gcp8FDlQ8vGZ0GXEDYQFWIufumI,1554
|
|
41
|
+
dkist_processing_cryonirsp/tasks/linearity_correction.py,sha256=n9vK9cT7NWkpAM9J6wOYDj95Kh0va_ot-hdncd7ye0Y,24199
|
|
42
|
+
dkist_processing_cryonirsp/tasks/make_movie_frames.py,sha256=I7s3Tml6AevHci0kTPF71mNjXNl3wlG57Jh7ghnndeg,13928
|
|
36
43
|
dkist_processing_cryonirsp/tasks/parse.py,sha256=tDOC2_r8xw0RYBxe3b3Te18Y5dBnRrPtikJmuhmwT88,13117
|
|
37
|
-
dkist_processing_cryonirsp/tasks/quality_metrics.py,sha256=
|
|
38
|
-
dkist_processing_cryonirsp/tasks/science_base.py,sha256
|
|
39
|
-
dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py,sha256=
|
|
40
|
-
dkist_processing_cryonirsp/tasks/sp_dispersion_axis_correction.py,sha256=
|
|
41
|
-
dkist_processing_cryonirsp/tasks/sp_geometric.py,sha256=
|
|
42
|
-
dkist_processing_cryonirsp/tasks/sp_science.py,sha256=
|
|
43
|
-
dkist_processing_cryonirsp/tasks/sp_solar_gain.py,sha256=
|
|
44
|
+
dkist_processing_cryonirsp/tasks/quality_metrics.py,sha256=jyx2YZzLb5sVxbJ_H6PaKQqZbyZy9QuuLqu18jsnncQ,11447
|
|
45
|
+
dkist_processing_cryonirsp/tasks/science_base.py,sha256=YYUQUfLeuzDb6E5TecOH22orTN4-hWocoYaGOq6Zoro,18637
|
|
46
|
+
dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py,sha256=XI3iepNe04xaU4ilqxrlOgYDkv5I5rUc0RXEE1Rwt0o,10296
|
|
47
|
+
dkist_processing_cryonirsp/tasks/sp_dispersion_axis_correction.py,sha256=ZfUpsija9T7ZCm111u-iCxbcx7WxHWd_OklVCfYbjXg,19465
|
|
48
|
+
dkist_processing_cryonirsp/tasks/sp_geometric.py,sha256=_M_e_blz4mKDIUWSasonnOzbZ6EUbHp9pAZXQx4zY7U,24387
|
|
49
|
+
dkist_processing_cryonirsp/tasks/sp_science.py,sha256=QWyAEkXYamAcWxi62-tVD6ptuQ6vt8yIzuCKzCIYW20,13643
|
|
50
|
+
dkist_processing_cryonirsp/tasks/sp_solar_gain.py,sha256=d4UABsMxyzCMduVxptHY_TCGqS-l-W5iuhW7HJwVPkA,21024
|
|
44
51
|
dkist_processing_cryonirsp/tasks/write_l1.py,sha256=hIjTun-zs35sXqVrcFhWqWA2gX2HpoGZxotvfHj_KpA,41457
|
|
45
52
|
dkist_processing_cryonirsp/tasks/mixin/__init__.py,sha256=m6UekKftTahNJ3W5K3mZSz4Y4ZZpHRxF_ZAxuaKYL7o,12
|
|
46
|
-
dkist_processing_cryonirsp/tasks/mixin/beam_access.py,sha256=DiPRbsAyfhX-juHL0slypcXi5C8PJT-DNMX6ck1IH1w,1627
|
|
47
53
|
dkist_processing_cryonirsp/tasks/mixin/corrections.py,sha256=rcKmckBJkoExcX0XW1i3OZzuMu1i7tX5Hgwy15chU50,6566
|
|
48
|
-
dkist_processing_cryonirsp/tasks/mixin/intermediate_frame.py,sha256=fFeIvuA4AtkQTt9hOFHUYolrSYPtjUGZU4g5f7JKj5Y,7911
|
|
49
|
-
dkist_processing_cryonirsp/tasks/mixin/linearized_frame.py,sha256=oyiMA_rzBUYtlmh1ilfE5DkuIe4FFiyptaYjcU8-joA,10176
|
|
50
54
|
dkist_processing_cryonirsp/tasks/mixin/shift_measurements.py,sha256=7ToSy9uOJ_JrFfd-X225wqW_laq4xoRJkBiAPanfb_g,11225
|
|
51
55
|
dkist_processing_cryonirsp/tests/__init__.py,sha256=m6UekKftTahNJ3W5K3mZSz4Y4ZZpHRxF_ZAxuaKYL7o,12
|
|
52
56
|
dkist_processing_cryonirsp/tests/conftest.py,sha256=_yAXaaaiyw4iQOGETN2sgelJsf1_AwjicXv1e1oqdqw,17485
|
|
53
57
|
dkist_processing_cryonirsp/tests/header_models.py,sha256=Ny4h5lS54bGRPDo4nOzvJgNWMzFY9DDs1IQorr_r3s8,20591
|
|
54
58
|
dkist_processing_cryonirsp/tests/test_assemble_movie.py,sha256=YNZINIFXR9kZBlE1AIvjlVmwwhZJeVYOOPk7Q8IVkcI,6222
|
|
55
59
|
dkist_processing_cryonirsp/tests/test_assemble_qualilty.py,sha256=upk-oUqVBHGK3F0eemshLpAPrnfh9mbeuZXow4E1Rmc,16859
|
|
56
|
-
dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py,sha256=
|
|
57
|
-
dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py,sha256=
|
|
58
|
-
dkist_processing_cryonirsp/tests/test_ci_science.py,sha256=
|
|
60
|
+
dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py,sha256=4Lrcvbzzzczkz1mEXVDb_qc1cGPIWTrSZQFv4KiDhn4,4870
|
|
61
|
+
dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py,sha256=lkFuFVZHDDbNkOZKeJC1inOkR0VByZVaATbdHDmr3Ew,4573
|
|
62
|
+
dkist_processing_cryonirsp/tests/test_ci_science.py,sha256=dFFn49nxhv2iocZ5uGeXegJU8c-csDYaKjumvcOMxZI,14418
|
|
59
63
|
dkist_processing_cryonirsp/tests/test_corrections.py,sha256=5nY8MccZcNDyQYV8IEokqtY_YrP08TZ-H7WQNioK-A0,4650
|
|
60
|
-
dkist_processing_cryonirsp/tests/test_cryo_base.py,sha256=
|
|
64
|
+
dkist_processing_cryonirsp/tests/test_cryo_base.py,sha256=6uOUgJPehr6XwZUE0InVDKJllJsTvfuG-VM5PdKlf0Q,6662
|
|
61
65
|
dkist_processing_cryonirsp/tests/test_cryo_constants.py,sha256=VbjM1vZYRa_057yK_aP2ta6JyT7Ob1ou4SbGEVIIKH0,2715
|
|
62
|
-
dkist_processing_cryonirsp/tests/test_dark.py,sha256=
|
|
63
|
-
dkist_processing_cryonirsp/tests/test_gain.py,sha256=
|
|
64
|
-
dkist_processing_cryonirsp/tests/test_instrument_polarization.py,sha256=
|
|
65
|
-
dkist_processing_cryonirsp/tests/test_linearity_correction.py,sha256=
|
|
66
|
+
dkist_processing_cryonirsp/tests/test_dark.py,sha256=ZGbjFP2IOL1gyC3rjde43xMS-vWStHDL9md1bhXt8Lg,11699
|
|
67
|
+
dkist_processing_cryonirsp/tests/test_gain.py,sha256=BSeum2N0vUIP12AiPB2Qhw-zgvd3EkGkK8UX9FEchuA,11290
|
|
68
|
+
dkist_processing_cryonirsp/tests/test_instrument_polarization.py,sha256=AB97NvR4VIivSu7X-GBKDrOJNx_LNbCQ_7mk0T3Eezo,19505
|
|
69
|
+
dkist_processing_cryonirsp/tests/test_linearity_correction.py,sha256=HRIi8fKfZvyaOOgEkO3JGz1j2ceoecrw70mmiszcGio,9365
|
|
66
70
|
dkist_processing_cryonirsp/tests/test_make_movie_frames.py,sha256=WznHp9dV2-jbJYzRniCAIbSHCGNc0SpSzyVDSrZkYd4,4904
|
|
67
71
|
dkist_processing_cryonirsp/tests/test_parameters.py,sha256=CbaEnxx3HGZmqZJbNzQ2IJpIg6AKlK26BT3TXUMGYAE,11438
|
|
68
72
|
dkist_processing_cryonirsp/tests/test_parse.py,sha256=UXbAZb4EJ-jlrkSfQXGTp7SA9B-OG5UBgV2SkCQZHxg,55804
|
|
69
|
-
dkist_processing_cryonirsp/tests/test_quality.py,sha256=
|
|
70
|
-
dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py,sha256=
|
|
71
|
-
dkist_processing_cryonirsp/tests/test_sp_dispersion_axis_correction.py,sha256=
|
|
72
|
-
dkist_processing_cryonirsp/tests/test_sp_geometric.py,sha256=
|
|
73
|
+
dkist_processing_cryonirsp/tests/test_quality.py,sha256=qrJBYjnZOhmQ4vjDcDV3FVSUAdktFgs-pRaHX4cf2G0,8129
|
|
74
|
+
dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py,sha256=b_o5k94zQEgG7fdMkuDHs1iyq6NFxv_NLYS7FvtlZQI,4895
|
|
75
|
+
dkist_processing_cryonirsp/tests/test_sp_dispersion_axis_correction.py,sha256=Fha0q4yJGftQ0l815FO78K1SmXtA-qbhQ3-Jk5iiBDE,6156
|
|
76
|
+
dkist_processing_cryonirsp/tests/test_sp_geometric.py,sha256=TQTR26SG6OQE00adx5lTdmb943HmXI3C6tLT-weZCM8,15721
|
|
73
77
|
dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py,sha256=Kn8U_HzaaHW2bHmBxsotdjmpBhd_Ft6pLWhVsMWIJE8,5322
|
|
74
|
-
dkist_processing_cryonirsp/tests/test_sp_science.py,sha256=
|
|
75
|
-
dkist_processing_cryonirsp/tests/test_sp_solar.py,sha256=
|
|
78
|
+
dkist_processing_cryonirsp/tests/test_sp_science.py,sha256=fffX8Fi-k7dYOax_5nvocbq8CXMYklmtSLfZRSe7Dsw,19850
|
|
79
|
+
dkist_processing_cryonirsp/tests/test_sp_solar.py,sha256=xSIKs8yylB18dZA75jTb-yOvCE2CMbESXCFwyHK3J_c,10023
|
|
76
80
|
dkist_processing_cryonirsp/tests/test_trial_create_quality_report.py,sha256=x8dRAMyawQVYZQGsuO36DMZxK4L13hZBUn86qbhJiNk,2805
|
|
77
81
|
dkist_processing_cryonirsp/tests/test_workflows.py,sha256=2a-TUMbVEyNjHYNyzo2UQMLg5PSaEx6iV9hOsGp-Mck,291
|
|
78
82
|
dkist_processing_cryonirsp/tests/test_write_l1.py,sha256=TIizk5mViC6Km8Ee-CfHwRFTqJmSa3Ey_GfM09iGBRc,17597
|
|
79
83
|
dkist_processing_cryonirsp/tests/local_trial_workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
-
dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py,sha256=
|
|
81
|
-
dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py,sha256=
|
|
84
|
+
dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py,sha256=nWs3Qg3f4DHqN_6JBKDaR5q9TncgR_PeRWw3_bUBZWA,20110
|
|
85
|
+
dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py,sha256=KaxxMeo_sOMWgekNVkPsTJt6XWU2Ov7rnMkBtG_sKcc,23938
|
|
82
86
|
dkist_processing_cryonirsp/tests/local_trial_workflows/linearize_only.py,sha256=kl9yrE1EbgxNn__x4q0WYoZIvS8zefcOPbQQdxB4_ZE,3280
|
|
83
|
-
dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py,sha256=
|
|
87
|
+
dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py,sha256=LCvmP2KAiq0BVqMj-ThFWxAwo4oNs9hZRibQevRj4nU,19329
|
|
84
88
|
dkist_processing_cryonirsp/workflows/__init__.py,sha256=iEbV3oiKmkfmdZjeNJxqw08IIZnYSroq-2b-ARpkLFQ,112
|
|
85
89
|
dkist_processing_cryonirsp/workflows/ci_l0_processing.py,sha256=T-BOvDDWHzs5BDH5ctSBjzGgD6Xez52AnDXsH5_7Bms,3788
|
|
86
90
|
dkist_processing_cryonirsp/workflows/sp_l0_processing.py,sha256=A74av8E8mL9WzI4vWI2GbhVrRFQ7JCMlGAioEjXkkCU,4219
|
|
@@ -105,7 +109,7 @@ docs/requirements_table.rst,sha256=FaqSag9kPi77gWPhzeo_tFEhRFjb3qUuNqqQe1K76NM,2
|
|
|
105
109
|
docs/scientific_changelog.rst,sha256=01AWBSHg8zElnodCgAq-hMxhk9CkX5rtEENx4iz0sjI,300
|
|
106
110
|
docs/sp_science_calibration.rst,sha256=fHBOZ2cqySxLjNi737KfynlmHZy9W4EwvuzxnyjDNvk,2597
|
|
107
111
|
licenses/LICENSE.rst,sha256=piZaQplkzOMmH1NXg6QIdo9wwo9pPCoHkvm2-DmH76E,1462
|
|
108
|
-
dkist_processing_cryonirsp-1.4.
|
|
109
|
-
dkist_processing_cryonirsp-1.4.
|
|
110
|
-
dkist_processing_cryonirsp-1.4.
|
|
111
|
-
dkist_processing_cryonirsp-1.4.
|
|
112
|
+
dkist_processing_cryonirsp-1.4.16rc1.dist-info/METADATA,sha256=MZCB7YyXyMXg3U7vGSB9K3S044WiPOy0QQl9BmkEPac,8416
|
|
113
|
+
dkist_processing_cryonirsp-1.4.16rc1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
114
|
+
dkist_processing_cryonirsp-1.4.16rc1.dist-info/top_level.txt,sha256=Sm9b1ddKnsF9Bh3mqDOct1Sm7k8I9aN7vGHgpmu-MlQ,51
|
|
115
|
+
dkist_processing_cryonirsp-1.4.16rc1.dist-info/RECORD,,
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"""Mixin to support extracting the desired beam from an input image on-the-fly."""
|
|
2
|
-
from functools import cached_property
|
|
3
|
-
|
|
4
|
-
import numpy as np
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class BeamAccessMixin:
|
|
8
|
-
"""Mixin that supports extracting the desired beam from an input image on-the-fly."""
|
|
9
|
-
|
|
10
|
-
def beam_access_get_beam(self, array: np.ndarray, beam: int) -> np.ndarray:
|
|
11
|
-
"""
|
|
12
|
-
Extract a single beam array from a dual-beam array.
|
|
13
|
-
|
|
14
|
-
Parameters
|
|
15
|
-
----------
|
|
16
|
-
array
|
|
17
|
-
The input dual-beam array
|
|
18
|
-
beam
|
|
19
|
-
The desired beam to extract
|
|
20
|
-
|
|
21
|
-
Returns
|
|
22
|
-
-------
|
|
23
|
-
An ndarray containing the extracted beam
|
|
24
|
-
"""
|
|
25
|
-
boundaries = self.beam_boundaries[beam]
|
|
26
|
-
spatial_min, spatial_max, spectral_min, spectral_max = boundaries
|
|
27
|
-
|
|
28
|
-
if (
|
|
29
|
-
spatial_min < 0
|
|
30
|
-
or spatial_max > array.shape[0]
|
|
31
|
-
or spectral_min < 0
|
|
32
|
-
or spectral_max > array.shape[1]
|
|
33
|
-
):
|
|
34
|
-
raise IndexError(
|
|
35
|
-
f"beam_access_get_boundaries exceed array bounds: {boundaries = }, {array.shape = }."
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
return np.copy(array[spatial_min:spatial_max, spectral_min:spectral_max])
|
|
39
|
-
|
|
40
|
-
@cached_property
|
|
41
|
-
def beam_boundaries(self) -> dict[int, np.ndarray]:
|
|
42
|
-
"""
|
|
43
|
-
Load the beam boundaries from their respective files and return as a boundary dict.
|
|
44
|
-
|
|
45
|
-
Returns
|
|
46
|
-
-------
|
|
47
|
-
beam_boundary dict
|
|
48
|
-
"""
|
|
49
|
-
boundaries = dict()
|
|
50
|
-
for beam in range(1, self.constants.num_beams + 1):
|
|
51
|
-
boundaries[beam] = self.intermediate_frame_load_beam_boundaries(beam=beam)
|
|
52
|
-
return boundaries
|