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.
Files changed (122) hide show
  1. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/CHANGELOG.rst +21 -0
  2. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/PKG-INFO +22 -22
  3. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/README.rst +1 -1
  4. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/__init__.py +0 -1
  5. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/instrument_polarization.py +2 -7
  6. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/solar.py +175 -29
  7. {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
  8. {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
  9. {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
  10. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_instrument_polarization.py +1 -1
  11. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_solar.py +87 -24
  12. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/workflows/l0_processing.py +4 -4
  13. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/workflows/trial_workflows.py +4 -4
  14. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/PKG-INFO +22 -22
  15. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/SOURCES.txt +0 -2
  16. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/requires.txt +20 -20
  17. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/scm_file_list.json +0 -2
  18. dkist_processing_visp-5.10.0/dkist_processing_visp.egg-info/scm_version.json +8 -0
  19. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/pyproject.toml +22 -22
  20. dkist_processing_visp-5.9.2/dkist_processing_visp/tasks/l1_output_data.py +0 -217
  21. dkist_processing_visp-5.9.2/dkist_processing_visp/tests/test_assemble_quality.py +0 -128
  22. dkist_processing_visp-5.9.2/dkist_processing_visp.egg-info/scm_version.json +0 -8
  23. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.gitignore +0 -0
  24. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.pre-commit-config.yaml +0 -0
  25. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.readthedocs.yml +0 -0
  26. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.rovodev/.review-agent.md +0 -0
  27. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/.snyk +0 -0
  28. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/SCIENCE_CHANGELOG.rst +0 -0
  29. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/bitbucket-pipelines.yml +0 -0
  30. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/changelog/.gitempty +0 -0
  31. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/__init__.py +0 -0
  32. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/config.py +0 -0
  33. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/fonts/Lato-Regular.ttf +0 -0
  34. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/__init__.py +0 -0
  35. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/constants.py +0 -0
  36. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/dataset_extras.py +0 -0
  37. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/fits_access.py +0 -0
  38. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/metric_code.py +0 -0
  39. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/parameters.py +0 -0
  40. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/tags.py +0 -0
  41. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/models/task_name.py +0 -0
  42. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/__init__.py +0 -0
  43. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/map_repeats.py +0 -0
  44. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/modulator_states.py +0 -0
  45. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/polarimeter_mode.py +0 -0
  46. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/raster_step.py +0 -0
  47. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/spectrograph_configuration.py +0 -0
  48. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/time.py +0 -0
  49. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/visp_l0_fits_access.py +0 -0
  50. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/parsers/visp_l1_fits_access.py +0 -0
  51. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/assemble_movie.py +0 -0
  52. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/background_light.py +0 -0
  53. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/dark.py +0 -0
  54. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/geometric.py +0 -0
  55. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/lamp.py +0 -0
  56. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/make_movie_frames.py +0 -0
  57. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/mixin/__init__.py +0 -0
  58. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/mixin/beam_access.py +0 -0
  59. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/mixin/corrections.py +0 -0
  60. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/mixin/downsample.py +0 -0
  61. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/parse.py +0 -0
  62. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/polcal_as_science.py +0 -0
  63. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/quality_metrics.py +0 -0
  64. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/science.py +0 -0
  65. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/visp_base.py +0 -0
  66. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/wavelength_calibration.py +0 -0
  67. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/write_dataset_extras.py +0 -0
  68. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tasks/write_l1.py +0 -0
  69. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/README.rst +0 -0
  70. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/__init__.py +0 -0
  71. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/conftest.py +0 -0
  72. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/header_models.py +0 -0
  73. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/local_trial_workflows/__init__.py +0 -0
  74. {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
  75. {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
  76. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_assemble_movie.py +0 -0
  77. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_background_light.py +0 -0
  78. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_dark.py +0 -0
  79. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_downsample.py +0 -0
  80. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_fits_access.py +0 -0
  81. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_geometric.py +0 -0
  82. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_lamp.py +0 -0
  83. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_make_movie_frames.py +0 -0
  84. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_map_repeats.py +0 -0
  85. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_parameters.py +0 -0
  86. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_parse.py +0 -0
  87. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_polcal_as_science.py +0 -0
  88. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_quality.py +0 -0
  89. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_science.py +0 -0
  90. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_trial_create_quality_report.py +0 -0
  91. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_visp_base.py +0 -0
  92. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_visp_constants.py +0 -0
  93. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_wavelength_calibration.py +0 -0
  94. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_workflows.py +0 -0
  95. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_write_dataset_extras.py +0 -0
  96. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/tests/test_write_l1.py +0 -0
  97. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/workflows/__init__.py +0 -0
  98. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp/workflows/single_task_workflows.py +0 -0
  99. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/dependency_links.txt +0 -0
  100. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/dkist_processing_visp.egg-info/top_level.txt +0 -0
  101. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/Makefile +0 -0
  102. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/background_light.rst +0 -0
  103. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/changelog.rst +0 -0
  104. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/conf.py +0 -0
  105. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/dataset_extras.rst +0 -0
  106. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/gain_correction.rst +0 -0
  107. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/geometric.rst +0 -0
  108. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/index.rst +0 -0
  109. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/l0_to_l1_visp.rst +0 -0
  110. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/l0_to_l1_visp_full-trial.rst +0 -0
  111. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/landing_page.rst +0 -0
  112. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/make.bat +0 -0
  113. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/polarization_calibration.rst +0 -0
  114. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/requirements.txt +0 -0
  115. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/requirements_table.rst +0 -0
  116. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/science_calibration.rst +0 -0
  117. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/scientific_changelog.rst +0 -0
  118. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/docs/wavelength_calibration.rst +0 -0
  119. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/licenses/LICENSE.rst +0 -0
  120. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/science_towncrier.sh +0 -0
  121. {dkist_processing_visp-5.9.2 → dkist_processing_visp-5.10.0}/setup.cfg +0 -0
  122. {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.9.2
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.6.1
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.4; extra == "frozen"
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.21.0; extra == "frozen"
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.12.1.3.27; extra == "frozen"
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.113; extra == "frozen"
122
- Requires-Dist: botocore==1.43.113; extra == "frozen"
123
- Requires-Dist: cachetools==7.2.1; extra == "frozen"
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.7.22; extra == "frozen"
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.6.1; extra == "frozen"
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.9.2; extra == "frozen"
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.2.1; extra == "frozen"
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.12.0; extra == "frozen"
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.3.4; extra == "frozen"
217
- Requires-Dist: more-itertools==11.2.0; extra == "frozen"
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.0; extra == "frozen"
271
- Requires-Dist: pluggy==1.6.0; extra == "frozen"
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.2; extra == "frozen"
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.8.0; extra == "frozen"
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.9.20; extra == "frozen"
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.2; extra == "frozen"
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]
@@ -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.quality_store_polcal_results(
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
- ## This is a bit of a hack and thus needs some explanation
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
 
@@ -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
- first_vignette_quality_outputs = {
1049
- "output_wave_vec": fit_result.best_fit_wavelength_vector,
1050
- "input_spectrum": representative_spectrum,
1051
- "best_fit_atlas": fit_result.best_fit_atlas,
1052
- "best_fit_continuum": fit_result.best_fit_continuum,
1053
- "residuals": fit_result.minimizer_result.residual,
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
- self.write(
1056
- data=first_vignette_quality_outputs,
1057
- tags=[VispTag.quality(VispMetricCode.solar_first_vignette), VispTag.beam(beam)],
1058
- encoder=asdf_encoder,
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
- logger.info(f"Recording final vignette-correced gain quality data for {beam = }")
1062
- global_median = np.nanmedian(vignette_corrected_gain, axis=1)
1063
- low_deviation = np.nanpercentile(vignette_corrected_gain, 5, axis=1)
1064
- high_deviation = np.nanpercentile(vignette_corrected_gain, 95, axis=1)
1065
- final_correction_quality_outputs = {
1066
- "output_wave_vec": fit_result.best_fit_wavelength_vector,
1067
- "median_spec": global_median,
1068
- "low_deviation": low_deviation,
1069
- "high_deviation": high_deviation,
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
- self.write(
1072
- data=final_correction_quality_outputs,
1073
- tags=[VispTag.quality(VispMetricCode.solar_final_vignette), VispTag.beam(beam)],
1074
- encoder=asdf_encoder,
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=VispAssembleQualityData)
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=VispAssembleQualityData)
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=VispAssembleQualityData)
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.quality_store_polcal_results",
151
+ "dkist_processing_visp.tasks.instrument_polarization.InstrumentPolarizationCalibration.quality_metrics_polcal",
152
152
  autospec=True,
153
153
  )
154
154