dkist-processing-dlnirsp 1.4.6__tar.gz → 1.4.8rc2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/CHANGELOG.rst +15 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/PKG-INFO +11 -12
- dkist_processing_dlnirsp-1.4.8rc2/changelog/178.misc.rst +2 -0
- dkist_processing_dlnirsp-1.4.8rc2/dkist_processing_dlnirsp/tasks/quality_metrics.py +52 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_quality.py +0 -87
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp.egg-info/PKG-INFO +11 -12
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp.egg-info/SOURCES.txt +1 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp.egg-info/requires.txt +10 -11
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/pyproject.toml +12 -13
- dkist_processing_dlnirsp-1.4.6/dkist_processing_dlnirsp/tasks/quality_metrics.py +0 -173
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/.gitignore +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/.pre-commit-config.yaml +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/.readthedocs.yml +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/.snyk +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/README.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/SCIENCE_CHANGELOG.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/changelog/.gitempty +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/__init__.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/config.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/dev_scripts/__init__.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/dev_scripts/test_slitbeam_group_assignment.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/models/__init__.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/models/constants.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/models/fits_access.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/models/parameters.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/models/tags.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/models/task_name.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/parsers/__init__.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/parsers/dlnirsp_l0_fits_access.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/parsers/dlnirsp_l1_fits_acess.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/parsers/mosaic.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/parsers/task.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/parsers/time.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/parsers/wcs_corrections.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/__init__.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/bad_pixel_map.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/dark.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/dlnirsp_base.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/geometric.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/ifu_drift.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/instrument_polarization.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/l1_output_data.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/lamp.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/linearity_correction.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/mixin/__init__.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/mixin/corrections.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/mixin/group_id.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/movie.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/parse.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/polcal_as_science.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/science.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/solar.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/wavelength_calibration.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/write_dataset_extras.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tasks/write_l1.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/__init__.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/conftest.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/local_trial_workflows/__init__.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/local_trial_workflows/l0_linearize_only.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/local_trial_workflows/l0_polcals_as_science.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/local_trial_workflows/l0_solar_gain_as_science.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/local_trial_workflows/l0_to_l1.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/local_trial_workflows/local_trial_dev_mockers.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/local_trial_workflows/local_trial_helpers.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/local_trial_workflows/translate_files.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_assemble_quality.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_bad_pixel_map.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_corrections.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_dark.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_dlnirsp_base.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_dlnirsp_constants.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_dlnirsp_fits_access.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_geometric.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_group_id.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_ifu_drift.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_instrument_polarization_calibration.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_lamp.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_linearity_correction.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_movie.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_parameters.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_parse.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_polcal_as_science.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_science.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_solar.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_trial_create_quality_report.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_wavelength_calibration.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_workflows.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_write_dataset_extras.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/tests/test_write_l1.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/workflows/__init__.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/workflows/l0_processing.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp/workflows/trial_workflow.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp.egg-info/dependency_links.txt +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp.egg-info/entry_points.txt +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/dkist_processing_dlnirsp.egg-info/top_level.txt +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/Makefile +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/bad_pixel_calibration.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/changelog.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/conf.py +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/dataset_extras.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/gain.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/geometric.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/ifu_drift.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/index.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/l0_to_l1_dlnirsp.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/l0_to_l1_dlnirsp_full-trial.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/landing_page.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/linearization.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/make.bat +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/polarization_calibration.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/requirements_table.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/science_calibration.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/scientific_changelog.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/wavelength_calibration.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/licenses/LICENSE.rst +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/science_towncrier.sh +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/setup.cfg +0 -0
- {dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/towncrier_science.toml +0 -0
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
v1.4.7 (2026-04-20)
|
|
2
|
+
===================
|
|
3
|
+
|
|
4
|
+
Features
|
|
5
|
+
--------
|
|
6
|
+
|
|
7
|
+
- Remove `DlnirspL1QualityMetrics` workflow task. (`#176 <https://bitbucket.org/dkistdc/dkist-processing-dlnirsp/pull-requests/176>`__)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Misc
|
|
11
|
+
----
|
|
12
|
+
|
|
13
|
+
- Update dkist-processing-common to 13.0.5, which removes 4 unused quality metric codes: RANGE, NOISE, SENSITIVITY, HISTORICAL. (`#176 <https://bitbucket.org/dkistdc/dkist-processing-dlnirsp/pull-requests/176>`__)
|
|
14
|
+
|
|
15
|
+
|
|
1
16
|
v1.4.6 (2026-04-17)
|
|
2
17
|
===================
|
|
3
18
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-dlnirsp
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.8rc2
|
|
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
|
|
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/x-rst
|
|
16
|
-
Requires-Dist: dkist-processing-common==13.0.
|
|
16
|
+
Requires-Dist: dkist-processing-common==13.0.6rc2
|
|
17
17
|
Requires-Dist: dkist-processing-math==2.2.2
|
|
18
18
|
Requires-Dist: dkist-processing-pac==3.1.1
|
|
19
19
|
Requires-Dist: dkist-header-validator==5.3.1
|
|
@@ -107,14 +107,14 @@ Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
|
|
|
107
107
|
Requires-Dist: asgiref==3.11.1; extra == "frozen"
|
|
108
108
|
Requires-Dist: asteval==1.0.8; extra == "frozen"
|
|
109
109
|
Requires-Dist: astropy==7.0.2; extra == "frozen"
|
|
110
|
-
Requires-Dist: astropy-iers-data==0.2026.4.
|
|
110
|
+
Requires-Dist: astropy-iers-data==0.2026.4.20.0.58.15; extra == "frozen"
|
|
111
111
|
Requires-Dist: astropy_healpix==1.1.3; extra == "frozen"
|
|
112
112
|
Requires-Dist: asyncpg==0.31.0; extra == "frozen"
|
|
113
113
|
Requires-Dist: attrs==26.1.0; extra == "frozen"
|
|
114
114
|
Requires-Dist: babel==2.18.0; extra == "frozen"
|
|
115
115
|
Requires-Dist: billiard==4.2.4; extra == "frozen"
|
|
116
|
-
Requires-Dist: boto3==1.42.
|
|
117
|
-
Requires-Dist: botocore==1.42.
|
|
116
|
+
Requires-Dist: boto3==1.42.92; extra == "frozen"
|
|
117
|
+
Requires-Dist: botocore==1.42.92; extra == "frozen"
|
|
118
118
|
Requires-Dist: cadwyn==5.4.6; extra == "frozen"
|
|
119
119
|
Requires-Dist: celery==5.6.3; extra == "frozen"
|
|
120
120
|
Requires-Dist: certifi==2026.2.25; extra == "frozen"
|
|
@@ -131,15 +131,14 @@ Requires-Dist: cron_descriptor==2.0.8; extra == "frozen"
|
|
|
131
131
|
Requires-Dist: croniter==6.2.2; extra == "frozen"
|
|
132
132
|
Requires-Dist: cryptography==46.0.7; extra == "frozen"
|
|
133
133
|
Requires-Dist: cycler==0.12.1; extra == "frozen"
|
|
134
|
-
Requires-Dist: dacite==1.9.2; extra == "frozen"
|
|
135
134
|
Requires-Dist: dask==2026.3.0; extra == "frozen"
|
|
136
135
|
Requires-Dist: dask-image==2025.11.0; extra == "frozen"
|
|
137
136
|
Requires-Dist: decorator==5.2.1; extra == "frozen"
|
|
138
137
|
Requires-Dist: dill==0.4.1; extra == "frozen"
|
|
139
138
|
Requires-Dist: dkist-header-validator==5.3.1; extra == "frozen"
|
|
140
|
-
Requires-Dist: dkist-processing-common==13.0.
|
|
139
|
+
Requires-Dist: dkist-processing-common==13.0.6rc2; extra == "frozen"
|
|
141
140
|
Requires-Dist: dkist-processing-core==7.2.1; extra == "frozen"
|
|
142
|
-
Requires-Dist: dkist-processing-dlnirsp==1.4.
|
|
141
|
+
Requires-Dist: dkist-processing-dlnirsp==1.4.8rc2; extra == "frozen"
|
|
143
142
|
Requires-Dist: dkist-processing-math==2.2.2; extra == "frozen"
|
|
144
143
|
Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
|
|
145
144
|
Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
|
|
@@ -158,7 +157,7 @@ Requires-Dist: fsspec==2026.3.0; extra == "frozen"
|
|
|
158
157
|
Requires-Dist: globus-sdk==4.5.0; extra == "frozen"
|
|
159
158
|
Requires-Dist: google-crc32c==1.8.0; extra == "frozen"
|
|
160
159
|
Requires-Dist: googleapis-common-protos==1.74.0; extra == "frozen"
|
|
161
|
-
Requires-Dist: gqlclient==
|
|
160
|
+
Requires-Dist: gqlclient==2.0.0; extra == "frozen"
|
|
162
161
|
Requires-Dist: greenback==1.3.0; extra == "frozen"
|
|
163
162
|
Requires-Dist: greenlet==3.4.0; extra == "frozen"
|
|
164
163
|
Requires-Dist: grpcio==1.80.0; extra == "frozen"
|
|
@@ -247,9 +246,9 @@ Requires-Dist: psutil==7.2.2; extra == "frozen"
|
|
|
247
246
|
Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
|
|
248
247
|
Requires-Dist: pyarrow==23.0.1; extra == "frozen"
|
|
249
248
|
Requires-Dist: pycparser==3.0; extra == "frozen"
|
|
250
|
-
Requires-Dist: pydantic==2.13.
|
|
251
|
-
Requires-Dist: pydantic-settings==2.
|
|
252
|
-
Requires-Dist: pydantic_core==2.46.
|
|
249
|
+
Requires-Dist: pydantic==2.13.3; extra == "frozen"
|
|
250
|
+
Requires-Dist: pydantic-settings==2.14.0; extra == "frozen"
|
|
251
|
+
Requires-Dist: pydantic_core==2.46.3; extra == "frozen"
|
|
253
252
|
Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
|
|
254
253
|
Requires-Dist: pygtrie==2.5.0; extra == "frozen"
|
|
255
254
|
Requires-Dist: pyparsing==3.3.2; extra == "frozen"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""Tasks for computing dataset-wide quality metrics."""
|
|
2
|
+
|
|
3
|
+
from typing import Iterable
|
|
4
|
+
|
|
5
|
+
from dkist_processing_common.tasks import QualityL0Metrics
|
|
6
|
+
|
|
7
|
+
from dkist_processing_dlnirsp.models.constants import DlnirspConstants
|
|
8
|
+
from dkist_processing_dlnirsp.models.tags import DlnirspTag
|
|
9
|
+
|
|
10
|
+
__all__ = ["DlnirspL0QualityMetrics"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DlnirspL0QualityMetrics(QualityL0Metrics):
|
|
14
|
+
"""
|
|
15
|
+
Task class for collection of DLNIRSP L0 specific quality metrics.
|
|
16
|
+
|
|
17
|
+
Parameters
|
|
18
|
+
----------
|
|
19
|
+
recipe_run_id : int
|
|
20
|
+
id of the recipe run used to identify the workflow run this task is part of
|
|
21
|
+
workflow_name : str
|
|
22
|
+
name of the workflow to which this instance of the task belongs
|
|
23
|
+
workflow_version : str
|
|
24
|
+
version of the workflow to which this instance of the task belongs
|
|
25
|
+
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def constants_model_class(self):
|
|
30
|
+
"""Class for DLNIRSP constants."""
|
|
31
|
+
return DlnirspConstants
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def raw_frame_tag(self) -> str:
|
|
35
|
+
"""
|
|
36
|
+
Define tag corresponding to L0 data.
|
|
37
|
+
|
|
38
|
+
For DL it's LINEARIZED.
|
|
39
|
+
"""
|
|
40
|
+
return DlnirspTag.linearized()
|
|
41
|
+
|
|
42
|
+
@property
|
|
43
|
+
def modstate_list(self) -> Iterable[int] | None:
|
|
44
|
+
"""
|
|
45
|
+
Define the list of modstates over which to compute L0 quality metrics.
|
|
46
|
+
|
|
47
|
+
If the dataset is non-polarimetric then we just compute all metrics over all modstates at once.
|
|
48
|
+
"""
|
|
49
|
+
if self.constants.correct_for_polarization:
|
|
50
|
+
return list(range(1, self.constants.num_modstates + 1))
|
|
51
|
+
|
|
52
|
+
return None
|
|
@@ -5,18 +5,15 @@ import numpy as np
|
|
|
5
5
|
import pytest
|
|
6
6
|
from dkist_processing_common._util.scratch import WorkflowFileSystem
|
|
7
7
|
from dkist_processing_common.codecs.basemodel import basemodel_decoder
|
|
8
|
-
from dkist_processing_common.codecs.json import json_decoder
|
|
9
8
|
from dkist_processing_common.models.quality import QualityMetric
|
|
10
9
|
from dkist_processing_common.models.tags import Tag
|
|
11
10
|
from dkist_processing_common.models.task_name import TaskName
|
|
12
11
|
|
|
13
12
|
from dkist_processing_dlnirsp.models.tags import DlnirspTag
|
|
14
13
|
from dkist_processing_dlnirsp.tasks.quality_metrics import DlnirspL0QualityMetrics
|
|
15
|
-
from dkist_processing_dlnirsp.tasks.quality_metrics import DlnirspL1QualityMetrics
|
|
16
14
|
from dkist_processing_dlnirsp.tests.conftest import CalibratedHeaders
|
|
17
15
|
from dkist_processing_dlnirsp.tests.conftest import DlnirspTestingConstants
|
|
18
16
|
from dkist_processing_dlnirsp.tests.conftest import tag_on_modstate
|
|
19
|
-
from dkist_processing_dlnirsp.tests.conftest import write_calibrated_frames_to_task
|
|
20
17
|
from dkist_processing_dlnirsp.tests.conftest import write_lamp_gain_frames_to_task
|
|
21
18
|
from dkist_processing_dlnirsp.tests.conftest import write_solar_gain_frames_to_task
|
|
22
19
|
|
|
@@ -56,31 +53,6 @@ def quality_l0_task(
|
|
|
56
53
|
task._purge()
|
|
57
54
|
|
|
58
55
|
|
|
59
|
-
@pytest.fixture
|
|
60
|
-
def quality_l1_task(recipe_run_id, is_polarimetric, link_constants_db, tmp_path):
|
|
61
|
-
num_mosaics = 2
|
|
62
|
-
num_X_tiles = 2
|
|
63
|
-
num_Y_tiles = 2
|
|
64
|
-
constants = DlnirspTestingConstants(
|
|
65
|
-
NUM_MODSTATES=8 if is_polarimetric else 1,
|
|
66
|
-
POLARIMETER_MODE="Full Stokes" if is_polarimetric else "Stokes I",
|
|
67
|
-
NUM_MOSAIC_REPEATS=num_mosaics,
|
|
68
|
-
NUM_MOSAIC_TILES_X=num_X_tiles,
|
|
69
|
-
NUM_MOSAIC_TILES_Y=num_Y_tiles,
|
|
70
|
-
)
|
|
71
|
-
link_constants_db(recipe_run_id, constants)
|
|
72
|
-
|
|
73
|
-
with DlnirspL1QualityMetrics(
|
|
74
|
-
recipe_run_id=recipe_run_id,
|
|
75
|
-
workflow_name="workflow_name",
|
|
76
|
-
workflow_version="workflow_version",
|
|
77
|
-
) as task:
|
|
78
|
-
task.scratch = WorkflowFileSystem(scratch_base_path=tmp_path, recipe_run_id=recipe_run_id)
|
|
79
|
-
|
|
80
|
-
yield task, num_mosaics, num_X_tiles, num_Y_tiles
|
|
81
|
-
task._purge()
|
|
82
|
-
|
|
83
|
-
|
|
84
56
|
@pytest.fixture
|
|
85
57
|
def l0_task_types_and_writers() -> list[tuple[str, Callable]]:
|
|
86
58
|
return [
|
|
@@ -161,62 +133,3 @@ def test_quality_l0_task(
|
|
|
161
133
|
for facet in task_types:
|
|
162
134
|
# make sure two facets of each type
|
|
163
135
|
assert len([metric for metric in frame_metrics if metric.facet == facet]) == 2
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
@pytest.mark.parametrize(
|
|
167
|
-
"is_polarimetric",
|
|
168
|
-
[pytest.param(True, id="polarimetric"), pytest.param(False, id="spectrographic")],
|
|
169
|
-
)
|
|
170
|
-
def test_quality_l1_task(
|
|
171
|
-
quality_l1_task,
|
|
172
|
-
is_polarimetric,
|
|
173
|
-
):
|
|
174
|
-
"""
|
|
175
|
-
Given: A DlnirspL1QualityMetrics task with some OUTPUT frames
|
|
176
|
-
When: Running the task
|
|
177
|
-
Then: The correct files are produced and they have the expected amount of data
|
|
178
|
-
"""
|
|
179
|
-
task, num_mosaics, num_X_tiles, num_Y_tiles = quality_l1_task
|
|
180
|
-
|
|
181
|
-
num_l1_frames = write_calibrated_frames_to_task(
|
|
182
|
-
task=task,
|
|
183
|
-
num_mosaics=num_mosaics,
|
|
184
|
-
num_X_tiles=num_X_tiles,
|
|
185
|
-
num_Y_tiles=num_Y_tiles,
|
|
186
|
-
is_polarimetric=is_polarimetric,
|
|
187
|
-
array_shape=(200, 20, 20),
|
|
188
|
-
data_func=make_infy_3D_data,
|
|
189
|
-
)
|
|
190
|
-
task()
|
|
191
|
-
|
|
192
|
-
stokes_params = ["I"]
|
|
193
|
-
if is_polarimetric:
|
|
194
|
-
stokes_params += ["Q", "U", "V"]
|
|
195
|
-
|
|
196
|
-
for stokes in stokes_params:
|
|
197
|
-
sensitivity_data = list(
|
|
198
|
-
task.read(
|
|
199
|
-
tags=[DlnirspTag.quality("SENSITIVITY"), DlnirspTag.stokes(stokes)],
|
|
200
|
-
decoder=json_decoder,
|
|
201
|
-
)
|
|
202
|
-
)
|
|
203
|
-
assert len(sensitivity_data) == 0
|
|
204
|
-
# Don't test sensitivity while calculation is incorrect
|
|
205
|
-
# assert (
|
|
206
|
-
# len(sensitivity_data[0]["x_values"])
|
|
207
|
-
# == len(sensitivity_data[0]["y_values"])
|
|
208
|
-
# == num_l1_frames / len(stokes_params)
|
|
209
|
-
# )
|
|
210
|
-
|
|
211
|
-
noise_data = list(
|
|
212
|
-
task.read(
|
|
213
|
-
tags=[DlnirspTag.quality("NOISE"), DlnirspTag.stokes(stokes)], decoder=json_decoder
|
|
214
|
-
)
|
|
215
|
-
)
|
|
216
|
-
assert len(noise_data) == 0
|
|
217
|
-
# Don't assert noise while calculation is incorrect
|
|
218
|
-
# assert (
|
|
219
|
-
# len(noise_data[0]["x_values"])
|
|
220
|
-
# == len(noise_data[0]["y_values"])
|
|
221
|
-
# == num_l1_frames / len(stokes_params)
|
|
222
|
-
# )
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-dlnirsp
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.8rc2
|
|
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
|
|
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/x-rst
|
|
16
|
-
Requires-Dist: dkist-processing-common==13.0.
|
|
16
|
+
Requires-Dist: dkist-processing-common==13.0.6rc2
|
|
17
17
|
Requires-Dist: dkist-processing-math==2.2.2
|
|
18
18
|
Requires-Dist: dkist-processing-pac==3.1.1
|
|
19
19
|
Requires-Dist: dkist-header-validator==5.3.1
|
|
@@ -107,14 +107,14 @@ Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
|
|
|
107
107
|
Requires-Dist: asgiref==3.11.1; extra == "frozen"
|
|
108
108
|
Requires-Dist: asteval==1.0.8; extra == "frozen"
|
|
109
109
|
Requires-Dist: astropy==7.0.2; extra == "frozen"
|
|
110
|
-
Requires-Dist: astropy-iers-data==0.2026.4.
|
|
110
|
+
Requires-Dist: astropy-iers-data==0.2026.4.20.0.58.15; extra == "frozen"
|
|
111
111
|
Requires-Dist: astropy_healpix==1.1.3; extra == "frozen"
|
|
112
112
|
Requires-Dist: asyncpg==0.31.0; extra == "frozen"
|
|
113
113
|
Requires-Dist: attrs==26.1.0; extra == "frozen"
|
|
114
114
|
Requires-Dist: babel==2.18.0; extra == "frozen"
|
|
115
115
|
Requires-Dist: billiard==4.2.4; extra == "frozen"
|
|
116
|
-
Requires-Dist: boto3==1.42.
|
|
117
|
-
Requires-Dist: botocore==1.42.
|
|
116
|
+
Requires-Dist: boto3==1.42.92; extra == "frozen"
|
|
117
|
+
Requires-Dist: botocore==1.42.92; extra == "frozen"
|
|
118
118
|
Requires-Dist: cadwyn==5.4.6; extra == "frozen"
|
|
119
119
|
Requires-Dist: celery==5.6.3; extra == "frozen"
|
|
120
120
|
Requires-Dist: certifi==2026.2.25; extra == "frozen"
|
|
@@ -131,15 +131,14 @@ Requires-Dist: cron_descriptor==2.0.8; extra == "frozen"
|
|
|
131
131
|
Requires-Dist: croniter==6.2.2; extra == "frozen"
|
|
132
132
|
Requires-Dist: cryptography==46.0.7; extra == "frozen"
|
|
133
133
|
Requires-Dist: cycler==0.12.1; extra == "frozen"
|
|
134
|
-
Requires-Dist: dacite==1.9.2; extra == "frozen"
|
|
135
134
|
Requires-Dist: dask==2026.3.0; extra == "frozen"
|
|
136
135
|
Requires-Dist: dask-image==2025.11.0; extra == "frozen"
|
|
137
136
|
Requires-Dist: decorator==5.2.1; extra == "frozen"
|
|
138
137
|
Requires-Dist: dill==0.4.1; extra == "frozen"
|
|
139
138
|
Requires-Dist: dkist-header-validator==5.3.1; extra == "frozen"
|
|
140
|
-
Requires-Dist: dkist-processing-common==13.0.
|
|
139
|
+
Requires-Dist: dkist-processing-common==13.0.6rc2; extra == "frozen"
|
|
141
140
|
Requires-Dist: dkist-processing-core==7.2.1; extra == "frozen"
|
|
142
|
-
Requires-Dist: dkist-processing-dlnirsp==1.4.
|
|
141
|
+
Requires-Dist: dkist-processing-dlnirsp==1.4.8rc2; extra == "frozen"
|
|
143
142
|
Requires-Dist: dkist-processing-math==2.2.2; extra == "frozen"
|
|
144
143
|
Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
|
|
145
144
|
Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
|
|
@@ -158,7 +157,7 @@ Requires-Dist: fsspec==2026.3.0; extra == "frozen"
|
|
|
158
157
|
Requires-Dist: globus-sdk==4.5.0; extra == "frozen"
|
|
159
158
|
Requires-Dist: google-crc32c==1.8.0; extra == "frozen"
|
|
160
159
|
Requires-Dist: googleapis-common-protos==1.74.0; extra == "frozen"
|
|
161
|
-
Requires-Dist: gqlclient==
|
|
160
|
+
Requires-Dist: gqlclient==2.0.0; extra == "frozen"
|
|
162
161
|
Requires-Dist: greenback==1.3.0; extra == "frozen"
|
|
163
162
|
Requires-Dist: greenlet==3.4.0; extra == "frozen"
|
|
164
163
|
Requires-Dist: grpcio==1.80.0; extra == "frozen"
|
|
@@ -247,9 +246,9 @@ Requires-Dist: psutil==7.2.2; extra == "frozen"
|
|
|
247
246
|
Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
|
|
248
247
|
Requires-Dist: pyarrow==23.0.1; extra == "frozen"
|
|
249
248
|
Requires-Dist: pycparser==3.0; extra == "frozen"
|
|
250
|
-
Requires-Dist: pydantic==2.13.
|
|
251
|
-
Requires-Dist: pydantic-settings==2.
|
|
252
|
-
Requires-Dist: pydantic_core==2.46.
|
|
249
|
+
Requires-Dist: pydantic==2.13.3; extra == "frozen"
|
|
250
|
+
Requires-Dist: pydantic-settings==2.14.0; extra == "frozen"
|
|
251
|
+
Requires-Dist: pydantic_core==2.46.3; extra == "frozen"
|
|
253
252
|
Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
|
|
254
253
|
Requires-Dist: pygtrie==2.5.0; extra == "frozen"
|
|
255
254
|
Requires-Dist: pyparsing==3.3.2; extra == "frozen"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
dkist-processing-common==13.0.
|
|
1
|
+
dkist-processing-common==13.0.6rc2
|
|
2
2
|
dkist-processing-math==2.2.2
|
|
3
3
|
dkist-processing-pac==3.1.1
|
|
4
4
|
dkist-header-validator==5.3.1
|
|
@@ -73,14 +73,14 @@ asdf_transform_schemas==0.6.0
|
|
|
73
73
|
asgiref==3.11.1
|
|
74
74
|
asteval==1.0.8
|
|
75
75
|
astropy==7.0.2
|
|
76
|
-
astropy-iers-data==0.2026.4.
|
|
76
|
+
astropy-iers-data==0.2026.4.20.0.58.15
|
|
77
77
|
astropy_healpix==1.1.3
|
|
78
78
|
asyncpg==0.31.0
|
|
79
79
|
attrs==26.1.0
|
|
80
80
|
babel==2.18.0
|
|
81
81
|
billiard==4.2.4
|
|
82
|
-
boto3==1.42.
|
|
83
|
-
botocore==1.42.
|
|
82
|
+
boto3==1.42.92
|
|
83
|
+
botocore==1.42.92
|
|
84
84
|
cadwyn==5.4.6
|
|
85
85
|
celery==5.6.3
|
|
86
86
|
certifi==2026.2.25
|
|
@@ -97,15 +97,14 @@ cron_descriptor==2.0.8
|
|
|
97
97
|
croniter==6.2.2
|
|
98
98
|
cryptography==46.0.7
|
|
99
99
|
cycler==0.12.1
|
|
100
|
-
dacite==1.9.2
|
|
101
100
|
dask==2026.3.0
|
|
102
101
|
dask-image==2025.11.0
|
|
103
102
|
decorator==5.2.1
|
|
104
103
|
dill==0.4.1
|
|
105
104
|
dkist-header-validator==5.3.1
|
|
106
|
-
dkist-processing-common==13.0.
|
|
105
|
+
dkist-processing-common==13.0.6rc2
|
|
107
106
|
dkist-processing-core==7.2.1
|
|
108
|
-
dkist-processing-dlnirsp==1.4.
|
|
107
|
+
dkist-processing-dlnirsp==1.4.8rc2
|
|
109
108
|
dkist-processing-math==2.2.2
|
|
110
109
|
dkist-processing-pac==3.1.1
|
|
111
110
|
dkist-service-configuration==4.3.0
|
|
@@ -124,7 +123,7 @@ fsspec==2026.3.0
|
|
|
124
123
|
globus-sdk==4.5.0
|
|
125
124
|
google-crc32c==1.8.0
|
|
126
125
|
googleapis-common-protos==1.74.0
|
|
127
|
-
gqlclient==
|
|
126
|
+
gqlclient==2.0.0
|
|
128
127
|
greenback==1.3.0
|
|
129
128
|
greenlet==3.4.0
|
|
130
129
|
grpcio==1.80.0
|
|
@@ -213,9 +212,9 @@ psutil==7.2.2
|
|
|
213
212
|
psycopg2-binary==2.9.11
|
|
214
213
|
pyarrow==23.0.1
|
|
215
214
|
pycparser==3.0
|
|
216
|
-
pydantic==2.13.
|
|
217
|
-
pydantic-settings==2.
|
|
218
|
-
pydantic_core==2.46.
|
|
215
|
+
pydantic==2.13.3
|
|
216
|
+
pydantic-settings==2.14.0
|
|
217
|
+
pydantic_core==2.46.3
|
|
219
218
|
pyerfa==2.0.1.5
|
|
220
219
|
pygtrie==2.5.0
|
|
221
220
|
pyparsing==3.3.2
|
|
@@ -9,8 +9,8 @@ exclude = ["build*"]
|
|
|
9
9
|
|
|
10
10
|
[tool.dkist-dev-tools]
|
|
11
11
|
# Most recently frozen version by dkist-dev-tools
|
|
12
|
-
version = "1.4.
|
|
13
|
-
date = 2026-04-
|
|
12
|
+
version = "1.4.8rc2"
|
|
13
|
+
date = 2026-04-20T16:09:03.639894
|
|
14
14
|
|
|
15
15
|
[project]
|
|
16
16
|
dynamic = ["version"]
|
|
@@ -26,7 +26,7 @@ classifiers = [
|
|
|
26
26
|
"Programming Language :: Python :: 3.13",
|
|
27
27
|
]
|
|
28
28
|
dependencies = [
|
|
29
|
-
"dkist-processing-common == 13.0.
|
|
29
|
+
"dkist-processing-common == 13.0.6rc2",
|
|
30
30
|
"dkist-processing-math == 2.2.2",
|
|
31
31
|
"dkist-processing-pac == 3.1.1",
|
|
32
32
|
"dkist-header-validator == 5.3.1",
|
|
@@ -135,14 +135,14 @@ frozen = [
|
|
|
135
135
|
"asgiref == 3.11.1",
|
|
136
136
|
"asteval == 1.0.8",
|
|
137
137
|
"astropy == 7.0.2",
|
|
138
|
-
"astropy-iers-data == 0.2026.4.
|
|
138
|
+
"astropy-iers-data == 0.2026.4.20.0.58.15",
|
|
139
139
|
"astropy_healpix == 1.1.3",
|
|
140
140
|
"asyncpg == 0.31.0",
|
|
141
141
|
"attrs == 26.1.0",
|
|
142
142
|
"babel == 2.18.0",
|
|
143
143
|
"billiard == 4.2.4",
|
|
144
|
-
"boto3 == 1.42.
|
|
145
|
-
"botocore == 1.42.
|
|
144
|
+
"boto3 == 1.42.92",
|
|
145
|
+
"botocore == 1.42.92",
|
|
146
146
|
"cadwyn == 5.4.6",
|
|
147
147
|
"celery == 5.6.3",
|
|
148
148
|
"certifi == 2026.2.25",
|
|
@@ -159,15 +159,14 @@ frozen = [
|
|
|
159
159
|
"croniter == 6.2.2",
|
|
160
160
|
"cryptography == 46.0.7",
|
|
161
161
|
"cycler == 0.12.1",
|
|
162
|
-
"dacite == 1.9.2",
|
|
163
162
|
"dask == 2026.3.0",
|
|
164
163
|
"dask-image == 2025.11.0",
|
|
165
164
|
"decorator == 5.2.1",
|
|
166
165
|
"dill == 0.4.1",
|
|
167
166
|
"dkist-header-validator == 5.3.1",
|
|
168
|
-
"dkist-processing-common == 13.0.
|
|
167
|
+
"dkist-processing-common == 13.0.6rc2",
|
|
169
168
|
"dkist-processing-core == 7.2.1",
|
|
170
|
-
"dkist-processing-dlnirsp == 1.4.
|
|
169
|
+
"dkist-processing-dlnirsp == 1.4.8rc2",
|
|
171
170
|
"dkist-processing-math == 2.2.2",
|
|
172
171
|
"dkist-processing-pac == 3.1.1",
|
|
173
172
|
"dkist-service-configuration == 4.3.0",
|
|
@@ -186,7 +185,7 @@ frozen = [
|
|
|
186
185
|
"globus-sdk == 4.5.0",
|
|
187
186
|
"google-crc32c == 1.8.0",
|
|
188
187
|
"googleapis-common-protos == 1.74.0",
|
|
189
|
-
"gqlclient ==
|
|
188
|
+
"gqlclient == 2.0.0",
|
|
190
189
|
"greenback == 1.3.0",
|
|
191
190
|
"greenlet == 3.4.0",
|
|
192
191
|
"grpcio == 1.80.0",
|
|
@@ -275,9 +274,9 @@ frozen = [
|
|
|
275
274
|
"psycopg2-binary == 2.9.11",
|
|
276
275
|
"pyarrow == 23.0.1",
|
|
277
276
|
"pycparser == 3.0",
|
|
278
|
-
"pydantic == 2.13.
|
|
279
|
-
"pydantic-settings == 2.
|
|
280
|
-
"pydantic_core == 2.46.
|
|
277
|
+
"pydantic == 2.13.3",
|
|
278
|
+
"pydantic-settings == 2.14.0",
|
|
279
|
+
"pydantic_core == 2.46.3",
|
|
281
280
|
"pyerfa == 2.0.1.5",
|
|
282
281
|
"pygtrie == 2.5.0",
|
|
283
282
|
"pyparsing == 3.3.2",
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
"""Tasks for computing dataset-wide quality metrics."""
|
|
2
|
-
|
|
3
|
-
from dataclasses import dataclass
|
|
4
|
-
from dataclasses import field
|
|
5
|
-
from typing import Iterable
|
|
6
|
-
from typing import Literal
|
|
7
|
-
|
|
8
|
-
import numpy as np
|
|
9
|
-
from astropy.time import Time
|
|
10
|
-
from dkist_processing_common.codecs.fits import fits_access_decoder
|
|
11
|
-
from dkist_processing_common.codecs.fits import fits_array_decoder
|
|
12
|
-
from dkist_processing_common.parsers.quality import L1QualityFitsAccess
|
|
13
|
-
from dkist_processing_common.tasks import QualityL0Metrics
|
|
14
|
-
from dkist_processing_common.tasks.mixin.quality import QualityMixin
|
|
15
|
-
from dkist_service_configuration.logging import logger
|
|
16
|
-
|
|
17
|
-
from dkist_processing_dlnirsp.models.constants import DlnirspConstants
|
|
18
|
-
from dkist_processing_dlnirsp.models.tags import DlnirspTag
|
|
19
|
-
from dkist_processing_dlnirsp.tasks.dlnirsp_base import DlnirspTaskBase
|
|
20
|
-
|
|
21
|
-
__all__ = ["DlnirspL0QualityMetrics", "DlnirspL1QualityMetrics"]
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
@dataclass
|
|
25
|
-
class QualityDataPoint:
|
|
26
|
-
"""Class for storage of a single DLNIRSP quality data point in a time series."""
|
|
27
|
-
|
|
28
|
-
datetime: str | int # AKA isot | mjd
|
|
29
|
-
value: float
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
@dataclass
|
|
33
|
-
class QualityTimeSeries:
|
|
34
|
-
"""Class for storage of DLNIRSP time series quality data."""
|
|
35
|
-
|
|
36
|
-
data_points: list[QualityDataPoint] = field(default_factory=list)
|
|
37
|
-
|
|
38
|
-
@property
|
|
39
|
-
def datetimes(self) -> list[str | int]:
|
|
40
|
-
"""Parse datetimes from list of data points."""
|
|
41
|
-
return [dp.datetime for dp in self.data_points]
|
|
42
|
-
|
|
43
|
-
@property
|
|
44
|
-
def values(self) -> list[float]:
|
|
45
|
-
"""Parse values from list of data points."""
|
|
46
|
-
return [dp.value for dp in self.data_points]
|
|
47
|
-
|
|
48
|
-
def __len__(self):
|
|
49
|
-
return len(self.data_points)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
class DlnirspL0QualityMetrics(QualityL0Metrics):
|
|
53
|
-
"""
|
|
54
|
-
Task class for collection of DLNIRSP L0 specific quality metrics.
|
|
55
|
-
|
|
56
|
-
Parameters
|
|
57
|
-
----------
|
|
58
|
-
recipe_run_id : int
|
|
59
|
-
id of the recipe run used to identify the workflow run this task is part of
|
|
60
|
-
workflow_name : str
|
|
61
|
-
name of the workflow to which this instance of the task belongs
|
|
62
|
-
workflow_version : str
|
|
63
|
-
version of the workflow to which this instance of the task belongs
|
|
64
|
-
|
|
65
|
-
"""
|
|
66
|
-
|
|
67
|
-
@property
|
|
68
|
-
def constants_model_class(self):
|
|
69
|
-
"""Class for DLNIRSP constants."""
|
|
70
|
-
return DlnirspConstants
|
|
71
|
-
|
|
72
|
-
@property
|
|
73
|
-
def raw_frame_tag(self) -> str:
|
|
74
|
-
"""
|
|
75
|
-
Define tag corresponding to L0 data.
|
|
76
|
-
|
|
77
|
-
For DL it's LINEARIZED.
|
|
78
|
-
"""
|
|
79
|
-
return DlnirspTag.linearized()
|
|
80
|
-
|
|
81
|
-
@property
|
|
82
|
-
def modstate_list(self) -> Iterable[int] | None:
|
|
83
|
-
"""
|
|
84
|
-
Define the list of modstates over which to compute L0 quality metrics.
|
|
85
|
-
|
|
86
|
-
If the dataset is non-polarimetric then we just compute all metrics over all modstates at once.
|
|
87
|
-
"""
|
|
88
|
-
if self.constants.correct_for_polarization:
|
|
89
|
-
return list(range(1, self.constants.num_modstates + 1))
|
|
90
|
-
|
|
91
|
-
return None
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
class DlnirspL1QualityMetrics(DlnirspTaskBase, QualityMixin):
|
|
95
|
-
"""Task class for computing of L1 specific dataset metrics."""
|
|
96
|
-
|
|
97
|
-
def run(self):
|
|
98
|
-
"""
|
|
99
|
-
Calculate L1 metrics for the whole dataset.
|
|
100
|
-
|
|
101
|
-
The dataset metrics include polarimetric sensitivity and noise per frame.
|
|
102
|
-
|
|
103
|
-
NOTE THAT THIS TASK HAS BEEN REMOVED FROM WORKFLOWS WHILE CALCULATIONS ARE WORKED ON
|
|
104
|
-
"""
|
|
105
|
-
pass
|
|
106
|
-
|
|
107
|
-
def _compile_sensitivity_and_noise_data(
|
|
108
|
-
self, stokes: Literal["I", "Q", "U", "V"]
|
|
109
|
-
) -> tuple[QualityTimeSeries, QualityTimeSeries]:
|
|
110
|
-
r"""
|
|
111
|
-
Compute the sensitivity and noise for every OUTPUT frame in a dataset.
|
|
112
|
-
|
|
113
|
-
We compute them both in one method so we don't have to read every file twice.
|
|
114
|
-
|
|
115
|
-
Sensitivity, :math:`s`, is defined as:
|
|
116
|
-
|
|
117
|
-
.. math::
|
|
118
|
-
|
|
119
|
-
s = stddev(F_i)/\left<F_I\right>
|
|
120
|
-
|
|
121
|
-
where :math:`F_i` is a full array of values for Stokes parameter :math:`i` (I, Q, U, V), and :math:`F_I` is the
|
|
122
|
-
full frame of Stokes-I. The stddev is computed across the entire frame and :math:`\left< \right>` denote the
|
|
123
|
-
frame average.
|
|
124
|
-
|
|
125
|
-
The noise is defined as the average of the stddev of various sub-regions of the output array, taken around the
|
|
126
|
-
edges of the frame.
|
|
127
|
-
"""
|
|
128
|
-
sensitivity_data = QualityTimeSeries()
|
|
129
|
-
noise_data = QualityTimeSeries()
|
|
130
|
-
for mosaic in range(self.constants.num_mosaic_repeats):
|
|
131
|
-
for X_tile in range(1, self.constants.num_mosaic_tiles_x + 1):
|
|
132
|
-
for Y_tile in range(1, self.constants.num_mosaic_tiles_y + 1):
|
|
133
|
-
# Sensitivity
|
|
134
|
-
non_stokes_tags = [
|
|
135
|
-
DlnirspTag.calibrated(),
|
|
136
|
-
DlnirspTag.frame(),
|
|
137
|
-
DlnirspTag.mosaic_num(mosaic),
|
|
138
|
-
DlnirspTag.mosaic_tile_x(X_tile),
|
|
139
|
-
DlnirspTag.mosaic_tile_y(Y_tile),
|
|
140
|
-
]
|
|
141
|
-
stokes_I_data = next(
|
|
142
|
-
self.read(
|
|
143
|
-
tags=non_stokes_tags + [DlnirspTag.stokes("I")],
|
|
144
|
-
decoder=fits_array_decoder,
|
|
145
|
-
)
|
|
146
|
-
)
|
|
147
|
-
stokes_I_avg = np.nanmedian(stokes_I_data) or np.nanmean(stokes_I_data)
|
|
148
|
-
|
|
149
|
-
stokes_frame = next(
|
|
150
|
-
self.read(
|
|
151
|
-
tags=non_stokes_tags + [DlnirspTag.stokes(stokes)],
|
|
152
|
-
decoder=fits_access_decoder,
|
|
153
|
-
fits_access_class=L1QualityFitsAccess,
|
|
154
|
-
)
|
|
155
|
-
)
|
|
156
|
-
|
|
157
|
-
sensitivity = (
|
|
158
|
-
np.nanstd(stokes_frame.data[np.isfinite(stokes_frame.data)]) / stokes_I_avg
|
|
159
|
-
)
|
|
160
|
-
time_str = Time(stokes_frame.time_obs).fits
|
|
161
|
-
sensitivity_data_point = QualityDataPoint(value=sensitivity, datetime=time_str)
|
|
162
|
-
sensitivity_data.data_points.append(sensitivity_data_point)
|
|
163
|
-
|
|
164
|
-
# Noise
|
|
165
|
-
non_inf_data = np.copy(stokes_frame.data)
|
|
166
|
-
non_inf_data[~np.isfinite(non_inf_data)] = np.nan
|
|
167
|
-
avg_noise = self.avg_noise(non_inf_data)
|
|
168
|
-
noise_data_point = QualityDataPoint(value=avg_noise, datetime=time_str)
|
|
169
|
-
noise_data.data_points.append(noise_data_point)
|
|
170
|
-
|
|
171
|
-
logger.info(f"Calculated {len(sensitivity_data)} sensitivities and noise values")
|
|
172
|
-
|
|
173
|
-
return sensitivity_data, noise_data
|
|
File without changes
|
{dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/.pre-commit-config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/bitbucket-pipelines.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/bad_pixel_calibration.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/dataset_extras.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/l0_to_l1_dlnirsp.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/requirements_table.rst
RENAMED
|
File without changes
|
{dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/science_calibration.rst
RENAMED
|
File without changes
|
{dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/scientific_changelog.rst
RENAMED
|
File without changes
|
{dkist_processing_dlnirsp-1.4.6 → dkist_processing_dlnirsp-1.4.8rc2}/docs/wavelength_calibration.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|