dkist-processing-dlnirsp 0.32.3__py3-none-any.whl → 0.32.4__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/tasks/linearity_correction.py +55 -24
- dkist_processing_dlnirsp/tests/conftest.py +13 -5
- dkist_processing_dlnirsp/tests/test_linearity_correction.py +117 -19
- dkist_processing_dlnirsp/tests/test_parse.py +1 -1
- {dkist_processing_dlnirsp-0.32.3.dist-info → dkist_processing_dlnirsp-0.32.4.dist-info}/METADATA +41 -40
- {dkist_processing_dlnirsp-0.32.3.dist-info → dkist_processing_dlnirsp-0.32.4.dist-info}/RECORD +9 -9
- {dkist_processing_dlnirsp-0.32.3.dist-info → dkist_processing_dlnirsp-0.32.4.dist-info}/WHEEL +0 -0
- {dkist_processing_dlnirsp-0.32.3.dist-info → dkist_processing_dlnirsp-0.32.4.dist-info}/entry_points.txt +0 -0
- {dkist_processing_dlnirsp-0.32.3.dist-info → dkist_processing_dlnirsp-0.32.4.dist-info}/top_level.txt +0 -0
|
@@ -28,14 +28,32 @@ class LinearityCorrection(DlnirspTaskBase):
|
|
|
28
28
|
|
|
29
29
|
record_provenance = True
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
valid_camera_sequence_regex: re.Pattern = re.compile(
|
|
32
|
+
r"^(\d*subframe)?(?(1)|(?:\d*line,\d*read,?)+)(?:,\d*line)?$"
|
|
33
|
+
)
|
|
32
34
|
"""
|
|
33
|
-
regex pattern
|
|
35
|
+
regex pattern that defines all valid camera-sample sequences.
|
|
36
|
+
|
|
37
|
+
It must start with either "Xline,Yread", which can repeat any number of times, or "Xsubframe" which must be by itself.
|
|
38
|
+
Either of these sequences may be padded with ",Zline" reset frames.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
uptheramp_coadd_regex: re.Pattern = re.compile(r"(\d*)line,(\d*)read")
|
|
42
|
+
"""
|
|
43
|
+
regex pattern used to parse line-read-line values for a single UpTheRamp coadd.
|
|
34
44
|
|
|
35
45
|
This is where we decide that camera sequences are one or more coadd sequences, where each coadd sequence is
|
|
36
46
|
"Xline,Yread". The total sequence may be padded with ",Zline" reset frames, which are not captured by this regex.
|
|
37
47
|
"""
|
|
38
48
|
|
|
49
|
+
subframe_sequence_regex: re.Pattern = re.compile(r"(\d*)subframe")
|
|
50
|
+
"""
|
|
51
|
+
regex pattern used to parse coadds in SubFrame mode
|
|
52
|
+
|
|
53
|
+
Simply looks for "Xsubframe" and captures the "X". The sequence may be padded with ",Zline" reset frames, which are
|
|
54
|
+
not captured by this regex.
|
|
55
|
+
"""
|
|
56
|
+
|
|
39
57
|
def run(self):
|
|
40
58
|
"""
|
|
41
59
|
Linearize IR camera frames or tag VIS camera frames as LINEARIZED.
|
|
@@ -110,17 +128,16 @@ class LinearityCorrection(DlnirspTaskBase):
|
|
|
110
128
|
)
|
|
111
129
|
num_coadds = len(coadd_sequence_nums_list)
|
|
112
130
|
|
|
113
|
-
line_read_line_indices = coadd_sequence_nums_list[0]
|
|
114
|
-
num_bias, num_read = line_read_line_indices[:2]
|
|
115
|
-
|
|
116
|
-
ndr_per_coadd = num_bias + num_read
|
|
117
|
-
|
|
118
131
|
# In `is_ramp_valid` we already confirmed that all NDRs have the same values and that they are one of the
|
|
119
132
|
# expected values
|
|
120
133
|
camera_readout_mode = ramp_obj_list[0].camera_readout_mode
|
|
121
134
|
modulator_spin_mode = ramp_obj_list[0].modulator_spin_mode
|
|
122
135
|
match camera_readout_mode:
|
|
123
136
|
case "UpTheRamp":
|
|
137
|
+
line_read_line_indices = coadd_sequence_nums_list[0]
|
|
138
|
+
num_bias, num_read = line_read_line_indices[:2]
|
|
139
|
+
ndr_per_coadd = num_bias + num_read
|
|
140
|
+
|
|
124
141
|
match modulator_spin_mode:
|
|
125
142
|
case "Continuous":
|
|
126
143
|
linearization_func = partial(
|
|
@@ -136,6 +153,11 @@ class LinearityCorrection(DlnirspTaskBase):
|
|
|
136
153
|
)
|
|
137
154
|
|
|
138
155
|
case "SubFrame":
|
|
156
|
+
# `self.valid_camera_sequence_regex`, along with `parse_camera_sample_sequence`, provides assurance that
|
|
157
|
+
# by the time we get here these assumptions are valid
|
|
158
|
+
num_bias = 0
|
|
159
|
+
num_read = 1
|
|
160
|
+
ndr_per_coadd = 1
|
|
139
161
|
linearization_func = self.linearize_subframe_coadd
|
|
140
162
|
|
|
141
163
|
coadd_stack = np.zeros((num_coadds, *ramp_obj_list[0].data.shape))
|
|
@@ -291,16 +313,25 @@ class LinearityCorrection(DlnirspTaskBase):
|
|
|
291
313
|
"3line,45read,3line,45read,2line"
|
|
292
314
|
`[[3, 45], [3, 45]]`
|
|
293
315
|
|
|
316
|
+
"4subframe,89line"
|
|
317
|
+
`[[1], [1], [1], [1]]`
|
|
318
|
+
|
|
294
319
|
Returns
|
|
295
320
|
-------
|
|
296
|
-
A list of lists. Top-level list contains an item for each coadd.
|
|
297
|
-
length 2. The numbers in these inner lists correspond to the number of bias and read frames in that coadd,
|
|
298
|
-
respectively.
|
|
321
|
+
A list of lists. Top-level list contains an item for each coadd. In UpTheRamp mode these items are themselves
|
|
322
|
+
lists of length 2. The numbers in these inner lists correspond to the number of bias and read frames in that coadd,
|
|
323
|
+
respectively. In SubFrame mode the inner lists will always be length 1 and should be equal to `[1]`.
|
|
299
324
|
"""
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
325
|
+
if "subframe" in camera_sample_sequence:
|
|
326
|
+
coadd_matches = self.subframe_sequence_regex.findall(camera_sample_sequence)
|
|
327
|
+
# `is_ramp_valid` ensures we only have a single match here
|
|
328
|
+
num_coadd = int(coadd_matches[0])
|
|
329
|
+
coadd_sequence_numbers = [[1]] * num_coadd
|
|
330
|
+
else:
|
|
331
|
+
coadd_matches = self.uptheramp_coadd_regex.findall(camera_sample_sequence)
|
|
332
|
+
coadd_sequence_numbers = [
|
|
333
|
+
[int(num) for num in coadd_match] for coadd_match in coadd_matches
|
|
334
|
+
]
|
|
304
335
|
|
|
305
336
|
return coadd_sequence_numbers
|
|
306
337
|
|
|
@@ -310,15 +341,15 @@ class LinearityCorrection(DlnirspTaskBase):
|
|
|
310
341
|
|
|
311
342
|
Current validity checks are:
|
|
312
343
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
344
|
+
#. All frames in the ramp have the same value for NUM_FRAMES_IN_RAMP
|
|
345
|
+
#. All frames in the ramp have the same value for CAMERA_READOUT_MODE
|
|
346
|
+
#. All frames in the ramp have the same value for MODULATOR_SPIN_MODE
|
|
347
|
+
#. The CAMERA_READOUT and MODULATOR_SPIN modes have expected values
|
|
348
|
+
#. The value of NUM_FRAMES_IN_RAMP equals the length of actual frames found
|
|
349
|
+
#. All frames in the ramp have the same value for CAMERA_SAMPLE_SEQUENCE
|
|
350
|
+
#. The camera sample sequence has the expected form (`valid_camera_sequence_regex`)
|
|
351
|
+
#. All coadds in the ramp have the same camera sample sequence
|
|
352
|
+
#. The ramp length is equal to the expected length from the camera sample sequence
|
|
322
353
|
|
|
323
354
|
If a ramp is not valid then the reason is logged and `False` is returned.
|
|
324
355
|
"""
|
|
@@ -382,7 +413,7 @@ class LinearityCorrection(DlnirspTaskBase):
|
|
|
382
413
|
return False
|
|
383
414
|
|
|
384
415
|
camera_sample_sequence = camera_sample_sequence_set.pop()
|
|
385
|
-
if
|
|
416
|
+
if not self.valid_camera_sequence_regex.search(camera_sample_sequence):
|
|
386
417
|
logger.info(
|
|
387
418
|
f"Malformed camera sample sequence: '{camera_sample_sequence}'. "
|
|
388
419
|
f"{common_status_str}"
|
|
@@ -436,7 +436,19 @@ class RawRampHeaders(DlnirspHeaders):
|
|
|
436
436
|
raise ValueError(f"{array_shape = } is weird")
|
|
437
437
|
array_shape = array_shape[1:]
|
|
438
438
|
|
|
439
|
-
|
|
439
|
+
match camera_readout_mode:
|
|
440
|
+
case "UpTheRamp":
|
|
441
|
+
self.num_frames_per_coadd = num_line + num_read
|
|
442
|
+
coadd_read_sequence = f"{num_line}line,{num_read}read"
|
|
443
|
+
cam_read_sequence = ",".join([coadd_read_sequence] * num_coadd)
|
|
444
|
+
case "SubFrame":
|
|
445
|
+
self.num_frames_per_coadd = 1
|
|
446
|
+
cam_read_sequence = f"{num_coadd}subframe"
|
|
447
|
+
num_line = 0
|
|
448
|
+
num_read = 1
|
|
449
|
+
case _:
|
|
450
|
+
raise ValueError(f"Don't know how to make data for {camera_readout_mode = }")
|
|
451
|
+
|
|
440
452
|
num_NDR_per_ramp = self.num_frames_per_coadd * num_coadd + num_reset
|
|
441
453
|
num_frames = num_ramps * num_NDR_per_ramp
|
|
442
454
|
dataset_shape = (num_frames, *array_shape)
|
|
@@ -446,12 +458,8 @@ class RawRampHeaders(DlnirspHeaders):
|
|
|
446
458
|
self.ramp_length_sec = TimeDelta(ramp_length_sec, format="sec")
|
|
447
459
|
self.num_coadd = num_coadd
|
|
448
460
|
self.num_line = num_line
|
|
449
|
-
self.num_read = num_read
|
|
450
461
|
self.num_reset = num_reset
|
|
451
462
|
|
|
452
|
-
coadd_read_sequence = f"{num_line}line,{num_read}read"
|
|
453
|
-
cam_read_sequence = ",".join([coadd_read_sequence] * num_coadd)
|
|
454
|
-
|
|
455
463
|
if num_reset > 0:
|
|
456
464
|
cam_read_sequence += f",{num_reset}line"
|
|
457
465
|
|
|
@@ -84,21 +84,31 @@ def write_ramps_to_task(
|
|
|
84
84
|
poly_coeffs = task.parameters.linearization_poly_coeffs
|
|
85
85
|
correction_poly = np.poly1d(poly_coeffs)
|
|
86
86
|
|
|
87
|
-
match
|
|
88
|
-
case "
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
87
|
+
match camera_readout_mode:
|
|
88
|
+
case "UpTheRamp":
|
|
89
|
+
match modulator_spin_mode:
|
|
90
|
+
case "Continuous":
|
|
91
|
+
ramp_data_func = partial(
|
|
92
|
+
make_continuous_ramp_data, bias=bias_value, correction_poly=correction_poly
|
|
93
|
+
)
|
|
94
|
+
case "Discrete":
|
|
95
|
+
ramp_data_func = partial(
|
|
96
|
+
make_discrete_ramp_data,
|
|
97
|
+
slopes=slopes,
|
|
98
|
+
intercepts=intercepts,
|
|
99
|
+
bias=bias_value,
|
|
100
|
+
correction_poly=correction_poly,
|
|
101
|
+
)
|
|
102
|
+
case _:
|
|
103
|
+
raise ValueError(
|
|
104
|
+
f"Don't know how to make data for {camera_readout_mode = } and {modulator_spin_mode = }"
|
|
105
|
+
)
|
|
106
|
+
case "SubFrame":
|
|
107
|
+
ramp_data_func = partial(make_subframe_data, correction_poly=correction_poly)
|
|
108
|
+
num_line = 0
|
|
109
|
+
num_read = 1
|
|
100
110
|
case _:
|
|
101
|
-
raise ValueError(f"Don't know how to make data for {
|
|
111
|
+
raise ValueError(f"Don't know how to make data for {camera_readout_mode = }")
|
|
102
112
|
|
|
103
113
|
dataset = RawRampHeaders(
|
|
104
114
|
array_shape=array_shape,
|
|
@@ -239,6 +249,27 @@ def make_discrete_ramp_data(
|
|
|
239
249
|
return array
|
|
240
250
|
|
|
241
251
|
|
|
252
|
+
def make_subframe_data(
|
|
253
|
+
frame: RawRampHeaders, correction_poly: np.poly1d = np.poly1d([1])
|
|
254
|
+
) -> np.ndarray:
|
|
255
|
+
shape = frame.array_shape
|
|
256
|
+
if frame.frame_in_ramp("") <= frame.num_coadd:
|
|
257
|
+
# One of the subframes. These are the values we use
|
|
258
|
+
true_value = (frame.current_coadd_in_ramp + 1) * 1000
|
|
259
|
+
|
|
260
|
+
else:
|
|
261
|
+
# A reset frame. Who cares
|
|
262
|
+
true_value = np.nan
|
|
263
|
+
|
|
264
|
+
# We want the polynomial corrected frame value to equal `true_value`, but the value of the polynomial will change
|
|
265
|
+
# depending on the "raw" value (`value`). So here we solve for the raw value numerically.
|
|
266
|
+
# Basically, solve for x such that `x / poly(x) == true_value`
|
|
267
|
+
fit_func = lambda x: x / correction_poly(x) - true_value
|
|
268
|
+
value = fsolve(fit_func, true_value)
|
|
269
|
+
|
|
270
|
+
return np.ones(shape) * value
|
|
271
|
+
|
|
272
|
+
|
|
242
273
|
def write_vis_inputs_to_task(task, num_frames):
|
|
243
274
|
dataset = SimpleModulatedHeaders(
|
|
244
275
|
num_modstates=num_frames,
|
|
@@ -283,10 +314,9 @@ def up_the_ramp_continuous_expected_value(
|
|
|
283
314
|
def subframe_expected_value(
|
|
284
315
|
*, ramp_num: int, num_line: int, num_read: int, expected_avg_coadd_value: float, **unused_args
|
|
285
316
|
) -> float:
|
|
286
|
-
# See `
|
|
287
|
-
#
|
|
288
|
-
|
|
289
|
-
return ramp_num * 100 + (num_line + num_read) * 10 + expected_avg_coadd_value
|
|
317
|
+
# See `make_subframe_ramp_data` for where this comes from; each coadd has the value of it's coadd number (1-indexed)
|
|
318
|
+
# times 1000
|
|
319
|
+
return expected_avg_coadd_value * 1000
|
|
290
320
|
|
|
291
321
|
|
|
292
322
|
def discrete_expected_value(
|
|
@@ -472,6 +502,8 @@ def test_VIS_linearity_correction(
|
|
|
472
502
|
[[3, 2], [3, 2], [3, 2]],
|
|
473
503
|
id="3line,2read,3line,2read,3line,2read,1line",
|
|
474
504
|
),
|
|
505
|
+
pytest.param("3subframe", [[1], [1], [1]], id="3subframe"),
|
|
506
|
+
pytest.param("5subframe,37line", [[1], [1], [1], [1], [1]], id="5subframe,37line"),
|
|
475
507
|
],
|
|
476
508
|
)
|
|
477
509
|
def test_parse_camera_sample_sequence(linearity_correction_task, camera_sequence, expected_results):
|
|
@@ -573,6 +605,19 @@ def test_linearity_correction_with_invalid_ramps(
|
|
|
573
605
|
"Missing some ramp frames. Expected 10 from sample sequence",
|
|
574
606
|
id="wrong_number_from_seq",
|
|
575
607
|
),
|
|
608
|
+
pytest.param(
|
|
609
|
+
[
|
|
610
|
+
DummyRampFitsAccess(
|
|
611
|
+
num_frames_in_ramp=2, camera_sample_sequence="5subframe,23line"
|
|
612
|
+
),
|
|
613
|
+
DummyRampFitsAccess(
|
|
614
|
+
num_frames_in_ramp=2, camera_sample_sequence="5subframe,23line"
|
|
615
|
+
),
|
|
616
|
+
],
|
|
617
|
+
False,
|
|
618
|
+
"Missing some ramp frames. Expected 28 from sample sequence",
|
|
619
|
+
id="wrong_number_from_seq_subframe",
|
|
620
|
+
),
|
|
576
621
|
pytest.param(
|
|
577
622
|
[
|
|
578
623
|
DummyRampFitsAccess(
|
|
@@ -584,6 +629,39 @@ def test_linearity_correction_with_invalid_ramps(
|
|
|
584
629
|
"Malformed camera sample sequence",
|
|
585
630
|
id="bad_cam_seq",
|
|
586
631
|
),
|
|
632
|
+
pytest.param(
|
|
633
|
+
[
|
|
634
|
+
DummyRampFitsAccess(
|
|
635
|
+
num_frames_in_ramp=1,
|
|
636
|
+
camera_sample_sequence="3subframe,2read",
|
|
637
|
+
),
|
|
638
|
+
],
|
|
639
|
+
False,
|
|
640
|
+
"Malformed camera sample sequence",
|
|
641
|
+
id="bad_cam_seq_subframe_mix",
|
|
642
|
+
),
|
|
643
|
+
pytest.param(
|
|
644
|
+
[
|
|
645
|
+
DummyRampFitsAccess(
|
|
646
|
+
num_frames_in_ramp=1,
|
|
647
|
+
camera_sample_sequence="10line,3subframe",
|
|
648
|
+
),
|
|
649
|
+
],
|
|
650
|
+
False,
|
|
651
|
+
"Malformed camera sample sequence",
|
|
652
|
+
id="bad_cam_seq_line_subframe",
|
|
653
|
+
),
|
|
654
|
+
pytest.param(
|
|
655
|
+
[
|
|
656
|
+
DummyRampFitsAccess(
|
|
657
|
+
num_frames_in_ramp=1,
|
|
658
|
+
camera_sample_sequence="3subframe,3subframe",
|
|
659
|
+
),
|
|
660
|
+
],
|
|
661
|
+
False,
|
|
662
|
+
"Malformed camera sample sequence",
|
|
663
|
+
id="bad_cam_seq_multiple_subframe",
|
|
664
|
+
),
|
|
587
665
|
pytest.param(
|
|
588
666
|
[
|
|
589
667
|
DummyRampFitsAccess(camera_readout_mode="UpTheRamp"),
|
|
@@ -623,6 +701,26 @@ def test_linearity_correction_with_invalid_ramps(
|
|
|
623
701
|
"",
|
|
624
702
|
id="valid",
|
|
625
703
|
),
|
|
704
|
+
pytest.param(
|
|
705
|
+
[
|
|
706
|
+
DummyRampFitsAccess(num_frames_in_ramp=2, camera_sample_sequence="2subframe"),
|
|
707
|
+
DummyRampFitsAccess(num_frames_in_ramp=2, camera_sample_sequence="2subframe"),
|
|
708
|
+
],
|
|
709
|
+
True,
|
|
710
|
+
"",
|
|
711
|
+
id="valid_subframe",
|
|
712
|
+
),
|
|
713
|
+
pytest.param(
|
|
714
|
+
[
|
|
715
|
+
DummyRampFitsAccess(num_frames_in_ramp=4, camera_sample_sequence="3subframe,1line"),
|
|
716
|
+
DummyRampFitsAccess(num_frames_in_ramp=4, camera_sample_sequence="3subframe,1line"),
|
|
717
|
+
DummyRampFitsAccess(num_frames_in_ramp=4, camera_sample_sequence="3subframe,1line"),
|
|
718
|
+
DummyRampFitsAccess(num_frames_in_ramp=4, camera_sample_sequence="3subframe,1line"),
|
|
719
|
+
],
|
|
720
|
+
True,
|
|
721
|
+
"",
|
|
722
|
+
id="valid_subframe_reset",
|
|
723
|
+
),
|
|
626
724
|
],
|
|
627
725
|
)
|
|
628
726
|
def test_is_ramp_valid(linearity_correction_task, ramp_list, valid, message, caplog):
|
|
@@ -634,7 +732,7 @@ def test_is_ramp_valid(linearity_correction_task, ramp_list, valid, message, cap
|
|
|
634
732
|
logger.add(caplog.handler)
|
|
635
733
|
assert linearity_correction_task.is_ramp_valid(ramp_list) is valid
|
|
636
734
|
if not valid:
|
|
637
|
-
assert re.search(message, caplog.text)
|
|
735
|
+
assert re.search(message, caplog.text), f"Did not find {message} in {caplog.text}"
|
|
638
736
|
|
|
639
737
|
|
|
640
738
|
def test_correction_polynomial(linearity_correction_task, assign_input_dataset_doc_to_task):
|
|
@@ -46,7 +46,7 @@ def raw_ramp_parse_task(tmp_path, recipe_run_id, arm_id):
|
|
|
46
46
|
ramp_length_sec = 1.0
|
|
47
47
|
array_shape = (3, 3)
|
|
48
48
|
modulator_spin_mode = "Really fast"
|
|
49
|
-
camera_readout_mode = "
|
|
49
|
+
camera_readout_mode = "UpTheRamp"
|
|
50
50
|
with ParseL0DlnirspRampData(
|
|
51
51
|
recipe_run_id=recipe_run_id,
|
|
52
52
|
workflow_name="workflow_name",
|
{dkist_processing_dlnirsp-0.32.3.dist-info → dkist_processing_dlnirsp-0.32.4.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-dlnirsp
|
|
3
|
-
Version: 0.32.
|
|
3
|
+
Version: 0.32.4
|
|
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
|
|
@@ -94,44 +94,44 @@ Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
|
|
|
94
94
|
Requires-Dist: aiohttp==3.13.2; extra == "frozen"
|
|
95
95
|
Requires-Dist: aiosignal==1.4.0; extra == "frozen"
|
|
96
96
|
Requires-Dist: aiosmtplib==5.0.0; extra == "frozen"
|
|
97
|
-
Requires-Dist: alembic==1.17.
|
|
97
|
+
Requires-Dist: alembic==1.17.2; extra == "frozen"
|
|
98
98
|
Requires-Dist: amqp==5.3.1; extra == "frozen"
|
|
99
99
|
Requires-Dist: annotated-types==0.7.0; extra == "frozen"
|
|
100
|
-
Requires-Dist: anyio==4.
|
|
100
|
+
Requires-Dist: anyio==4.12.0; extra == "frozen"
|
|
101
101
|
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.
|
|
104
|
-
Requires-Dist: apache-airflow-providers-common-io==1.
|
|
105
|
-
Requires-Dist: apache-airflow-providers-common-sql==1.
|
|
102
|
+
Requires-Dist: apache-airflow-providers-celery==3.13.1; extra == "frozen"
|
|
103
|
+
Requires-Dist: apache-airflow-providers-common-compat==1.10.0; extra == "frozen"
|
|
104
|
+
Requires-Dist: apache-airflow-providers-common-io==1.7.0; extra == "frozen"
|
|
105
|
+
Requires-Dist: apache-airflow-providers-common-sql==1.29.0; extra == "frozen"
|
|
106
106
|
Requires-Dist: apache-airflow-providers-fab==1.5.3; extra == "frozen"
|
|
107
|
-
Requires-Dist: apache-airflow-providers-ftp==3.
|
|
108
|
-
Requires-Dist: apache-airflow-providers-http==5.
|
|
109
|
-
Requires-Dist: apache-airflow-providers-imap==3.
|
|
110
|
-
Requires-Dist: apache-airflow-providers-postgres==6.
|
|
111
|
-
Requires-Dist: apache-airflow-providers-smtp==2.
|
|
112
|
-
Requires-Dist: apache-airflow-providers-sqlite==4.
|
|
113
|
-
Requires-Dist: apispec==6.
|
|
107
|
+
Requires-Dist: apache-airflow-providers-ftp==3.14.0; extra == "frozen"
|
|
108
|
+
Requires-Dist: apache-airflow-providers-http==5.6.0; extra == "frozen"
|
|
109
|
+
Requires-Dist: apache-airflow-providers-imap==3.10.0; extra == "frozen"
|
|
110
|
+
Requires-Dist: apache-airflow-providers-postgres==6.5.0; extra == "frozen"
|
|
111
|
+
Requires-Dist: apache-airflow-providers-smtp==2.4.0; extra == "frozen"
|
|
112
|
+
Requires-Dist: apache-airflow-providers-sqlite==4.2.0; extra == "frozen"
|
|
113
|
+
Requires-Dist: apispec==6.9.0; extra == "frozen"
|
|
114
114
|
Requires-Dist: argcomplete==3.6.3; extra == "frozen"
|
|
115
115
|
Requires-Dist: asdf==3.5.0; extra == "frozen"
|
|
116
116
|
Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
|
|
117
117
|
Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
|
|
118
|
-
Requires-Dist: asgiref==3.
|
|
119
|
-
Requires-Dist: asteval==1.0.
|
|
118
|
+
Requires-Dist: asgiref==3.11.0; extra == "frozen"
|
|
119
|
+
Requires-Dist: asteval==1.0.7; extra == "frozen"
|
|
120
120
|
Requires-Dist: astropy==7.0.2; extra == "frozen"
|
|
121
|
-
Requires-Dist: astropy-iers-data==0.2025.
|
|
122
|
-
Requires-Dist: asyncpg==0.
|
|
121
|
+
Requires-Dist: astropy-iers-data==0.2025.12.1.0.45.12; extra == "frozen"
|
|
122
|
+
Requires-Dist: asyncpg==0.31.0; extra == "frozen"
|
|
123
123
|
Requires-Dist: attrs==25.4.0; extra == "frozen"
|
|
124
124
|
Requires-Dist: babel==2.17.0; extra == "frozen"
|
|
125
|
-
Requires-Dist: billiard==4.2.
|
|
125
|
+
Requires-Dist: billiard==4.2.4; extra == "frozen"
|
|
126
126
|
Requires-Dist: blinker==1.9.0; extra == "frozen"
|
|
127
|
-
Requires-Dist: boto3==1.
|
|
128
|
-
Requires-Dist: botocore==1.
|
|
127
|
+
Requires-Dist: boto3==1.42.0; extra == "frozen"
|
|
128
|
+
Requires-Dist: botocore==1.41.6; extra == "frozen"
|
|
129
129
|
Requires-Dist: cachelib==0.13.0; extra == "frozen"
|
|
130
|
-
Requires-Dist: celery==5.
|
|
131
|
-
Requires-Dist: certifi==2025.
|
|
130
|
+
Requires-Dist: celery==5.6.0; extra == "frozen"
|
|
131
|
+
Requires-Dist: certifi==2025.11.12; extra == "frozen"
|
|
132
132
|
Requires-Dist: cffi==2.0.0; extra == "frozen"
|
|
133
133
|
Requires-Dist: charset-normalizer==3.4.4; extra == "frozen"
|
|
134
|
-
Requires-Dist: click==8.3.
|
|
134
|
+
Requires-Dist: click==8.3.1; extra == "frozen"
|
|
135
135
|
Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
|
|
136
136
|
Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
|
|
137
137
|
Requires-Dist: click-repl==0.3.0; extra == "frozen"
|
|
@@ -150,7 +150,7 @@ Requires-Dist: dill==0.4.0; extra == "frozen"
|
|
|
150
150
|
Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
|
|
151
151
|
Requires-Dist: dkist-processing-common==11.8.0; extra == "frozen"
|
|
152
152
|
Requires-Dist: dkist-processing-core==6.0.0; extra == "frozen"
|
|
153
|
-
Requires-Dist: dkist-processing-dlnirsp==0.32.
|
|
153
|
+
Requires-Dist: dkist-processing-dlnirsp==0.32.4; extra == "frozen"
|
|
154
154
|
Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
|
|
155
155
|
Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
|
|
156
156
|
Requires-Dist: dkist-service-configuration==4.1.7; extra == "frozen"
|
|
@@ -158,14 +158,15 @@ Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
|
|
|
158
158
|
Requires-Dist: dkist_fits_specifications==4.17.0; extra == "frozen"
|
|
159
159
|
Requires-Dist: dnspython==2.8.0; extra == "frozen"
|
|
160
160
|
Requires-Dist: email-validator==2.3.0; extra == "frozen"
|
|
161
|
+
Requires-Dist: exceptiongroup==1.3.1; extra == "frozen"
|
|
161
162
|
Requires-Dist: fastjsonschema==2.21.2; extra == "frozen"
|
|
162
163
|
Requires-Dist: flower==2.0.1; extra == "frozen"
|
|
163
|
-
Requires-Dist: fonttools==4.
|
|
164
|
+
Requires-Dist: fonttools==4.61.0; extra == "frozen"
|
|
164
165
|
Requires-Dist: frozenlist==1.8.0; extra == "frozen"
|
|
165
166
|
Requires-Dist: fsspec==2025.10.0; extra == "frozen"
|
|
166
167
|
Requires-Dist: globus-sdk==3.65.0; extra == "frozen"
|
|
167
|
-
Requires-Dist: google-re2==1.1.
|
|
168
|
-
Requires-Dist: googleapis-common-protos==1.
|
|
168
|
+
Requires-Dist: google-re2==1.1.20251105; extra == "frozen"
|
|
169
|
+
Requires-Dist: googleapis-common-protos==1.72.0; extra == "frozen"
|
|
169
170
|
Requires-Dist: gqlclient==1.2.3; extra == "frozen"
|
|
170
171
|
Requires-Dist: greenlet==3.2.4; extra == "frozen"
|
|
171
172
|
Requires-Dist: grpcio==1.76.0; extra == "frozen"
|
|
@@ -184,7 +185,7 @@ Requires-Dist: jsonschema==4.25.1; extra == "frozen"
|
|
|
184
185
|
Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
|
|
185
186
|
Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
|
|
186
187
|
Requires-Dist: kiwisolver==1.4.9; extra == "frozen"
|
|
187
|
-
Requires-Dist: kombu==5.6.
|
|
188
|
+
Requires-Dist: kombu==5.6.1; extra == "frozen"
|
|
188
189
|
Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
|
|
189
190
|
Requires-Dist: lazy_loader==0.4; extra == "frozen"
|
|
190
191
|
Requires-Dist: limits==5.6.0; extra == "frozen"
|
|
@@ -205,7 +206,7 @@ Requires-Dist: more-itertools==10.8.0; extra == "frozen"
|
|
|
205
206
|
Requires-Dist: moviepy==2.1.2; extra == "frozen"
|
|
206
207
|
Requires-Dist: multidict==6.7.0; extra == "frozen"
|
|
207
208
|
Requires-Dist: nbformat==5.10.4; extra == "frozen"
|
|
208
|
-
Requires-Dist: networkx==3.
|
|
209
|
+
Requires-Dist: networkx==3.6; extra == "frozen"
|
|
209
210
|
Requires-Dist: numba==0.61.2; extra == "frozen"
|
|
210
211
|
Requires-Dist: numpy==2.2.5; extra == "frozen"
|
|
211
212
|
Requires-Dist: object-clerk==1.0.0; extra == "frozen"
|
|
@@ -251,13 +252,13 @@ Requires-Dist: proglog==0.1.12; extra == "frozen"
|
|
|
251
252
|
Requires-Dist: prometheus_client==0.23.1; extra == "frozen"
|
|
252
253
|
Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
|
|
253
254
|
Requires-Dist: propcache==0.4.1; extra == "frozen"
|
|
254
|
-
Requires-Dist: protobuf==6.33.
|
|
255
|
+
Requires-Dist: protobuf==6.33.1; extra == "frozen"
|
|
255
256
|
Requires-Dist: psutil==7.1.3; extra == "frozen"
|
|
256
257
|
Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
|
|
257
258
|
Requires-Dist: pycparser==2.23; extra == "frozen"
|
|
258
|
-
Requires-Dist: pydantic==2.12.
|
|
259
|
-
Requires-Dist: pydantic-settings==2.
|
|
260
|
-
Requires-Dist: pydantic_core==2.41.
|
|
259
|
+
Requires-Dist: pydantic==2.12.5; extra == "frozen"
|
|
260
|
+
Requires-Dist: pydantic-settings==2.12.0; extra == "frozen"
|
|
261
|
+
Requires-Dist: pydantic_core==2.41.5; extra == "frozen"
|
|
261
262
|
Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
|
|
262
263
|
Requires-Dist: pyparsing==3.2.5; extra == "frozen"
|
|
263
264
|
Requires-Dist: python-daemon==3.1.2; extra == "frozen"
|
|
@@ -273,17 +274,16 @@ Requires-Dist: requests-toolbelt==1.0.0; extra == "frozen"
|
|
|
273
274
|
Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
|
|
274
275
|
Requires-Dist: rich==13.9.4; extra == "frozen"
|
|
275
276
|
Requires-Dist: rich-argparse==1.7.2; extra == "frozen"
|
|
276
|
-
Requires-Dist: rpds-py==0.
|
|
277
|
-
Requires-Dist: s3transfer==0.
|
|
277
|
+
Requires-Dist: rpds-py==0.30.0; extra == "frozen"
|
|
278
|
+
Requires-Dist: s3transfer==0.16.0; extra == "frozen"
|
|
278
279
|
Requires-Dist: scikit-image==0.25.2; extra == "frozen"
|
|
279
280
|
Requires-Dist: scipy==1.15.3; extra == "frozen"
|
|
280
281
|
Requires-Dist: semantic-version==2.10.0; extra == "frozen"
|
|
281
282
|
Requires-Dist: setproctitle==1.3.7; extra == "frozen"
|
|
282
283
|
Requires-Dist: six==1.17.0; extra == "frozen"
|
|
283
|
-
Requires-Dist: sniffio==1.3.1; extra == "frozen"
|
|
284
284
|
Requires-Dist: solar-wavelength-calibration==1.0.1; extra == "frozen"
|
|
285
285
|
Requires-Dist: sqids==0.5.1; extra == "frozen"
|
|
286
|
-
Requires-Dist: sqlparse==0.5.
|
|
286
|
+
Requires-Dist: sqlparse==0.5.4; extra == "frozen"
|
|
287
287
|
Requires-Dist: sunpy==6.1.1; extra == "frozen"
|
|
288
288
|
Requires-Dist: tabulate==0.9.0; extra == "frozen"
|
|
289
289
|
Requires-Dist: talus==1.3.4; extra == "frozen"
|
|
@@ -297,16 +297,17 @@ Requires-Dist: traitlets==5.14.3; extra == "frozen"
|
|
|
297
297
|
Requires-Dist: typing-inspection==0.4.2; extra == "frozen"
|
|
298
298
|
Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
|
|
299
299
|
Requires-Dist: tzdata==2025.2; extra == "frozen"
|
|
300
|
+
Requires-Dist: tzlocal==5.3.1; extra == "frozen"
|
|
300
301
|
Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
|
|
301
302
|
Requires-Dist: uncertainties==3.2.3; extra == "frozen"
|
|
302
|
-
Requires-Dist: universal_pathlib==0.3.
|
|
303
|
+
Requires-Dist: universal_pathlib==0.3.6; extra == "frozen"
|
|
303
304
|
Requires-Dist: urllib3==2.5.0; extra == "frozen"
|
|
304
305
|
Requires-Dist: vine==5.1.0; extra == "frozen"
|
|
305
306
|
Requires-Dist: voluptuous==0.15.2; extra == "frozen"
|
|
306
307
|
Requires-Dist: wcwidth==0.2.14; extra == "frozen"
|
|
307
308
|
Requires-Dist: wirerope==1.0.0; extra == "frozen"
|
|
308
309
|
Requires-Dist: wrapt==1.17.3; extra == "frozen"
|
|
309
|
-
Requires-Dist: yamale==6.
|
|
310
|
+
Requires-Dist: yamale==6.1.0; extra == "frozen"
|
|
310
311
|
Requires-Dist: yarl==1.22.0; extra == "frozen"
|
|
311
312
|
Requires-Dist: zipp==3.23.0; extra == "frozen"
|
|
312
313
|
|
{dkist_processing_dlnirsp-0.32.3.dist-info → dkist_processing_dlnirsp-0.32.4.dist-info}/RECORD
RENAMED
|
@@ -27,7 +27,7 @@ dkist_processing_dlnirsp/tasks/ifu_drift.py,sha256=JeFgl6uk6lYU4jJ-gBYtRESyUa9mb
|
|
|
27
27
|
dkist_processing_dlnirsp/tasks/instrument_polarization.py,sha256=G79qXg1080zsd8ZwwYSSupUGWPRNBevyag49H32gh60,28201
|
|
28
28
|
dkist_processing_dlnirsp/tasks/l1_output_data.py,sha256=Psta0476jih-cfmpdnzmquys030sW4f4VX6ksAb-g1o,465
|
|
29
29
|
dkist_processing_dlnirsp/tasks/lamp.py,sha256=twoMHMnE2jm2OYxkeHFcjqcyQYVtEjSU2_z2mmn3Ybs,5390
|
|
30
|
-
dkist_processing_dlnirsp/tasks/linearity_correction.py,sha256=
|
|
30
|
+
dkist_processing_dlnirsp/tasks/linearity_correction.py,sha256=dYiGcBzKF0Lr_sTdwQ2OUguYgm00ky5oJ3KV4mJo6UI,22633
|
|
31
31
|
dkist_processing_dlnirsp/tasks/make_movie_frames.py,sha256=zxyAWNnPFbG7jpUEe3ekRyJGjk706T9a-yiA3eoWi5M,6290
|
|
32
32
|
dkist_processing_dlnirsp/tasks/parse.py,sha256=ZtqM6dyxxnnbVTAun040EuxfQZEQcnkXzZffXSBTYkk,10919
|
|
33
33
|
dkist_processing_dlnirsp/tasks/quality_metrics.py,sha256=1ScLAinv3WG-0M7u_26gnogbJ_D84K9CP7eRvEuwb9E,7346
|
|
@@ -39,7 +39,7 @@ dkist_processing_dlnirsp/tasks/mixin/__init__.py,sha256=5PMbkD6K0zTfhCxv8vg2lvJC
|
|
|
39
39
|
dkist_processing_dlnirsp/tasks/mixin/corrections.py,sha256=MRZXCEc0KBE-9cQUpRP-K3ioDYRH8_ORFlJcH2SsmWA,6803
|
|
40
40
|
dkist_processing_dlnirsp/tasks/mixin/group_id.py,sha256=u28XLVtvZ_lmzzaSX2SuA2MOiY69GC8AJsic2Vi2OSQ,11137
|
|
41
41
|
dkist_processing_dlnirsp/tests/__init__.py,sha256=UHIAs0SglAXeB7UeDgVwo1EE9QPRq3rG3BZkiCpBq7M,42
|
|
42
|
-
dkist_processing_dlnirsp/tests/conftest.py,sha256=
|
|
42
|
+
dkist_processing_dlnirsp/tests/conftest.py,sha256=Xp02ZyHi6X3FzyY_IQOjLsH3gOA9zK7KGo9gpeeO6jw,68768
|
|
43
43
|
dkist_processing_dlnirsp/tests/test_assemble_movie.py,sha256=hKAIHCRQu8fZwCuWsX_4WHFrDpC0bDQ9CCI9A5bRkqg,5665
|
|
44
44
|
dkist_processing_dlnirsp/tests/test_assemble_quality.py,sha256=djZsVSuRGl3akH3LmYjWvYuNSUFFQfS5y0S3Op7lQIE,1327
|
|
45
45
|
dkist_processing_dlnirsp/tests/test_bad_pixel_map.py,sha256=g5jWhVGSHMOtkcdiZ27G51ciud4ySjoDAjvMGLlgTIM,6093
|
|
@@ -53,10 +53,10 @@ dkist_processing_dlnirsp/tests/test_group_id.py,sha256=TpNllN6OZuYF8almsayk7pRTc
|
|
|
53
53
|
dkist_processing_dlnirsp/tests/test_ifu_drift.py,sha256=K6ushbVQVE6AATjiP3hEgF6oyZp41SbGkI_Sa_kyrNs,9066
|
|
54
54
|
dkist_processing_dlnirsp/tests/test_instrument_polarization_calibration.py,sha256=pPXjfzi3EcaawNqvXsz3OcCF1XITEJeCzQ8-iOjlm7U,23430
|
|
55
55
|
dkist_processing_dlnirsp/tests/test_lamp.py,sha256=umy4ydYR5M3dqXTQP14qbamOleutyD1jSj3325aitl0,3940
|
|
56
|
-
dkist_processing_dlnirsp/tests/test_linearity_correction.py,sha256
|
|
56
|
+
dkist_processing_dlnirsp/tests/test_linearity_correction.py,sha256=JkPNtsRad2JQQ2QiJjQar9tJuCi9-ksOdEYHW_-kl58,31793
|
|
57
57
|
dkist_processing_dlnirsp/tests/test_make_movie_frames.py,sha256=fR1xJEFJMK0xUu8-EyOS_6mIX_ZO2J_nM0k3ud8xtYM,3648
|
|
58
58
|
dkist_processing_dlnirsp/tests/test_parameters.py,sha256=KpBeisM4BIF5Kl6ZxZqk3yCozndmLMlzNgo0ij0hmYw,10328
|
|
59
|
-
dkist_processing_dlnirsp/tests/test_parse.py,sha256=
|
|
59
|
+
dkist_processing_dlnirsp/tests/test_parse.py,sha256=UIII4R6JruUEFIlYDRwTwiBqyf4ldYxAhCWHM-jcd6E,38005
|
|
60
60
|
dkist_processing_dlnirsp/tests/test_quality.py,sha256=OBWva_E6T5RfDuo73LiTdTr7uh2FO04VpBAsSOLfjVQ,6122
|
|
61
61
|
dkist_processing_dlnirsp/tests/test_science.py,sha256=1DKqKNAEZEsVCffYz_TiEc2REG7cBIfGeig1kJK4ZtE,20902
|
|
62
62
|
dkist_processing_dlnirsp/tests/test_solar.py,sha256=jTNnxs5fE8R_hLvmdAU9x4RXJaSpJWGQajL7kzXTxPQ,12111
|
|
@@ -94,8 +94,8 @@ docs/science_calibration.rst,sha256=JUMeS7KyIsL9cUuy-IdV2tQ-wQ2lBx6j8u_51ThJzVg,
|
|
|
94
94
|
docs/scientific_changelog.rst,sha256=01AWBSHg8zElnodCgAq-hMxhk9CkX5rtEENx4iz0sjI,300
|
|
95
95
|
docs/wavelength_calibration.rst,sha256=VP45e0g4r-dReQmypQVqduvezQiKwq47STlAJn0w8iQ,4095
|
|
96
96
|
licenses/LICENSE.rst,sha256=piZaQplkzOMmH1NXg6QIdo9wwo9pPCoHkvm2-DmH76E,1462
|
|
97
|
-
dkist_processing_dlnirsp-0.32.
|
|
98
|
-
dkist_processing_dlnirsp-0.32.
|
|
99
|
-
dkist_processing_dlnirsp-0.32.
|
|
100
|
-
dkist_processing_dlnirsp-0.32.
|
|
101
|
-
dkist_processing_dlnirsp-0.32.
|
|
97
|
+
dkist_processing_dlnirsp-0.32.4.dist-info/METADATA,sha256=GK82oJCthMugdfm892PLdLdJv9z3qKqzbA1QBWfT0EI,29368
|
|
98
|
+
dkist_processing_dlnirsp-0.32.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
99
|
+
dkist_processing_dlnirsp-0.32.4.dist-info/entry_points.txt,sha256=p4-7cpIfxmQGFUDIP5n5noE5KADHN2-JvV03e0gOx9s,140
|
|
100
|
+
dkist_processing_dlnirsp-0.32.4.dist-info/top_level.txt,sha256=4WmLV9LQM78KTFnkHmtaOJvVHAPpz0m9ruzDS-B_cUo,49
|
|
101
|
+
dkist_processing_dlnirsp-0.32.4.dist-info/RECORD,,
|
{dkist_processing_dlnirsp-0.32.3.dist-info → dkist_processing_dlnirsp-0.32.4.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|