dkist-processing-cryonirsp 1.4.20__py3-none-any.whl → 1.14.9rc1__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.
- changelog/232.misc.rst +1 -0
- dkist_processing_cryonirsp/__init__.py +1 -0
- dkist_processing_cryonirsp/codecs/fits.py +1 -0
- dkist_processing_cryonirsp/config.py +5 -1
- dkist_processing_cryonirsp/models/beam_boundaries.py +1 -0
- dkist_processing_cryonirsp/models/constants.py +31 -30
- dkist_processing_cryonirsp/models/exposure_conditions.py +6 -5
- dkist_processing_cryonirsp/models/fits_access.py +40 -0
- dkist_processing_cryonirsp/models/parameters.py +14 -26
- dkist_processing_cryonirsp/models/tags.py +1 -0
- dkist_processing_cryonirsp/models/task_name.py +1 -0
- dkist_processing_cryonirsp/parsers/check_for_gains.py +1 -0
- dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +40 -47
- dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +1 -0
- dkist_processing_cryonirsp/parsers/exposure_conditions.py +14 -13
- dkist_processing_cryonirsp/parsers/map_repeats.py +1 -0
- dkist_processing_cryonirsp/parsers/measurements.py +29 -16
- dkist_processing_cryonirsp/parsers/modstates.py +5 -1
- dkist_processing_cryonirsp/parsers/optical_density_filters.py +1 -0
- dkist_processing_cryonirsp/parsers/polarimetric_check.py +18 -7
- dkist_processing_cryonirsp/parsers/scan_step.py +12 -4
- dkist_processing_cryonirsp/parsers/time.py +7 -7
- dkist_processing_cryonirsp/parsers/wavelength.py +6 -1
- dkist_processing_cryonirsp/tasks/__init__.py +2 -1
- dkist_processing_cryonirsp/tasks/assemble_movie.py +1 -0
- dkist_processing_cryonirsp/tasks/bad_pixel_map.py +6 -5
- dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +12 -11
- dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +1 -0
- dkist_processing_cryonirsp/tasks/ci_science.py +1 -0
- dkist_processing_cryonirsp/tasks/cryonirsp_base.py +2 -3
- dkist_processing_cryonirsp/tasks/dark.py +5 -4
- dkist_processing_cryonirsp/tasks/gain.py +7 -6
- dkist_processing_cryonirsp/tasks/instrument_polarization.py +17 -16
- dkist_processing_cryonirsp/tasks/l1_output_data.py +1 -0
- dkist_processing_cryonirsp/tasks/linearity_correction.py +1 -0
- dkist_processing_cryonirsp/tasks/make_movie_frames.py +3 -2
- dkist_processing_cryonirsp/tasks/mixin/corrections.py +1 -0
- dkist_processing_cryonirsp/tasks/mixin/shift_measurements.py +9 -2
- dkist_processing_cryonirsp/tasks/parse.py +70 -52
- dkist_processing_cryonirsp/tasks/quality_metrics.py +15 -14
- dkist_processing_cryonirsp/tasks/science_base.py +8 -6
- dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +2 -1
- dkist_processing_cryonirsp/tasks/sp_geometric.py +11 -10
- dkist_processing_cryonirsp/tasks/sp_science.py +1 -0
- dkist_processing_cryonirsp/tasks/sp_solar_gain.py +15 -12
- dkist_processing_cryonirsp/tasks/sp_wavelength_calibration.py +300 -0
- dkist_processing_cryonirsp/tasks/write_l1.py +59 -38
- dkist_processing_cryonirsp/tests/conftest.py +75 -53
- dkist_processing_cryonirsp/tests/header_models.py +62 -11
- dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py +26 -46
- dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py +26 -47
- dkist_processing_cryonirsp/tests/local_trial_workflows/linearize_only.py +3 -3
- dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py +57 -26
- dkist_processing_cryonirsp/tests/test_assemble_movie.py +4 -5
- dkist_processing_cryonirsp/tests/test_assemble_qualilty.py +5 -1
- dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +4 -5
- dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +4 -5
- dkist_processing_cryonirsp/tests/test_ci_science.py +4 -5
- dkist_processing_cryonirsp/tests/test_corrections.py +5 -6
- dkist_processing_cryonirsp/tests/test_cryo_base.py +4 -6
- dkist_processing_cryonirsp/tests/test_cryo_constants.py +7 -3
- dkist_processing_cryonirsp/tests/test_dark.py +7 -8
- dkist_processing_cryonirsp/tests/test_fits_access.py +44 -0
- dkist_processing_cryonirsp/tests/test_gain.py +7 -8
- dkist_processing_cryonirsp/tests/test_instrument_polarization.py +19 -10
- dkist_processing_cryonirsp/tests/test_linearity_correction.py +5 -4
- dkist_processing_cryonirsp/tests/test_make_movie_frames.py +2 -3
- dkist_processing_cryonirsp/tests/test_parameters.py +23 -28
- dkist_processing_cryonirsp/tests/test_parse.py +48 -12
- dkist_processing_cryonirsp/tests/test_quality.py +2 -3
- dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +5 -5
- dkist_processing_cryonirsp/tests/test_sp_geometric.py +5 -6
- dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +2 -3
- dkist_processing_cryonirsp/tests/test_sp_science.py +4 -5
- dkist_processing_cryonirsp/tests/test_sp_solar.py +6 -5
- dkist_processing_cryonirsp/tests/{test_sp_dispersion_axis_correction.py → test_sp_wavelength_calibration.py} +11 -29
- dkist_processing_cryonirsp/tests/test_trial_create_quality_report.py +1 -1
- dkist_processing_cryonirsp/tests/test_workflows.py +1 -0
- dkist_processing_cryonirsp/tests/test_write_l1.py +29 -31
- dkist_processing_cryonirsp/workflows/__init__.py +1 -0
- dkist_processing_cryonirsp/workflows/ci_l0_processing.py +9 -5
- dkist_processing_cryonirsp/workflows/sp_l0_processing.py +12 -8
- dkist_processing_cryonirsp/workflows/trial_workflows.py +12 -11
- dkist_processing_cryonirsp-1.14.9rc1.dist-info/METADATA +552 -0
- dkist_processing_cryonirsp-1.14.9rc1.dist-info/RECORD +115 -0
- {dkist_processing_cryonirsp-1.4.20.dist-info → dkist_processing_cryonirsp-1.14.9rc1.dist-info}/WHEEL +1 -1
- docs/ci_science_calibration.rst +10 -0
- docs/conf.py +1 -0
- docs/index.rst +1 -0
- docs/sp_science_calibration.rst +7 -0
- docs/wavelength_calibration.rst +62 -0
- dkist_processing_cryonirsp/tasks/sp_dispersion_axis_correction.py +0 -492
- dkist_processing_cryonirsp-1.4.20.dist-info/METADATA +0 -452
- dkist_processing_cryonirsp-1.4.20.dist-info/RECORD +0 -111
- {dkist_processing_cryonirsp-1.4.20.dist-info → dkist_processing_cryonirsp-1.14.9rc1.dist-info}/top_level.txt +0 -0
|
@@ -14,6 +14,7 @@ from dkist_processing_common.tasks import WorkflowTaskBase
|
|
|
14
14
|
from dkist_service_configuration.logging import logger
|
|
15
15
|
|
|
16
16
|
from dkist_processing_cryonirsp.models.constants import CryonirspBudName
|
|
17
|
+
from dkist_processing_cryonirsp.models.fits_access import CryonirspMetadataKey
|
|
17
18
|
from dkist_processing_cryonirsp.models.tags import CryonirspTag
|
|
18
19
|
from dkist_processing_cryonirsp.tasks import CIBeamBoundariesCalibration
|
|
19
20
|
from dkist_processing_cryonirsp.tasks import CIScienceCalibration
|
|
@@ -39,21 +40,13 @@ from dkist_processing_cryonirsp.tasks.parse import ParseL0CryonirspSPLinearizedD
|
|
|
39
40
|
from dkist_processing_cryonirsp.tasks.quality_metrics import CryonirspL0QualityMetrics
|
|
40
41
|
from dkist_processing_cryonirsp.tasks.quality_metrics import CryonirspL1QualityMetrics
|
|
41
42
|
from dkist_processing_cryonirsp.tasks.sp_beam_boundaries import SPBeamBoundariesCalibration
|
|
42
|
-
from dkist_processing_cryonirsp.tasks.sp_dispersion_axis_correction import (
|
|
43
|
-
SPDispersionAxisCorrection,
|
|
44
|
-
)
|
|
45
43
|
from dkist_processing_cryonirsp.tasks.sp_geometric import SPGeometricCalibration
|
|
46
44
|
from dkist_processing_cryonirsp.tasks.sp_science import SPScienceCalibration
|
|
47
45
|
from dkist_processing_cryonirsp.tasks.sp_solar_gain import SPSolarGainCalibration
|
|
46
|
+
from dkist_processing_cryonirsp.tasks.sp_wavelength_calibration import SPWavelengthCalibration
|
|
48
47
|
from dkist_processing_cryonirsp.tasks.write_l1 import CIWriteL1Frame
|
|
49
48
|
from dkist_processing_cryonirsp.tasks.write_l1 import SPWriteL1Frame
|
|
50
|
-
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
51
|
-
create_input_dataset_parameter_document,
|
|
52
|
-
)
|
|
53
49
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import DBAccess
|
|
54
|
-
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
55
|
-
load_parsing_task,
|
|
56
|
-
)
|
|
57
50
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
58
51
|
LoadBadPixelMap,
|
|
59
52
|
)
|
|
@@ -61,9 +54,6 @@ from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers
|
|
|
61
54
|
LoadBeamBoundaryCal,
|
|
62
55
|
)
|
|
63
56
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import LoadDarkCal
|
|
64
|
-
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
65
|
-
LoadDispersionAxisCorrection,
|
|
66
|
-
)
|
|
67
57
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
68
58
|
LoadGeometricCal,
|
|
69
59
|
)
|
|
@@ -76,7 +66,7 @@ from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers
|
|
|
76
66
|
)
|
|
77
67
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import LoadSolarCal
|
|
78
68
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
79
|
-
|
|
69
|
+
LoadWavelengthCorrection,
|
|
80
70
|
)
|
|
81
71
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
82
72
|
SaveBadPixelMap,
|
|
@@ -85,9 +75,6 @@ from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers
|
|
|
85
75
|
SaveBeamBoundaryCal,
|
|
86
76
|
)
|
|
87
77
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import SaveDarkCal
|
|
88
|
-
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
89
|
-
SaveDispersionAxisCorrection,
|
|
90
|
-
)
|
|
91
78
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
92
79
|
SaveGeometricCal,
|
|
93
80
|
)
|
|
@@ -99,6 +86,18 @@ from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers
|
|
|
99
86
|
SaveLinearizedFiles,
|
|
100
87
|
)
|
|
101
88
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import SaveSolarCal
|
|
89
|
+
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
90
|
+
SaveWavelengthCorrection,
|
|
91
|
+
)
|
|
92
|
+
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
93
|
+
create_input_dataset_parameter_document,
|
|
94
|
+
)
|
|
95
|
+
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
96
|
+
load_parsing_task,
|
|
97
|
+
)
|
|
98
|
+
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
99
|
+
save_parsing_task,
|
|
100
|
+
)
|
|
102
101
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
103
102
|
tag_inputs_task,
|
|
104
103
|
)
|
|
@@ -151,7 +150,7 @@ def tag_linearized_inputs_task(suffix: str):
|
|
|
151
150
|
hdu = hdul[0]
|
|
152
151
|
else:
|
|
153
152
|
hdu = hdul[1]
|
|
154
|
-
arm_id = hdu.header[
|
|
153
|
+
arm_id = hdu.header[CryonirspMetadataKey.arm_id]
|
|
155
154
|
self.constants._update({CryonirspBudName.arm_id.value: arm_id})
|
|
156
155
|
|
|
157
156
|
return TagLinearizedInputs
|
|
@@ -193,21 +192,6 @@ class ValidateL1Output(CryonirspTaskBase):
|
|
|
193
192
|
spec214_validator.validate(f, extra=False)
|
|
194
193
|
|
|
195
194
|
|
|
196
|
-
def setup_APM_config() -> None:
|
|
197
|
-
mesh_config = {
|
|
198
|
-
"system-monitoring-log-apm": {
|
|
199
|
-
"mesh_address": "system-monitoring-log-apm.service.sim.consul",
|
|
200
|
-
"mesh_port": 8200,
|
|
201
|
-
},
|
|
202
|
-
"automated-processing-scratch-inventory": {"mesh_address": "localhost", "mesh_port": 6379},
|
|
203
|
-
"internal-api-gateway": {"mesh_address": "localhost", "mesh_port": 80},
|
|
204
|
-
}
|
|
205
|
-
apm_options = {"TRANSACTION_MAX_SPANS": 10000}
|
|
206
|
-
os.environ["MESH_CONFIG"] = json.dumps(mesh_config)
|
|
207
|
-
os.environ["ELASTIC_APM_ENABLED"] = "true"
|
|
208
|
-
os.environ["ELASTIC_APM_OTHER_OPTIONS"] = json.dumps(apm_options)
|
|
209
|
-
|
|
210
|
-
|
|
211
195
|
def CI_workflow(
|
|
212
196
|
manual_processing_run: ManualProcessing,
|
|
213
197
|
load_beam_boundaries: bool = False,
|
|
@@ -254,7 +238,7 @@ def SP_workflow(
|
|
|
254
238
|
load_geometric: bool = False,
|
|
255
239
|
load_solar: bool = False,
|
|
256
240
|
load_inst_pol: bool = False,
|
|
257
|
-
|
|
241
|
+
load_wavelength_correction: bool = False,
|
|
258
242
|
) -> None:
|
|
259
243
|
if load_beam_boundaries:
|
|
260
244
|
manual_processing_run.run_task(task=LoadBeamBoundaryCal)
|
|
@@ -286,11 +270,11 @@ def SP_workflow(
|
|
|
286
270
|
manual_processing_run.run_task(task=SPSolarGainCalibration)
|
|
287
271
|
manual_processing_run.run_task(task=SaveSolarCal)
|
|
288
272
|
|
|
289
|
-
if
|
|
290
|
-
manual_processing_run.run_task(task=
|
|
273
|
+
if load_wavelength_correction:
|
|
274
|
+
manual_processing_run.run_task(task=LoadWavelengthCorrection)
|
|
291
275
|
else:
|
|
292
|
-
manual_processing_run.run_task(task=
|
|
293
|
-
manual_processing_run.run_task(task=
|
|
276
|
+
manual_processing_run.run_task(task=SPWavelengthCalibration)
|
|
277
|
+
manual_processing_run.run_task(task=SaveWavelengthCorrection)
|
|
294
278
|
|
|
295
279
|
if load_inst_pol:
|
|
296
280
|
manual_processing_run.run_task(task=LoadInstPolCal)
|
|
@@ -322,14 +306,11 @@ def main(
|
|
|
322
306
|
load_lamp: bool = False,
|
|
323
307
|
load_geometric: bool = False,
|
|
324
308
|
load_solar: bool = False,
|
|
325
|
-
load_dispersion_correction: bool = False,
|
|
326
309
|
load_inst_pol: bool = False,
|
|
327
|
-
|
|
310
|
+
load_wavelength_calibration: bool = False,
|
|
328
311
|
param_path: Path = None,
|
|
329
312
|
transfer_trial_data: str | None = None,
|
|
330
313
|
):
|
|
331
|
-
if use_apm:
|
|
332
|
-
setup_APM_config()
|
|
333
314
|
with ManualProcessing(
|
|
334
315
|
workflow_path=Path(scratch_path),
|
|
335
316
|
recipe_run_id=recipe_run_id,
|
|
@@ -414,7 +395,7 @@ def main(
|
|
|
414
395
|
load_lamp=load_lamp,
|
|
415
396
|
load_geometric=load_geometric,
|
|
416
397
|
load_solar=load_solar,
|
|
417
|
-
|
|
398
|
+
load_wavelength_correction=load_wavelength_calibration,
|
|
418
399
|
load_inst_pol=load_inst_pol,
|
|
419
400
|
)
|
|
420
401
|
elif arm_id == "CI":
|
|
@@ -565,8 +546,8 @@ if __name__ == "__main__":
|
|
|
565
546
|
)
|
|
566
547
|
parser.add_argument(
|
|
567
548
|
"-W",
|
|
568
|
-
"--load-
|
|
569
|
-
help="Load
|
|
549
|
+
"--load-wavelength-calibration",
|
|
550
|
+
help="Load wavelength calibration solution from previously saved run",
|
|
570
551
|
action="store_true",
|
|
571
552
|
)
|
|
572
553
|
parser.add_argument(
|
|
@@ -575,7 +556,6 @@ if __name__ == "__main__":
|
|
|
575
556
|
help="Load instrument polarization calibration from previously saved run",
|
|
576
557
|
action="store_true",
|
|
577
558
|
)
|
|
578
|
-
parser.add_argument("-A", "--use-apm", help="Send APM spans to SIM", action="store_true")
|
|
579
559
|
parser.add_argument(
|
|
580
560
|
"-p",
|
|
581
561
|
"--param-path",
|
|
@@ -603,9 +583,8 @@ if __name__ == "__main__":
|
|
|
603
583
|
load_lamp=args.load_lamp,
|
|
604
584
|
load_geometric=args.load_geometric,
|
|
605
585
|
load_solar=args.load_solar,
|
|
606
|
-
|
|
586
|
+
load_wavelength_calibration=args.load_wavelength_calibration,
|
|
607
587
|
load_inst_pol=args.load_inst_pol,
|
|
608
|
-
use_apm=args.use_apm,
|
|
609
588
|
param_path=Path(args.param_path),
|
|
610
589
|
transfer_trial_data=args.transfer_trial_data,
|
|
611
590
|
)
|
|
@@ -8,13 +8,13 @@ from dkist_processing_cryonirsp.models.tags import CryonirspTag
|
|
|
8
8
|
from dkist_processing_cryonirsp.tasks.linearity_correction import LinearityCorrection
|
|
9
9
|
from dkist_processing_cryonirsp.tasks.parse import ParseL0CryonirspRampData
|
|
10
10
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
11
|
-
|
|
11
|
+
SaveLinearizedFiles,
|
|
12
12
|
)
|
|
13
13
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
14
|
-
|
|
14
|
+
create_input_dataset_parameter_document,
|
|
15
15
|
)
|
|
16
16
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
17
|
-
|
|
17
|
+
save_parsing_task,
|
|
18
18
|
)
|
|
19
19
|
from dkist_processing_cryonirsp.tests.local_trial_workflows.local_trial_helpers import (
|
|
20
20
|
tag_inputs_task,
|
|
@@ -8,6 +8,8 @@ from random import randint
|
|
|
8
8
|
import asdf
|
|
9
9
|
from astropy.io import fits
|
|
10
10
|
from dkist_header_validator import spec122_validator
|
|
11
|
+
from dkist_processing_common.codecs.basemodel import basemodel_encoder
|
|
12
|
+
from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
|
|
11
13
|
from dkist_processing_common.models.task_name import TaskName
|
|
12
14
|
from dkist_processing_common.tasks import TransferTrialData
|
|
13
15
|
from dkist_processing_common.tasks import WorkflowTaskBase
|
|
@@ -17,22 +19,22 @@ from dkist_service_configuration.logging import logger
|
|
|
17
19
|
from dkist_processing_cryonirsp.models.tags import CryonirspTag
|
|
18
20
|
from dkist_processing_cryonirsp.models.task_name import CryonirspTaskName
|
|
19
21
|
from dkist_processing_cryonirsp.tasks.cryonirsp_base import CryonirspTaskBase
|
|
22
|
+
from dkist_processing_cryonirsp.tests.conftest import FileParameter
|
|
20
23
|
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
21
24
|
|
|
22
|
-
|
|
23
25
|
# These are the workflow versions of the polyfit coefficient parameters
|
|
24
26
|
WORKFLOW_LINEARIZATION_POLYFIT_COEFFS_CI = [
|
|
25
|
-
1.
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
-
|
|
27
|
+
1.10505215e00,
|
|
28
|
+
-7.50178863e-06,
|
|
29
|
+
1.43050375e-10,
|
|
30
|
+
-1.62898848e-15,
|
|
29
31
|
]
|
|
30
32
|
|
|
31
33
|
WORKFLOW_LINEARIZATION_POLYFIT_COEFFS_SP = [
|
|
32
|
-
1.
|
|
33
|
-
-1.
|
|
34
|
-
2.
|
|
35
|
-
-
|
|
34
|
+
1.14636662,
|
|
35
|
+
-1.05173302e-05,
|
|
36
|
+
2.18059789e-10,
|
|
37
|
+
-3.00894653e-15,
|
|
36
38
|
]
|
|
37
39
|
|
|
38
40
|
|
|
@@ -356,14 +358,14 @@ class SaveSolarCal(SaveTaskTags):
|
|
|
356
358
|
]
|
|
357
359
|
|
|
358
360
|
|
|
359
|
-
class
|
|
361
|
+
class SaveWavelengthCorrection(SaveTaskTags):
|
|
360
362
|
@property
|
|
361
363
|
def task_str(self) -> str:
|
|
362
364
|
return CryonirspTaskName.spectral_fit.value
|
|
363
365
|
|
|
364
366
|
@property
|
|
365
367
|
def relative_save_file(self) -> str:
|
|
366
|
-
return "
|
|
368
|
+
return "sp_wavelength_correction.asdf"
|
|
367
369
|
|
|
368
370
|
@property
|
|
369
371
|
def tag_lists_to_save(self) -> list[list[str]]:
|
|
@@ -381,10 +383,10 @@ class LoadSolarCal(LoadTaskTags):
|
|
|
381
383
|
return "solar_cal.asdf"
|
|
382
384
|
|
|
383
385
|
|
|
384
|
-
class
|
|
386
|
+
class LoadWavelengthCorrection(LoadTaskTags):
|
|
385
387
|
@property
|
|
386
388
|
def relative_save_file(self) -> str:
|
|
387
|
-
return "
|
|
389
|
+
return "sp_wavelength_correction.asdf"
|
|
388
390
|
|
|
389
391
|
|
|
390
392
|
class SaveInstPolCal(SaveTaskTags):
|
|
@@ -424,13 +426,13 @@ class LoadInstPolCal(LoadTaskTags):
|
|
|
424
426
|
def translate_122_to_214_task(suffix: str):
|
|
425
427
|
class Translate122To214L0(WorkflowTaskBase):
|
|
426
428
|
def run(self) -> None:
|
|
427
|
-
raw_dir = Path(self.scratch.scratch_base_path) / f"
|
|
429
|
+
raw_dir = Path(self.scratch.scratch_base_path) / f"CRYONIRSP{self.recipe_run_id:03n}"
|
|
428
430
|
if not os.path.exists(self.scratch.workflow_base_path):
|
|
429
431
|
os.makedirs(self.scratch.workflow_base_path)
|
|
430
432
|
|
|
431
433
|
if not raw_dir.exists():
|
|
432
434
|
raise FileNotFoundError(
|
|
433
|
-
f"Expected to find a raw
|
|
435
|
+
f"Expected to find a raw CRYONIRSP{self.recipe_run_id:03n} folder in {self.scratch.scratch_base_path}"
|
|
434
436
|
)
|
|
435
437
|
|
|
436
438
|
for file in raw_dir.glob(f"*.{suffix}"):
|
|
@@ -465,26 +467,39 @@ def translate_122_to_214_task(suffix: str):
|
|
|
465
467
|
def create_input_dataset_parameter_document(param_path: Path):
|
|
466
468
|
class CreateInputDatasetParameterDocument(WorkflowTaskBase):
|
|
467
469
|
def run(self) -> None:
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
470
|
+
relative_path = "input_dataset_parameters.json"
|
|
471
|
+
self.write(
|
|
472
|
+
data=InputDatasetPartDocumentList(
|
|
473
|
+
doc_list=self.input_dataset_document_simple_parameters_part
|
|
474
|
+
),
|
|
475
|
+
relative_path=relative_path,
|
|
476
|
+
tags=CryonirspTag.input_dataset_parameters(),
|
|
477
|
+
encoder=basemodel_encoder,
|
|
478
|
+
overwrite=True,
|
|
479
|
+
)
|
|
480
|
+
logger.info(f"Wrote input dataset parameter doc to {relative_path}")
|
|
481
|
+
self.copy_and_tag_parameter_files(param_path=param_path)
|
|
482
|
+
logger.info(f"Copied input dataset parameter files from {param_path}")
|
|
473
483
|
|
|
474
484
|
@property
|
|
475
|
-
def
|
|
476
|
-
|
|
477
|
-
value_id = randint(1000, 2000)
|
|
478
|
-
param_class = cryonirsp_testing_parameters_factory(
|
|
479
|
-
param_path=param_path, create_files=False
|
|
480
|
-
)
|
|
485
|
+
def parameter_dict(self):
|
|
486
|
+
param_class = cryonirsp_testing_parameters_factory(task=self, create_files=False)
|
|
481
487
|
params = asdict(
|
|
482
488
|
param_class(
|
|
483
489
|
cryonirsp_linearization_polyfit_coeffs_ci=WORKFLOW_LINEARIZATION_POLYFIT_COEFFS_CI,
|
|
484
490
|
cryonirsp_linearization_polyfit_coeffs_sp=WORKFLOW_LINEARIZATION_POLYFIT_COEFFS_SP,
|
|
485
491
|
)
|
|
486
492
|
)
|
|
493
|
+
return params
|
|
494
|
+
|
|
495
|
+
@property
|
|
496
|
+
def input_dataset_document_simple_parameters_part(self):
|
|
497
|
+
parameters_list = []
|
|
498
|
+
value_id = randint(1000, 2000)
|
|
499
|
+
params = self.parameter_dict
|
|
487
500
|
for pn, pv in params.items():
|
|
501
|
+
if isinstance(pv, FileParameter):
|
|
502
|
+
pv = pv.model_dump()
|
|
488
503
|
values = [
|
|
489
504
|
{
|
|
490
505
|
"parameterValueId": value_id,
|
|
@@ -497,6 +512,22 @@ def create_input_dataset_parameter_document(param_path: Path):
|
|
|
497
512
|
|
|
498
513
|
return parameters_list
|
|
499
514
|
|
|
515
|
+
def copy_and_tag_parameter_files(self, param_path=param_path):
|
|
516
|
+
# Copy parameter files from param_path to a place where they can be tagged
|
|
517
|
+
params = self.parameter_dict
|
|
518
|
+
destination_dir = Path(self.scratch.workflow_base_path) / "parameters"
|
|
519
|
+
destination_dir.mkdir(parents=True, exist_ok=True)
|
|
520
|
+
for pn, pv in params.items():
|
|
521
|
+
if isinstance(pv, FileParameter):
|
|
522
|
+
file_path = next(param_path.rglob(pv.file_pointer.object_key))
|
|
523
|
+
if file_path.parent != destination_dir:
|
|
524
|
+
shutil.copy(file_path, destination_dir)
|
|
525
|
+
logger.info(
|
|
526
|
+
f"Copied parameter file for '{pn}' to {destination_dir / file_path}"
|
|
527
|
+
)
|
|
528
|
+
file_path = next(destination_dir.rglob(pv.file_pointer.object_key))
|
|
529
|
+
self.tag(path=file_path, tags=pv.file_pointer.tag)
|
|
530
|
+
|
|
500
531
|
return CreateInputDatasetParameterDocument
|
|
501
532
|
|
|
502
533
|
|
|
@@ -2,7 +2,6 @@ import numpy as np
|
|
|
2
2
|
import pytest
|
|
3
3
|
from dkist_processing_common._util.scratch import WorkflowFileSystem
|
|
4
4
|
from dkist_processing_common.codecs.fits import fits_hdulist_encoder
|
|
5
|
-
from dkist_processing_common.tests.conftest import FakeGQLClient
|
|
6
5
|
|
|
7
6
|
from dkist_processing_cryonirsp.models.constants import CryonirspBudName
|
|
8
7
|
from dkist_processing_cryonirsp.models.tags import CryonirspTag
|
|
@@ -68,9 +67,9 @@ def assemble_movie_task_with_tagged_movie_frames(
|
|
|
68
67
|
task._purge()
|
|
69
68
|
|
|
70
69
|
|
|
71
|
-
def test_assemble_movie(assemble_movie_task_with_tagged_movie_frames, mocker):
|
|
70
|
+
def test_assemble_movie(assemble_movie_task_with_tagged_movie_frames, mocker, fake_gql_client):
|
|
72
71
|
mocker.patch(
|
|
73
|
-
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=
|
|
72
|
+
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
|
|
74
73
|
)
|
|
75
74
|
task, _, _ = assemble_movie_task_with_tagged_movie_frames
|
|
76
75
|
task()
|
|
@@ -134,9 +133,9 @@ def assemble_sp_task_with_tagged_movie_frames(tmp_path, recipe_run_id, init_cryo
|
|
|
134
133
|
task._purge()
|
|
135
134
|
|
|
136
135
|
|
|
137
|
-
def test_assemble_sp_movie(assemble_sp_task_with_tagged_movie_frames, mocker):
|
|
136
|
+
def test_assemble_sp_movie(assemble_sp_task_with_tagged_movie_frames, mocker, fake_gql_client):
|
|
138
137
|
mocker.patch(
|
|
139
|
-
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=
|
|
138
|
+
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
|
|
140
139
|
)
|
|
141
140
|
assemble_sp_task_with_tagged_movie_frames()
|
|
142
141
|
movie_file = list(assemble_sp_task_with_tagged_movie_frames.read(tags=[CryonirspTag.movie()]))
|
|
@@ -474,7 +474,11 @@ def test_assemble_quality_data(
|
|
|
474
474
|
# Then
|
|
475
475
|
# each quality_data file is a list - this will combine the elements of multiple lists into a single list
|
|
476
476
|
quality_data = list(
|
|
477
|
-
chain.from_iterable(
|
|
477
|
+
chain.from_iterable(
|
|
478
|
+
task.read(
|
|
479
|
+
tags=[CryonirspTag.output(), CryonirspTag.quality_data()], decoder=json_decoder
|
|
480
|
+
)
|
|
481
|
+
)
|
|
478
482
|
)
|
|
479
483
|
# 19 with polcal
|
|
480
484
|
assert len(quality_data) == 19
|
|
@@ -6,13 +6,12 @@ from astropy.io import fits
|
|
|
6
6
|
from dkist_header_validator import spec122_validator
|
|
7
7
|
from dkist_processing_common._util.scratch import WorkflowFileSystem
|
|
8
8
|
from dkist_processing_common.codecs.fits import fits_hdulist_encoder
|
|
9
|
-
from dkist_processing_common.tests.conftest import FakeGQLClient
|
|
10
9
|
from dkist_service_configuration.logging import logger
|
|
11
10
|
|
|
12
11
|
from dkist_processing_cryonirsp.models.tags import CryonirspTag
|
|
13
12
|
from dkist_processing_cryonirsp.tasks.bad_pixel_map import BadPixelMapCalibration
|
|
14
|
-
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
15
13
|
from dkist_processing_cryonirsp.tests.conftest import CryonirspConstantsDb
|
|
14
|
+
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
16
15
|
from dkist_processing_cryonirsp.tests.conftest import generate_fits_frame
|
|
17
16
|
from dkist_processing_cryonirsp.tests.header_models import CryonirspHeadersValidCISolarGainFrames
|
|
18
17
|
|
|
@@ -43,7 +42,7 @@ def compute_bad_pixel_map_task(
|
|
|
43
42
|
task.scratch = WorkflowFileSystem(
|
|
44
43
|
scratch_base_path=tmp_path, recipe_run_id=recipe_run_id
|
|
45
44
|
)
|
|
46
|
-
param_class = cryonirsp_testing_parameters_factory(
|
|
45
|
+
param_class = cryonirsp_testing_parameters_factory(task)
|
|
47
46
|
assign_input_dataset_doc_to_task(task, param_class())
|
|
48
47
|
start_time = datetime.now()
|
|
49
48
|
ds = CryonirspHeadersValidCISolarGainFrames(
|
|
@@ -91,14 +90,14 @@ def compute_bad_pixel_map_task(
|
|
|
91
90
|
task._purge()
|
|
92
91
|
|
|
93
92
|
|
|
94
|
-
def test_compute_bad_pixel_map_task(compute_bad_pixel_map_task, mocker):
|
|
93
|
+
def test_compute_bad_pixel_map_task(compute_bad_pixel_map_task, mocker, fake_gql_client):
|
|
95
94
|
"""
|
|
96
95
|
Given: An BadPixelMapCalibration task
|
|
97
96
|
When: Calling the task instance with known input data
|
|
98
97
|
Then: The correct beam boundary values are created and saved as intermediate files
|
|
99
98
|
"""
|
|
100
99
|
mocker.patch(
|
|
101
|
-
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=
|
|
100
|
+
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
|
|
102
101
|
)
|
|
103
102
|
# Given
|
|
104
103
|
task, num_zeros, num_hot = compute_bad_pixel_map_task
|
|
@@ -7,12 +7,11 @@ from dkist_header_validator import spec122_validator
|
|
|
7
7
|
from dkist_processing_common._util.scratch import WorkflowFileSystem
|
|
8
8
|
from dkist_processing_common.codecs.fits import fits_array_encoder
|
|
9
9
|
from dkist_processing_common.codecs.fits import fits_hdulist_encoder
|
|
10
|
-
from dkist_processing_common.tests.conftest import FakeGQLClient
|
|
11
10
|
|
|
12
11
|
from dkist_processing_cryonirsp.models.tags import CryonirspTag
|
|
13
12
|
from dkist_processing_cryonirsp.tasks.ci_beam_boundaries import CIBeamBoundariesCalibration
|
|
14
|
-
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
15
13
|
from dkist_processing_cryonirsp.tests.conftest import CryonirspConstantsDb
|
|
14
|
+
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
16
15
|
from dkist_processing_cryonirsp.tests.conftest import generate_fits_frame
|
|
17
16
|
from dkist_processing_cryonirsp.tests.header_models import CryonirspHeadersValidCISolarGainFrames
|
|
18
17
|
|
|
@@ -38,7 +37,7 @@ def compute_beam_boundaries_task(
|
|
|
38
37
|
task.scratch = WorkflowFileSystem(
|
|
39
38
|
scratch_base_path=tmp_path, recipe_run_id=recipe_run_id
|
|
40
39
|
)
|
|
41
|
-
param_class = cryonirsp_testing_parameters_factory(
|
|
40
|
+
param_class = cryonirsp_testing_parameters_factory(task)
|
|
42
41
|
assign_input_dataset_doc_to_task(task, param_class())
|
|
43
42
|
# Create fake bad pixel map
|
|
44
43
|
task.write(
|
|
@@ -85,14 +84,14 @@ def compute_beam_boundaries_task(
|
|
|
85
84
|
task._purge()
|
|
86
85
|
|
|
87
86
|
|
|
88
|
-
def test_compute_beam_boundaries_task(compute_beam_boundaries_task, mocker):
|
|
87
|
+
def test_compute_beam_boundaries_task(compute_beam_boundaries_task, mocker, fake_gql_client):
|
|
89
88
|
"""
|
|
90
89
|
Given: A CIBeamBoundariesCalibration task
|
|
91
90
|
When: Calling the task instance with known input data
|
|
92
91
|
Then: The correct beam boundary values are created and saved as intermediate files
|
|
93
92
|
"""
|
|
94
93
|
mocker.patch(
|
|
95
|
-
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=
|
|
94
|
+
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
|
|
96
95
|
)
|
|
97
96
|
# Given
|
|
98
97
|
task, arm_id = compute_beam_boundaries_task
|
|
@@ -11,15 +11,14 @@ from dkist_header_validator import spec122_validator
|
|
|
11
11
|
from dkist_processing_common._util.scratch import WorkflowFileSystem
|
|
12
12
|
from dkist_processing_common.codecs.fits import fits_array_encoder
|
|
13
13
|
from dkist_processing_common.codecs.fits import fits_hdulist_encoder
|
|
14
|
-
from dkist_processing_common.tests.conftest import FakeGQLClient
|
|
15
14
|
|
|
16
15
|
from dkist_processing_cryonirsp.models.exposure_conditions import AllowableOpticalDensityFilterNames
|
|
17
16
|
from dkist_processing_cryonirsp.models.exposure_conditions import ExposureConditions
|
|
18
17
|
from dkist_processing_cryonirsp.models.tags import CryonirspStemName
|
|
19
18
|
from dkist_processing_cryonirsp.models.tags import CryonirspTag
|
|
20
19
|
from dkist_processing_cryonirsp.tasks.ci_science import CIScienceCalibration
|
|
21
|
-
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
22
20
|
from dkist_processing_cryonirsp.tests.conftest import CryonirspConstantsDb
|
|
21
|
+
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
23
22
|
from dkist_processing_cryonirsp.tests.conftest import generate_fits_frame
|
|
24
23
|
from dkist_processing_cryonirsp.tests.header_models import CryonirspHeadersValidObserveFrames
|
|
25
24
|
|
|
@@ -70,7 +69,7 @@ def ci_science_calibration_task(
|
|
|
70
69
|
scratch_base_path=tmp_path, recipe_run_id=recipe_run_id
|
|
71
70
|
)
|
|
72
71
|
|
|
73
|
-
param_class = cryonirsp_testing_parameters_factory(
|
|
72
|
+
param_class = cryonirsp_testing_parameters_factory(task)
|
|
74
73
|
assign_input_dataset_doc_to_task(task, param_class())
|
|
75
74
|
|
|
76
75
|
# Need a beam boundary file
|
|
@@ -228,7 +227,7 @@ def ci_compressed_headers_with_dates(
|
|
|
228
227
|
return comp_headers, start_time, exp_time, time_delta
|
|
229
228
|
|
|
230
229
|
|
|
231
|
-
def test_ci_science_calibration_task(ci_science_calibration_task, mocker):
|
|
230
|
+
def test_ci_science_calibration_task(ci_science_calibration_task, mocker, fake_gql_client):
|
|
232
231
|
"""
|
|
233
232
|
Given: A CIScienceCalibration task
|
|
234
233
|
When: Calling the task instance
|
|
@@ -236,7 +235,7 @@ def test_ci_science_calibration_task(ci_science_calibration_task, mocker):
|
|
|
236
235
|
"""
|
|
237
236
|
|
|
238
237
|
mocker.patch(
|
|
239
|
-
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=
|
|
238
|
+
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
|
|
240
239
|
)
|
|
241
240
|
|
|
242
241
|
# When
|
|
@@ -4,13 +4,11 @@ import numpy as np
|
|
|
4
4
|
import pytest
|
|
5
5
|
from dkist_processing_common._util.scratch import WorkflowFileSystem
|
|
6
6
|
from dkist_processing_common.tasks import WorkflowTaskBase
|
|
7
|
-
from dkist_processing_common.tasks.mixin.input_dataset import InputDatasetMixin
|
|
8
|
-
from dkist_processing_common.tests.conftest import FakeGQLClient
|
|
9
7
|
|
|
10
8
|
from dkist_processing_cryonirsp.models.constants import CryonirspConstants
|
|
11
9
|
from dkist_processing_cryonirsp.tasks.mixin.corrections import CorrectionsMixin
|
|
12
|
-
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
13
10
|
from dkist_processing_cryonirsp.tests.conftest import CryonirspConstantsDb
|
|
11
|
+
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
14
12
|
|
|
15
13
|
base_bad_pixel_map = np.zeros(shape=(10, 10))
|
|
16
14
|
|
|
@@ -21,7 +19,7 @@ column_error_bad_pixel_map = base_bad_pixel_map.copy()
|
|
|
21
19
|
column_error_bad_pixel_map[:, 6] = 1
|
|
22
20
|
|
|
23
21
|
|
|
24
|
-
class BadPixelMapTask(WorkflowTaskBase, CorrectionsMixin
|
|
22
|
+
class BadPixelMapTask(WorkflowTaskBase, CorrectionsMixin):
|
|
25
23
|
constants: CryonirspConstants
|
|
26
24
|
|
|
27
25
|
@property
|
|
@@ -39,11 +37,12 @@ def bad_pixel_mask_task(
|
|
|
39
37
|
recipe_run_id,
|
|
40
38
|
assign_input_dataset_doc_to_task,
|
|
41
39
|
mocker,
|
|
40
|
+
fake_gql_client,
|
|
42
41
|
request,
|
|
43
42
|
init_cryonirsp_constants_db,
|
|
44
43
|
):
|
|
45
44
|
mocker.patch(
|
|
46
|
-
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=
|
|
45
|
+
"dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
|
|
47
46
|
)
|
|
48
47
|
constants_db = CryonirspConstantsDb(
|
|
49
48
|
ARM_ID=request.param,
|
|
@@ -58,7 +57,7 @@ def bad_pixel_mask_task(
|
|
|
58
57
|
task.scratch = WorkflowFileSystem(
|
|
59
58
|
scratch_base_path=tmp_path, recipe_run_id=recipe_run_id
|
|
60
59
|
)
|
|
61
|
-
param_class = cryonirsp_testing_parameters_factory(
|
|
60
|
+
param_class = cryonirsp_testing_parameters_factory(task)
|
|
62
61
|
assign_input_dataset_doc_to_task(task, param_class())
|
|
63
62
|
yield task
|
|
64
63
|
finally:
|
|
@@ -8,8 +8,8 @@ from dkist_processing_common.codecs.fits import fits_hdu_decoder
|
|
|
8
8
|
from dkist_processing_cryonirsp.codecs.fits import cryo_fits_array_decoder
|
|
9
9
|
from dkist_processing_cryonirsp.models.tags import CryonirspTag
|
|
10
10
|
from dkist_processing_cryonirsp.tasks.cryonirsp_base import CryonirspTaskBase
|
|
11
|
-
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
12
11
|
from dkist_processing_cryonirsp.tests.conftest import CryonirspConstantsDb
|
|
12
|
+
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
13
13
|
|
|
14
14
|
NUM_BEAMS = 2
|
|
15
15
|
NUM_MODSTATES = 8
|
|
@@ -23,8 +23,7 @@ def cryo_science_task(
|
|
|
23
23
|
tmp_path, recipe_run_id, assign_input_dataset_doc_to_task, init_cryonirsp_constants_db
|
|
24
24
|
):
|
|
25
25
|
class Task(CryonirspTaskBase):
|
|
26
|
-
def run(self):
|
|
27
|
-
...
|
|
26
|
+
def run(self): ...
|
|
28
27
|
|
|
29
28
|
constants_db = CryonirspConstantsDb(
|
|
30
29
|
NUM_MODSTATES=NUM_MODSTATES,
|
|
@@ -42,7 +41,7 @@ def cryo_science_task(
|
|
|
42
41
|
task.scratch = WorkflowFileSystem(
|
|
43
42
|
scratch_base_path=tmp_path, recipe_run_id=recipe_run_id
|
|
44
43
|
)
|
|
45
|
-
param_class = cryonirsp_testing_parameters_factory(
|
|
44
|
+
param_class = cryonirsp_testing_parameters_factory(task)
|
|
46
45
|
assign_input_dataset_doc_to_task(task, param_class())
|
|
47
46
|
yield task
|
|
48
47
|
finally:
|
|
@@ -153,8 +152,7 @@ def cryo_science_task_with_tagged_intermediates(
|
|
|
153
152
|
recipe_run_id, tmpdir_factory, init_cryonirsp_constants_db
|
|
154
153
|
):
|
|
155
154
|
class Task(CryonirspTaskBase):
|
|
156
|
-
def run(self):
|
|
157
|
-
...
|
|
155
|
+
def run(self): ...
|
|
158
156
|
|
|
159
157
|
init_cryonirsp_constants_db(recipe_run_id, CryonirspConstantsDb())
|
|
160
158
|
with Task(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from dataclasses import asdict
|
|
2
2
|
from dataclasses import dataclass
|
|
3
3
|
|
|
4
|
+
import astropy.units as u
|
|
4
5
|
import pytest
|
|
5
6
|
|
|
6
7
|
from dkist_processing_cryonirsp.models.exposure_conditions import AllowableOpticalDensityFilterNames
|
|
@@ -28,6 +29,8 @@ def testing_constants(polarimetric):
|
|
|
28
29
|
ExposureConditions(0.01, AllowableOpticalDensityFilterNames.OPEN.value),
|
|
29
30
|
)
|
|
30
31
|
modulator_spin_mode: str = "Continuous" if polarimetric else "Off"
|
|
32
|
+
retarder_name: str = "SiO2 OC"
|
|
33
|
+
grating_constant: float = 6.28
|
|
31
34
|
# We don't need all the common ones, but let's put one just to check
|
|
32
35
|
instrument: str = "CHECK_OUT_THIS_INSTRUMENT"
|
|
33
36
|
arm_id: str = "SP"
|
|
@@ -46,8 +49,7 @@ def cryo_science_task_with_constants(
|
|
|
46
49
|
recipe_run_id, expected_constant_dict, init_cryonirsp_constants_db
|
|
47
50
|
):
|
|
48
51
|
class Task(CryonirspTaskBase):
|
|
49
|
-
def run(self):
|
|
50
|
-
...
|
|
52
|
+
def run(self): ...
|
|
51
53
|
|
|
52
54
|
init_cryonirsp_constants_db(recipe_run_id, expected_constant_dict)
|
|
53
55
|
task = Task(
|
|
@@ -68,9 +70,11 @@ def cryo_science_task_with_constants(
|
|
|
68
70
|
def test_cryo_constants(cryo_science_task_with_constants, expected_constant_dict, polarimetric):
|
|
69
71
|
task = cryo_science_task_with_constants
|
|
70
72
|
for k, v in expected_constant_dict.items():
|
|
71
|
-
if k.lower()
|
|
73
|
+
if k.lower() in ["modulator_spin_mode", "retarder_name", "grating_constant"]:
|
|
72
74
|
continue
|
|
73
75
|
if type(v) is tuple:
|
|
74
76
|
v = list(v)
|
|
75
77
|
assert getattr(task.constants, k.lower()) == v
|
|
76
78
|
assert task.constants.correct_for_polarization == polarimetric
|
|
79
|
+
assert task.constants.pac_init_set == "OCCal_VIS"
|
|
80
|
+
assert task.constants.grating_constant == expected_constant_dict["GRATING_CONSTANT"] / u.mm
|