dkist-processing-visp 5.9.2__tar.gz → 5.10.0__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_visp-5.9.2 → dkist_processing_visp-5.10.0}/CHANGELOG.rst +21 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/PKG-INFO +22 -22
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/README.rst +1 -1
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/__init__.py +0 -1
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/instrument_polarization.py +2 -7
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/solar.py +175 -29
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/local_trial_workflows/l0_polcals_as_science.py +2 -2
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/local_trial_workflows/l0_solar_gain_as_science.py +2 -2
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/local_trial_workflows/l0_to_l1.py +2 -2
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_instrument_polarization.py +1 -1
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_solar.py +87 -24
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/workflows/l0_processing.py +4 -4
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/workflows/trial_workflows.py +4 -4
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/PKG-INFO +22 -22
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/SOURCES.txt +0 -2
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/requires.txt +20 -20
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/scm_file_list.json +0 -2
- dkist_processing_visp-5.10.0/dkist_processing_visp.egg-info/scm_version.json +8 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/pyproject.toml +22 -22
- dkist_processing_visp-5.9.2/dkist_processing_visp/tasks/l1_output_data.py +0 -217
- dkist_processing_visp-5.9.2/dkist_processing_visp/tests/test_assemble_quality.py +0 -128
- dkist_processing_visp-5.9.2/dkist_processing_visp.egg-info/scm_version.json +0 -8
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.gitignore +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.pre-commit-config.yaml +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.readthedocs.yml +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.rovodev/.review-agent.md +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.snyk +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/SCIENCE_CHANGELOG.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/changelog/.gitempty +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/__init__.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/config.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/fonts/Lato-Regular.ttf +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/__init__.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/constants.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/dataset_extras.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/fits_access.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/metric_code.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/parameters.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/tags.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/task_name.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/__init__.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/map_repeats.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/modulator_states.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/polarimeter_mode.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/raster_step.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/spectrograph_configuration.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/time.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/visp_l0_fits_access.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/visp_l1_fits_access.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/assemble_movie.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/background_light.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/dark.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/geometric.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/lamp.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/make_movie_frames.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/mixin/__init__.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/mixin/beam_access.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/mixin/corrections.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/mixin/downsample.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/parse.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/polcal_as_science.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/quality_metrics.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/science.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/visp_base.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/wavelength_calibration.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/write_dataset_extras.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/write_l1.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/README.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/__init__.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/conftest.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/header_models.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/local_trial_workflows/__init__.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/local_trial_workflows/l0_cals_only.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/local_trial_workflows/local_trial_helpers.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_assemble_movie.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_background_light.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_dark.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_downsample.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_fits_access.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_geometric.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_lamp.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_make_movie_frames.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_map_repeats.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_parameters.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_parse.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_polcal_as_science.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_quality.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_science.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_trial_create_quality_report.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_visp_base.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_visp_constants.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_wavelength_calibration.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_workflows.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_write_dataset_extras.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_write_l1.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/workflows/__init__.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/workflows/single_task_workflows.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/dependency_links.txt +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/top_level.txt +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/Makefile +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/background_light.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/changelog.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/conf.py +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/dataset_extras.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/gain_correction.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/geometric.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/index.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/l0_to_l1_visp.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/l0_to_l1_visp_full-trial.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/landing_page.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/make.bat +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/polarization_calibration.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/requirements.txt +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/requirements_table.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/science_calibration.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/scientific_changelog.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/wavelength_calibration.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/licenses/LICENSE.rst +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/science_towncrier.sh +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/setup.cfg +0 -0
- {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/towncrier_science.toml +0 -0
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
v5.10.0 (2026-10-19)
|
|
2
|
+
====================
|
|
3
|
+
|
|
4
|
+
Removals
|
|
5
|
+
--------
|
|
6
|
+
|
|
7
|
+
- Remove the redundant ``VispAssembleQualityData`` task and use common's ``AssembleQualityData`` in the production, trial, and manual workflows. (`#342 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/342>`__)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Misc
|
|
11
|
+
----
|
|
12
|
+
|
|
13
|
+
- Write polcal and solar vignette quality metrics through the new common quality API. (`#342 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/342>`__)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Documentation
|
|
17
|
+
-------------
|
|
18
|
+
|
|
19
|
+
- Update the README clone command to use Bitbucket's new SSH hostname. (`#346 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/346>`__)
|
|
20
|
+
|
|
21
|
+
|
|
1
22
|
v5.9.2 (2026-10-14)
|
|
2
23
|
===================
|
|
3
24
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-visp
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.10.0
|
|
4
4
|
Summary: Science processing code for the ViSP 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==14.
|
|
16
|
+
Requires-Dist: dkist-processing-common==14.7.0
|
|
17
17
|
Requires-Dist: dkist-processing-math==3.0.1
|
|
18
18
|
Requires-Dist: dkist-processing-pac==3.1.2
|
|
19
19
|
Requires-Dist: dkist-header-validator==6.0.0
|
|
@@ -75,7 +75,7 @@ Requires-Dist: PyJWT==2.15.1; extra == "frozen"
|
|
|
75
75
|
Requires-Dist: PyYAML==6.0.3; extra == "frozen"
|
|
76
76
|
Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
|
|
77
77
|
Requires-Dist: Pygments==2.21.0; extra == "frozen"
|
|
78
|
-
Requires-Dist: SQLAlchemy==2.1.
|
|
78
|
+
Requires-Dist: SQLAlchemy==2.1.5; extra == "frozen"
|
|
79
79
|
Requires-Dist: Send2Trash==2.1.0; extra == "frozen"
|
|
80
80
|
Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
|
|
81
81
|
Requires-Dist: aioftp==0.28.3; extra == "frozen"
|
|
@@ -92,7 +92,7 @@ Requires-Dist: anyio==4.15.1; extra == "frozen"
|
|
|
92
92
|
Requires-Dist: apache-airflow==3.3.1; extra == "frozen"
|
|
93
93
|
Requires-Dist: apache-airflow-core==3.3.1; extra == "frozen"
|
|
94
94
|
Requires-Dist: apache-airflow-providers-celery==3.25.0; extra == "frozen"
|
|
95
|
-
Requires-Dist: apache-airflow-providers-common-compat==1.
|
|
95
|
+
Requires-Dist: apache-airflow-providers-common-compat==1.22.0; extra == "frozen"
|
|
96
96
|
Requires-Dist: apache-airflow-providers-common-io==1.10.1; extra == "frozen"
|
|
97
97
|
Requires-Dist: apache-airflow-providers-common-sql==2.3.0; extra == "frozen"
|
|
98
98
|
Requires-Dist: apache-airflow-providers-postgres==7.1.1; extra == "frozen"
|
|
@@ -109,7 +109,7 @@ Requires-Dist: asdf_standard==1.5.0; extra == "frozen"
|
|
|
109
109
|
Requires-Dist: asgiref==3.12.1; extra == "frozen"
|
|
110
110
|
Requires-Dist: asteval==1.0.10; extra == "frozen"
|
|
111
111
|
Requires-Dist: astropy==7.0.2; extra == "frozen"
|
|
112
|
-
Requires-Dist: astropy-iers-data==0.2026.10.
|
|
112
|
+
Requires-Dist: astropy-iers-data==0.2026.10.19.0.52.1; extra == "frozen"
|
|
113
113
|
Requires-Dist: asttokens==3.0.2; extra == "frozen"
|
|
114
114
|
Requires-Dist: async-lru==2.4.0; extra == "frozen"
|
|
115
115
|
Requires-Dist: asyncpg==0.32.0; extra == "frozen"
|
|
@@ -118,12 +118,12 @@ Requires-Dist: babel==2.18.0; extra == "frozen"
|
|
|
118
118
|
Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
|
|
119
119
|
Requires-Dist: billiard==4.3.1; extra == "frozen"
|
|
120
120
|
Requires-Dist: bleach==6.4.0; extra == "frozen"
|
|
121
|
-
Requires-Dist: boto3==1.43.
|
|
122
|
-
Requires-Dist: botocore==1.43.
|
|
123
|
-
Requires-Dist: cachetools==7.2.
|
|
121
|
+
Requires-Dist: boto3==1.43.115; extra == "frozen"
|
|
122
|
+
Requires-Dist: botocore==1.43.115; extra == "frozen"
|
|
123
|
+
Requires-Dist: cachetools==7.2.4; extra == "frozen"
|
|
124
124
|
Requires-Dist: cadwyn==7.0.0; extra == "frozen"
|
|
125
125
|
Requires-Dist: celery==5.6.3; extra == "frozen"
|
|
126
|
-
Requires-Dist: certifi==2026.
|
|
126
|
+
Requires-Dist: certifi==2026.10.18; extra == "frozen"
|
|
127
127
|
Requires-Dist: cffi==2.1.1; extra == "frozen"
|
|
128
128
|
Requires-Dist: charset-normalizer==3.5.2; extra == "frozen"
|
|
129
129
|
Requires-Dist: click==8.5.0; extra == "frozen"
|
|
@@ -143,11 +143,11 @@ Requires-Dist: decorator==5.3.1; extra == "frozen"
|
|
|
143
143
|
Requires-Dist: defusedxml==0.7.1; extra == "frozen"
|
|
144
144
|
Requires-Dist: dill==0.4.1; extra == "frozen"
|
|
145
145
|
Requires-Dist: dkist-header-validator==6.0.0; extra == "frozen"
|
|
146
|
-
Requires-Dist: dkist-processing-common==14.
|
|
146
|
+
Requires-Dist: dkist-processing-common==14.7.0; extra == "frozen"
|
|
147
147
|
Requires-Dist: dkist-processing-core==7.5.0; extra == "frozen"
|
|
148
148
|
Requires-Dist: dkist-processing-math==3.0.1; extra == "frozen"
|
|
149
149
|
Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
|
|
150
|
-
Requires-Dist: dkist-processing-visp==5.
|
|
150
|
+
Requires-Dist: dkist-processing-visp==5.10.0; extra == "frozen"
|
|
151
151
|
Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
|
|
152
152
|
Requires-Dist: dkist-spectral-lines==3.0.1; extra == "frozen"
|
|
153
153
|
Requires-Dist: dkist_fits_specifications==4.30.0; extra == "frozen"
|
|
@@ -185,7 +185,7 @@ Requires-Dist: jedi==0.20.1; extra == "frozen"
|
|
|
185
185
|
Requires-Dist: jmespath==1.1.0; extra == "frozen"
|
|
186
186
|
Requires-Dist: joblib==1.6.0; extra == "frozen"
|
|
187
187
|
Requires-Dist: json5==0.17.3; extra == "frozen"
|
|
188
|
-
Requires-Dist: jsonpointer==3.
|
|
188
|
+
Requires-Dist: jsonpointer==3.4; extra == "frozen"
|
|
189
189
|
Requires-Dist: jsonschema==4.26.0; extra == "frozen"
|
|
190
190
|
Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
|
|
191
191
|
Requires-Dist: jupyter-events==0.12.1; extra == "frozen"
|
|
@@ -202,7 +202,7 @@ Requires-Dist: kiwisolver==1.5.1; extra == "frozen"
|
|
|
202
202
|
Requires-Dist: kombu==5.6.2; extra == "frozen"
|
|
203
203
|
Requires-Dist: lark==1.3.1; extra == "frozen"
|
|
204
204
|
Requires-Dist: lazy-loader==0.6; extra == "frozen"
|
|
205
|
-
Requires-Dist: lazy-object-proxy==1.
|
|
205
|
+
Requires-Dist: lazy-object-proxy==1.13.0; extra == "frozen"
|
|
206
206
|
Requires-Dist: libcst==1.9.0; extra == "frozen"
|
|
207
207
|
Requires-Dist: linkify-it-py==2.2.0; extra == "frozen"
|
|
208
208
|
Requires-Dist: lmfit==1.3.4; extra == "frozen"
|
|
@@ -213,8 +213,8 @@ Requires-Dist: matplotlib==3.11.2; extra == "frozen"
|
|
|
213
213
|
Requires-Dist: matplotlib-inline==0.2.2; extra == "frozen"
|
|
214
214
|
Requires-Dist: mdurl==0.1.2; extra == "frozen"
|
|
215
215
|
Requires-Dist: methodtools==0.4.7; extra == "frozen"
|
|
216
|
-
Requires-Dist: mistune==3.
|
|
217
|
-
Requires-Dist: more-itertools==11.2.
|
|
216
|
+
Requires-Dist: mistune==3.4.0; extra == "frozen"
|
|
217
|
+
Requires-Dist: more-itertools==11.2.1; extra == "frozen"
|
|
218
218
|
Requires-Dist: moviepy==2.1.2; extra == "frozen"
|
|
219
219
|
Requires-Dist: msgspec==0.22.0; extra == "frozen"
|
|
220
220
|
Requires-Dist: multidict==7.1.0; extra == "frozen"
|
|
@@ -267,8 +267,8 @@ Requires-Dist: pexpect==4.9.0; extra == "frozen"
|
|
|
267
267
|
Requires-Dist: pika==1.4.4; extra == "frozen"
|
|
268
268
|
Requires-Dist: pillow==10.4.0; extra == "frozen"
|
|
269
269
|
Requires-Dist: pip==26.2.1; extra == "frozen"
|
|
270
|
-
Requires-Dist: platformdirs==4.13.
|
|
271
|
-
Requires-Dist: pluggy==1.
|
|
270
|
+
Requires-Dist: platformdirs==4.13.5; extra == "frozen"
|
|
271
|
+
Requires-Dist: pluggy==1.7.0; extra == "frozen"
|
|
272
272
|
Requires-Dist: pooch==1.9.0; extra == "frozen"
|
|
273
273
|
Requires-Dist: proglog==0.1.12; extra == "frozen"
|
|
274
274
|
Requires-Dist: prometheus_client==0.26.0; extra == "frozen"
|
|
@@ -307,7 +307,7 @@ Requires-Dist: rich==15.0.0; extra == "frozen"
|
|
|
307
307
|
Requires-Dist: rich-argparse==1.8.0; extra == "frozen"
|
|
308
308
|
Requires-Dist: rich-toolkit==0.20.6; extra == "frozen"
|
|
309
309
|
Requires-Dist: rpds-py==2026.9.1; extra == "frozen"
|
|
310
|
-
Requires-Dist: s3transfer==0.19.
|
|
310
|
+
Requires-Dist: s3transfer==0.19.3; extra == "frozen"
|
|
311
311
|
Requires-Dist: scikit-image==0.25.2; extra == "frozen"
|
|
312
312
|
Requires-Dist: scikit-learn==1.6.1; extra == "frozen"
|
|
313
313
|
Requires-Dist: scipy==1.15.3; extra == "frozen"
|
|
@@ -321,7 +321,7 @@ Requires-Dist: soupsieve==3.0.3; extra == "frozen"
|
|
|
321
321
|
Requires-Dist: sqids==0.5.1; extra == "frozen"
|
|
322
322
|
Requires-Dist: sqlparse==0.6.0; extra == "frozen"
|
|
323
323
|
Requires-Dist: stack-data==0.6.3; extra == "frozen"
|
|
324
|
-
Requires-Dist: starlette==1.
|
|
324
|
+
Requires-Dist: starlette==1.9.0; extra == "frozen"
|
|
325
325
|
Requires-Dist: structlog==26.1.0; extra == "frozen"
|
|
326
326
|
Requires-Dist: sunpy==6.1.1; extra == "frozen"
|
|
327
327
|
Requires-Dist: svcs==26.2.0; extra == "frozen"
|
|
@@ -332,7 +332,7 @@ Requires-Dist: termcolor==3.3.0; extra == "frozen"
|
|
|
332
332
|
Requires-Dist: terminado==0.18.1; extra == "frozen"
|
|
333
333
|
Requires-Dist: text-unidecode==1.3; extra == "frozen"
|
|
334
334
|
Requires-Dist: threadpoolctl==3.7.0; extra == "frozen"
|
|
335
|
-
Requires-Dist: tifffile==2026.
|
|
335
|
+
Requires-Dist: tifffile==2026.10.15; extra == "frozen"
|
|
336
336
|
Requires-Dist: tinycss2==1.5.1; extra == "frozen"
|
|
337
337
|
Requires-Dist: tornado==6.5.10; extra == "frozen"
|
|
338
338
|
Requires-Dist: tqdm==4.70.1; extra == "frozen"
|
|
@@ -356,7 +356,7 @@ Requires-Dist: wcwidth==0.9.2; extra == "frozen"
|
|
|
356
356
|
Requires-Dist: webcolors==25.10.0; extra == "frozen"
|
|
357
357
|
Requires-Dist: webencodings==0.6.1; extra == "frozen"
|
|
358
358
|
Requires-Dist: websocket-client==1.9.2; extra == "frozen"
|
|
359
|
-
Requires-Dist: websockets==17.
|
|
359
|
+
Requires-Dist: websockets==17.3; extra == "frozen"
|
|
360
360
|
Requires-Dist: wirerope==1.0.0; extra == "frozen"
|
|
361
361
|
Requires-Dist: wrapt==2.5.1; extra == "frozen"
|
|
362
362
|
Requires-Dist: yamale==6.1.0; extra == "frozen"
|
|
@@ -492,7 +492,7 @@ Development
|
|
|
492
492
|
-----------
|
|
493
493
|
.. code-block:: bash
|
|
494
494
|
|
|
495
|
-
git clone git@bitbucket.org:dkistdc/dkist-processing-visp.git
|
|
495
|
+
git clone git@ssh.bitbucket.org:dkistdc/dkist-processing-visp.git
|
|
496
496
|
cd dkist-processing-visp
|
|
497
497
|
pre-commit install
|
|
498
498
|
pip install -e .[test]
|
|
@@ -127,7 +127,7 @@ Development
|
|
|
127
127
|
-----------
|
|
128
128
|
.. code-block:: bash
|
|
129
129
|
|
|
130
|
-
git clone git@bitbucket.org:dkistdc/dkist-processing-visp.git
|
|
130
|
+
git clone git@ssh.bitbucket.org:dkistdc/dkist-processing-visp.git
|
|
131
131
|
cd dkist-processing-visp
|
|
132
132
|
pre-commit install
|
|
133
133
|
pip install -e .[test]
|
{dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/__init__.py
RENAMED
|
@@ -5,7 +5,6 @@ from dkist_processing_visp.tasks.background_light import *
|
|
|
5
5
|
from dkist_processing_visp.tasks.dark import *
|
|
6
6
|
from dkist_processing_visp.tasks.geometric import *
|
|
7
7
|
from dkist_processing_visp.tasks.instrument_polarization import *
|
|
8
|
-
from dkist_processing_visp.tasks.l1_output_data import *
|
|
9
8
|
from dkist_processing_visp.tasks.lamp import *
|
|
10
9
|
from dkist_processing_visp.tasks.make_movie_frames import *
|
|
11
10
|
from dkist_processing_visp.tasks.parse import *
|
|
@@ -4,7 +4,6 @@ from collections import defaultdict
|
|
|
4
4
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
import scipy.ndimage as spnd
|
|
7
|
-
from astropy.io import fits
|
|
8
7
|
from dkist_processing_common.codecs.fits import fits_access_decoder
|
|
9
8
|
from dkist_processing_common.codecs.fits import fits_array_decoder
|
|
10
9
|
from dkist_processing_common.codecs.fits import fits_array_encoder
|
|
@@ -513,17 +512,13 @@ class InstrumentPolarizationCalibration(
|
|
|
513
512
|
|
|
514
513
|
def record_polcal_quality_metrics(self, beam: int, polcal_fitter: PolcalFitter):
|
|
515
514
|
"""Record various quality metrics from PolCal fits."""
|
|
516
|
-
self.
|
|
515
|
+
self.quality_metrics_polcal(
|
|
517
516
|
polcal_fitter=polcal_fitter,
|
|
518
517
|
label=f"Beam {beam}",
|
|
519
518
|
# Yes, the first bin is actually hard-coded right now
|
|
520
519
|
bin_nums=[1, self.parameters.polcal_num_spatial_bins],
|
|
521
520
|
bin_labels=["spectral", "spatial"],
|
|
522
|
-
|
|
523
|
-
# By using the ``skip_recording_constant_pars`` switch we DON'T record the "polcal constant parameters" metric
|
|
524
|
-
# for beam 2. This is because both beam 1 and beam 2 will have the same table. The way `*-common` is built
|
|
525
|
-
# it will look for all metrics for both beam 1 and beam 2 so if we did save that metric for beam 2 then the
|
|
526
|
-
# table would show up twice in the quality report. The following line avoids that.
|
|
521
|
+
# Both beams use the same constant parameters; record the table once.
|
|
527
522
|
skip_recording_constant_pars=beam != 1,
|
|
528
523
|
)
|
|
529
524
|
|
{dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/solar.py
RENAMED
|
@@ -13,6 +13,10 @@ from dkist_processing_common.codecs.asdf import asdf_encoder
|
|
|
13
13
|
from dkist_processing_common.codecs.fits import fits_access_decoder
|
|
14
14
|
from dkist_processing_common.codecs.fits import fits_array_decoder
|
|
15
15
|
from dkist_processing_common.codecs.fits import fits_array_encoder
|
|
16
|
+
from dkist_processing_common.models.quality import FloatSeriesData
|
|
17
|
+
from dkist_processing_common.models.quality import MultiPlotData
|
|
18
|
+
from dkist_processing_common.models.quality import QualityMetric
|
|
19
|
+
from dkist_processing_common.models.quality import XYData
|
|
16
20
|
from dkist_processing_common.models.task_name import TaskName
|
|
17
21
|
from dkist_processing_common.tasks.mixin.quality import QualityMixin
|
|
18
22
|
from dkist_processing_math.arithmetic import closest_datetime
|
|
@@ -1038,42 +1042,184 @@ class SolarCalibration(
|
|
|
1038
1042
|
fit_result: FitResult,
|
|
1039
1043
|
vignette_corrected_gain: np.ndarray,
|
|
1040
1044
|
) -> None:
|
|
1041
|
-
"""
|
|
1042
|
-
Save vignette fit results to disk for later quality metric building.
|
|
1043
|
-
|
|
1044
|
-
We save the atlas fit of the initial vignette estimation and the global solar spectrum derived from the
|
|
1045
|
-
vignette-corrected 2D gain images.
|
|
1046
|
-
"""
|
|
1045
|
+
"""Write complete quality metrics for the initial and final vignette corrections."""
|
|
1047
1046
|
logger.info(f"Recording initial vignette quality data for {beam = }")
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1047
|
+
self._write_first_vignette_metric(beam, representative_spectrum, fit_result)
|
|
1048
|
+
|
|
1049
|
+
logger.info(f"Recording final vignette-corrected gain quality data for {beam = }")
|
|
1050
|
+
self._write_final_vignette_metric(
|
|
1051
|
+
beam, fit_result.best_fit_wavelength_vector, vignette_corrected_gain
|
|
1052
|
+
)
|
|
1053
|
+
|
|
1054
|
+
def _write_first_vignette_metric(
|
|
1055
|
+
self, beam: int, representative_spectrum: np.ndarray, fit_result: FitResult
|
|
1056
|
+
) -> None:
|
|
1057
|
+
"""Write the initial atlas-with-continuum fit and residuals as a complete metric."""
|
|
1058
|
+
wave_vec = fit_result.best_fit_wavelength_vector
|
|
1059
|
+
input_spectrum = representative_spectrum
|
|
1060
|
+
best_fit_atlas = fit_result.best_fit_atlas
|
|
1061
|
+
continuum = fit_result.best_fit_continuum
|
|
1062
|
+
residuals = fit_result.minimizer_result.residual
|
|
1063
|
+
finite_idx = (
|
|
1064
|
+
np.isfinite(wave_vec)
|
|
1065
|
+
& np.isfinite(input_spectrum)
|
|
1066
|
+
& np.isfinite(best_fit_atlas)
|
|
1067
|
+
& np.isfinite(continuum)
|
|
1068
|
+
& np.isfinite(residuals)
|
|
1069
|
+
)
|
|
1070
|
+
wave_vec = wave_vec[finite_idx].tolist()
|
|
1071
|
+
input_spectrum = input_spectrum[finite_idx].tolist()
|
|
1072
|
+
best_fit_atlas = best_fit_atlas[finite_idx].tolist()
|
|
1073
|
+
continuum = continuum[finite_idx].tolist()
|
|
1074
|
+
residuals = residuals[finite_idx].tolist()
|
|
1075
|
+
|
|
1076
|
+
fit_series = {
|
|
1077
|
+
"Raw input spectrum": FloatSeriesData(x_values=wave_vec, y_values=input_spectrum),
|
|
1078
|
+
"Best fit atlas": FloatSeriesData(x_values=wave_vec, y_values=best_fit_atlas),
|
|
1079
|
+
"Best fit continuum": FloatSeriesData(x_values=wave_vec, y_values=continuum),
|
|
1054
1080
|
}
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1081
|
+
|
|
1082
|
+
fit_plot_kwargs = {
|
|
1083
|
+
"Raw input spectrum": {
|
|
1084
|
+
"ls": "-",
|
|
1085
|
+
"ms": 0,
|
|
1086
|
+
"color": "#FAA61C",
|
|
1087
|
+
"zorder": 2.0,
|
|
1088
|
+
"lw": 4,
|
|
1089
|
+
"alpha": 0.6,
|
|
1090
|
+
},
|
|
1091
|
+
"Best fit atlas": {"color": "k", "ls": "-", "ms": 0, "zorder": 2.1},
|
|
1092
|
+
"Best fit continuum": {"ls": "-", "ms": 0, "color": "g", "zorder": 2.2},
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
fit_plot = XYData(
|
|
1096
|
+
xlabel="Wavelength [nm]",
|
|
1097
|
+
ylabel="Signal",
|
|
1098
|
+
series_data=fit_series,
|
|
1099
|
+
plot_kwargs=fit_plot_kwargs,
|
|
1100
|
+
sort_series=False,
|
|
1101
|
+
)
|
|
1102
|
+
|
|
1103
|
+
residuals_series = {"Residuals": FloatSeriesData(x_values=wave_vec, y_values=residuals)}
|
|
1104
|
+
residuals_plot_kwargs = {"Residuals": {"ls": "-", "color": "k", "ms": 0}}
|
|
1105
|
+
|
|
1106
|
+
y_min = np.nanpercentile(residuals, 2)
|
|
1107
|
+
y_max = np.nanpercentile(residuals, 98)
|
|
1108
|
+
y_range = y_max - y_min
|
|
1109
|
+
y_min -= 0.1 * y_range
|
|
1110
|
+
y_max += 0.1 * y_range
|
|
1111
|
+
residuals_plot = XYData(
|
|
1112
|
+
xlabel="Wavelength [nm]",
|
|
1113
|
+
ylabel=r"$\frac{\mathrm{Obs - Atlas}}{\mathrm{Obs}}$",
|
|
1114
|
+
series_data=residuals_series,
|
|
1115
|
+
plot_kwargs=residuals_plot_kwargs,
|
|
1116
|
+
ylim=(y_min, y_max),
|
|
1117
|
+
)
|
|
1118
|
+
|
|
1119
|
+
plot_list = [fit_plot, residuals_plot]
|
|
1120
|
+
height_ratios = [1.5, 1.0]
|
|
1121
|
+
|
|
1122
|
+
full_plot = MultiPlotData(
|
|
1123
|
+
top_to_bottom_plot_list=plot_list,
|
|
1124
|
+
match_x_axes=True,
|
|
1125
|
+
no_gap=True,
|
|
1126
|
+
top_to_bottom_height_ratios=height_ratios,
|
|
1059
1127
|
)
|
|
1060
1128
|
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
"
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1129
|
+
metric = QualityMetric(
|
|
1130
|
+
name=f"Initial Vignette Estimation - Beam {beam}",
|
|
1131
|
+
description="These plots show the solar atlas fit used to estimate the initial, 1D spectral vignette "
|
|
1132
|
+
"present in solar gain frames. The vignette signature is taken to be the fit continuum shown.",
|
|
1133
|
+
metric_code=VispMetricCode.solar_first_vignette,
|
|
1134
|
+
facet=f"Beam {beam}",
|
|
1135
|
+
multi_plot_data=full_plot,
|
|
1136
|
+
)
|
|
1137
|
+
|
|
1138
|
+
self._write_quality_metric(metric)
|
|
1139
|
+
|
|
1140
|
+
def _write_final_vignette_metric(
|
|
1141
|
+
self, beam: int, output_wave_vec: np.ndarray, vignette_corrected_gain: np.ndarray
|
|
1142
|
+
) -> None:
|
|
1143
|
+
"""Write the quality of the vignette correction on solar gain data."""
|
|
1144
|
+
finite_gain = np.isfinite(vignette_corrected_gain)
|
|
1145
|
+
valid_rows = np.isfinite(output_wave_vec) & np.any(finite_gain, axis=1)
|
|
1146
|
+
output_wave_vec = output_wave_vec[valid_rows]
|
|
1147
|
+
gain = np.where(finite_gain[valid_rows], vignette_corrected_gain[valid_rows], np.nan)
|
|
1148
|
+
median_spec = np.nanmedian(gain, axis=1)
|
|
1149
|
+
low_deviation = np.nanpercentile(gain, 5, axis=1)
|
|
1150
|
+
high_deviation = np.nanpercentile(gain, 95, axis=1)
|
|
1151
|
+
finite_idx = (
|
|
1152
|
+
np.isfinite(output_wave_vec)
|
|
1153
|
+
& np.isfinite(median_spec)
|
|
1154
|
+
& np.isfinite(low_deviation)
|
|
1155
|
+
& np.isfinite(high_deviation)
|
|
1156
|
+
)
|
|
1157
|
+
wave_vec = output_wave_vec[finite_idx].tolist()
|
|
1158
|
+
median_spec = median_spec[finite_idx].tolist()
|
|
1159
|
+
diff = (high_deviation[finite_idx] - low_deviation[finite_idx]).tolist()
|
|
1160
|
+
low_deviation = low_deviation[finite_idx].tolist()
|
|
1161
|
+
high_deviation = high_deviation[finite_idx].tolist()
|
|
1162
|
+
|
|
1163
|
+
bounds_series = {
|
|
1164
|
+
"Median solar signal": FloatSeriesData(x_values=wave_vec, y_values=median_spec),
|
|
1165
|
+
"5th percentile bounds": FloatSeriesData(x_values=wave_vec, y_values=low_deviation),
|
|
1166
|
+
"95th percentile bounds": FloatSeriesData(x_values=wave_vec, y_values=high_deviation),
|
|
1070
1167
|
}
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1168
|
+
|
|
1169
|
+
bounds_plot_kwargs = {
|
|
1170
|
+
"Median solar signal": {"ls": "-", "color": "k", "alpha": 0.8, "ms": 0, "zorder": 2.2},
|
|
1171
|
+
"5th percentile bounds": {"color": "#1E317A", "ls": "-", "ms": 0, "zorder": 2.0},
|
|
1172
|
+
"95th percentile bounds": {"ls": "-", "color": "#FAA61C", "ms": 0, "zorder": 2.1},
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
bounds_plot = XYData(
|
|
1176
|
+
xlabel="Wavelength [nm]",
|
|
1177
|
+
ylabel="Signal",
|
|
1178
|
+
series_data=bounds_series,
|
|
1179
|
+
plot_kwargs=bounds_plot_kwargs,
|
|
1180
|
+
sort_series=False,
|
|
1075
1181
|
)
|
|
1076
1182
|
|
|
1183
|
+
residuals_series = {"Residuals": FloatSeriesData(x_values=wave_vec, y_values=diff)}
|
|
1184
|
+
residuals_plot_kwargs = {"Residuals": {"ls": "-", "color": "k", "ms": 0}}
|
|
1185
|
+
|
|
1186
|
+
y_min = np.nanpercentile(diff, 5)
|
|
1187
|
+
y_max = np.nanpercentile(diff, 95)
|
|
1188
|
+
y_range = y_max - y_min
|
|
1189
|
+
y_min -= 0.1 * y_range
|
|
1190
|
+
y_max += 0.1 * y_range
|
|
1191
|
+
residuals_plot = XYData(
|
|
1192
|
+
xlabel="Wavelength [nm]",
|
|
1193
|
+
ylabel="95th - 5th percentile",
|
|
1194
|
+
series_data=residuals_series,
|
|
1195
|
+
plot_kwargs=residuals_plot_kwargs,
|
|
1196
|
+
ylim=(y_min, y_max),
|
|
1197
|
+
)
|
|
1198
|
+
|
|
1199
|
+
plot_list = [bounds_plot, residuals_plot]
|
|
1200
|
+
height_ratios = [1.5, 1.0]
|
|
1201
|
+
|
|
1202
|
+
full_plot = MultiPlotData(
|
|
1203
|
+
top_to_bottom_plot_list=plot_list,
|
|
1204
|
+
match_x_axes=True,
|
|
1205
|
+
no_gap=True,
|
|
1206
|
+
top_to_bottom_height_ratios=height_ratios,
|
|
1207
|
+
)
|
|
1208
|
+
|
|
1209
|
+
metric = QualityMetric(
|
|
1210
|
+
name=f"Final Vignette Estimation - Beam {beam}",
|
|
1211
|
+
description="These plots show how well the full, 2D vignette signal was removed from solar gain frames. "
|
|
1212
|
+
"The median solar signal shows a full spatial median of the vignette corrected solar gain; "
|
|
1213
|
+
"this should be very close to the true solar spectrum incident on the DKIST optics. "
|
|
1214
|
+
"The 5th and 95th percentile ranges show how stable this spectrum is along the spatial dimension "
|
|
1215
|
+
"after removing the vignette signal.",
|
|
1216
|
+
metric_code=VispMetricCode.solar_final_vignette,
|
|
1217
|
+
facet=f"Beam {beam}",
|
|
1218
|
+
multi_plot_data=full_plot,
|
|
1219
|
+
)
|
|
1220
|
+
|
|
1221
|
+
self._write_quality_metric(metric)
|
|
1222
|
+
|
|
1077
1223
|
def _log_wavecal_parameters(
|
|
1078
1224
|
self,
|
|
1079
1225
|
dispersion: Quantity,
|
|
@@ -13,6 +13,7 @@ from dkist_processing_common.codecs.basemodel import basemodel_encoder
|
|
|
13
13
|
from dkist_processing_common.manual import ManualProcessing
|
|
14
14
|
from dkist_processing_common.models.fits_access import MetadataKey
|
|
15
15
|
from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
|
|
16
|
+
from dkist_processing_common.tasks import AssembleQualityData
|
|
16
17
|
from dkist_processing_common.tasks import CreateTrialQualityReport
|
|
17
18
|
from dkist_processing_common.tasks import QualityL1Metrics
|
|
18
19
|
from dkist_processing_common.tasks import WorkflowTaskBase
|
|
@@ -27,7 +28,6 @@ from dkist_processing_visp.tasks.background_light import BackgroundLightCalibrat
|
|
|
27
28
|
from dkist_processing_visp.tasks.dark import DarkCalibration
|
|
28
29
|
from dkist_processing_visp.tasks.geometric import GeometricCalibration
|
|
29
30
|
from dkist_processing_visp.tasks.instrument_polarization import InstrumentPolarizationCalibration
|
|
30
|
-
from dkist_processing_visp.tasks.l1_output_data import VispAssembleQualityData
|
|
31
31
|
from dkist_processing_visp.tasks.lamp import LampCalibration
|
|
32
32
|
from dkist_processing_visp.tasks.science import ScienceCalibration
|
|
33
33
|
from dkist_processing_visp.tasks.solar import SolarCalibration
|
|
@@ -321,7 +321,7 @@ def main(
|
|
|
321
321
|
|
|
322
322
|
manual_processing_run.run_task(task=write_L1_files_task(prefix=prefix))
|
|
323
323
|
manual_processing_run.run_task(task=QualityL1Metrics)
|
|
324
|
-
manual_processing_run.run_task(task=
|
|
324
|
+
manual_processing_run.run_task(task=AssembleQualityData)
|
|
325
325
|
manual_processing_run.run_task(task=ValidateL1Output)
|
|
326
326
|
manual_processing_run.run_task(task=MakeVispMovieFrames)
|
|
327
327
|
manual_processing_run.run_task(task=AssembleVispMovie)
|
|
@@ -10,6 +10,7 @@ from random import randint
|
|
|
10
10
|
from dkist_processing_common.codecs.basemodel import basemodel_encoder
|
|
11
11
|
from dkist_processing_common.manual import ManualProcessing
|
|
12
12
|
from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
|
|
13
|
+
from dkist_processing_common.tasks import AssembleQualityData
|
|
13
14
|
from dkist_processing_common.tasks import CreateTrialQualityReport
|
|
14
15
|
from dkist_processing_common.tasks import QualityL1Metrics
|
|
15
16
|
from dkist_processing_common.tasks import WorkflowTaskBase
|
|
@@ -19,7 +20,6 @@ from dkist_processing_visp.models.tags import VispTag
|
|
|
19
20
|
from dkist_processing_visp.tasks import AssembleVispMovie
|
|
20
21
|
from dkist_processing_visp.tasks import MakeVispMovieFrames
|
|
21
22
|
from dkist_processing_visp.tasks import ScienceCalibration
|
|
22
|
-
from dkist_processing_visp.tasks import VispAssembleQualityData
|
|
23
23
|
from dkist_processing_visp.tasks import VispWriteL1Frame
|
|
24
24
|
from dkist_processing_visp.tasks.background_light import BackgroundLightCalibration
|
|
25
25
|
from dkist_processing_visp.tasks.dark import DarkCalibration
|
|
@@ -261,7 +261,7 @@ def main(
|
|
|
261
261
|
|
|
262
262
|
manual_processing_run.run_task(task=VispWriteL1Frame)
|
|
263
263
|
manual_processing_run.run_task(task=QualityL1Metrics)
|
|
264
|
-
manual_processing_run.run_task(task=
|
|
264
|
+
manual_processing_run.run_task(task=AssembleQualityData)
|
|
265
265
|
manual_processing_run.run_task(task=ValidateL1Output)
|
|
266
266
|
manual_processing_run.run_task(task=MakeVispMovieFrames)
|
|
267
267
|
manual_processing_run.run_task(task=AssembleVispMovie)
|
|
@@ -10,6 +10,7 @@ from dkist_processing_common.codecs.basemodel import basemodel_encoder
|
|
|
10
10
|
from dkist_processing_common.codecs.fits import fits_access_decoder
|
|
11
11
|
from dkist_processing_common.manual import ManualProcessing
|
|
12
12
|
from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
|
|
13
|
+
from dkist_processing_common.tasks import AssembleQualityData
|
|
13
14
|
from dkist_processing_common.tasks import CreateTrialAsdf
|
|
14
15
|
from dkist_processing_common.tasks import CreateTrialQualityReport
|
|
15
16
|
from dkist_processing_common.tasks import QualityL1Metrics
|
|
@@ -23,7 +24,6 @@ from dkist_processing_visp.tasks.background_light import BackgroundLightCalibrat
|
|
|
23
24
|
from dkist_processing_visp.tasks.dark import DarkCalibration
|
|
24
25
|
from dkist_processing_visp.tasks.geometric import GeometricCalibration
|
|
25
26
|
from dkist_processing_visp.tasks.instrument_polarization import InstrumentPolarizationCalibration
|
|
26
|
-
from dkist_processing_visp.tasks.l1_output_data import VispAssembleQualityData
|
|
27
27
|
from dkist_processing_visp.tasks.lamp import LampCalibration
|
|
28
28
|
from dkist_processing_visp.tasks.make_movie_frames import MakeVispMovieFrames
|
|
29
29
|
from dkist_processing_visp.tasks.parse import ParseL0VispInputData
|
|
@@ -282,7 +282,7 @@ def main(
|
|
|
282
282
|
manual_processing_run.run_task(task=VispWriteL1Frame)
|
|
283
283
|
manual_processing_run.run_task(task=VispWriteL1DatasetExtras)
|
|
284
284
|
manual_processing_run.run_task(task=QualityL1Metrics)
|
|
285
|
-
manual_processing_run.run_task(task=
|
|
285
|
+
manual_processing_run.run_task(task=AssembleQualityData)
|
|
286
286
|
manual_processing_run.run_task(task=ValidateL1Output)
|
|
287
287
|
manual_processing_run.run_task(task=MakeVispMovieFrames)
|
|
288
288
|
manual_processing_run.run_task(task=AssembleVispMovie)
|
|
@@ -148,7 +148,7 @@ def test_instrument_polarization_calibration_task(
|
|
|
148
148
|
|
|
149
149
|
# Don't test place-holder QA stuff for now
|
|
150
150
|
quality_metric_mocker = mocker.patch(
|
|
151
|
-
"dkist_processing_visp.tasks.instrument_polarization.InstrumentPolarizationCalibration.
|
|
151
|
+
"dkist_processing_visp.tasks.instrument_polarization.InstrumentPolarizationCalibration.quality_metrics_polcal",
|
|
152
152
|
autospec=True,
|
|
153
153
|
)
|
|
154
154
|
|