dkist-processing-common 14.6.0__tar.gz → 14.7.0rc1__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_common-14.6.0 → dkist_processing_common-14.7.0rc1}/CHANGELOG.rst +9 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/PKG-INFO +2 -2
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/README.rst +1 -1
- dkist_processing_common-14.7.0rc1/changelog/350.misc.rst +1 -0
- dkist_processing_common-14.7.0rc1/changelog/356.doc.rst +1 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/quality.py +18 -134
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/l1_output_data.py +0 -13
- dkist_processing_common-14.6.0/dkist_processing_common/tasks/mixin/quality/_metrics.py → dkist_processing_common-14.7.0rc1/dkist_processing_common/tasks/mixin/quality.py +279 -244
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/quality_metrics.py +11 -6
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_assemble_quality.py +97 -159
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_quality.py +53 -1
- dkist_processing_common-14.7.0rc1/dkist_processing_common/tests/test_quality_mixin.py +413 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/PKG-INFO +2 -2
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/SOURCES.txt +3 -3
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/scm_file_list.json +3 -3
- dkist_processing_common-14.7.0rc1/dkist_processing_common.egg-info/scm_version.json +8 -0
- dkist_processing_common-14.6.0/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -8
- dkist_processing_common-14.6.0/dkist_processing_common/tasks/mixin/quality/_base.py +0 -218
- dkist_processing_common-14.6.0/dkist_processing_common/tests/test_quality_mixin.py +0 -726
- dkist_processing_common-14.6.0/dkist_processing_common.egg-info/scm_version.json +0 -8
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/.gitignore +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/.pre-commit-config.yaml +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/.readthedocs.yml +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/.rovodev/.review-agent.md +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/.snyk +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/changelog/.gitempty +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/constants.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/graphql.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/scratch.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/tags.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/array.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/asdf.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/basemodel.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/bytes.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/fits.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/iobase.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/json.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/path.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/quality.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/str.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/config.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/fonts/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/manual.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/constants.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/dkist_location.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/extras.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/fits_access.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/flower_pot.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/fried_parameter.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/graphql.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/input_dataset.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/message.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/message_queue_binding.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/metric_code.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/parameters.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/tags.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/task_name.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/telemetry.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/wavelength.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/average_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/cs_step.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/id_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/lookup_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/near_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/observing_program_id_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/quality.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/retarder.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/task.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/time.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/unique_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/wavelength.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/assemble_movie.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/globus.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/output_data_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/teardown.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/trial_catalog.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/trial_output_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/write_extra.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/write_l1.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/write_l1_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/conftest.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_codecs.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_constants.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_construct_dataset_extras.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_cs_step.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_dkist_location.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_fits_access.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_flower_pot.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_input_dataset.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_manual_processing.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_output_data_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_parameters.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_scratch.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_stems.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_tags.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_task_name.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_task_parsing.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_teardown.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_trial_catalog.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_write_l1.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/requires.txt +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/top_level.txt +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/docs/Makefile +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/docs/changelog.rst +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/docs/conf.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/docs/index.rst +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/docs/landing_page.rst +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/docs/make.bat +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/docs/requirements.txt +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/licenses/LICENSE.rst +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/pyproject.toml +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.7.0rc1}/setup.cfg +0 -0
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
v14.6.1 (2026-10-14)
|
|
2
|
+
====================
|
|
3
|
+
|
|
4
|
+
Bugfixes
|
|
5
|
+
--------
|
|
6
|
+
|
|
7
|
+
- Exclude negative light-level readings from the LIGHT_LEVEL quality plot and summary statistics. Omit the metric when only negative readings remain. (`#355 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/355>`__)
|
|
8
|
+
|
|
9
|
+
|
|
1
10
|
v14.6.0 (2026-10-08)
|
|
2
11
|
====================
|
|
3
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-common
|
|
3
|
-
Version: 14.
|
|
3
|
+
Version: 14.7.0rc1
|
|
4
4
|
Summary: Common task classes used by the DKIST science data processing pipelines
|
|
5
5
|
Author-email: NSO / AURA <dkistdc@nso.edu>
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -222,7 +222,7 @@ To run the tests locally, clone the repository and install the package in editab
|
|
|
222
222
|
|
|
223
223
|
.. code-block:: bash
|
|
224
224
|
|
|
225
|
-
git clone git@bitbucket.org:dkistdc/dkist-processing-common.git
|
|
225
|
+
git clone git@ssh.bitbucket.org:dkistdc/dkist-processing-common.git
|
|
226
226
|
cd dkist-processing-common
|
|
227
227
|
pre-commit install
|
|
228
228
|
pip install -e .[test]
|
|
@@ -157,7 +157,7 @@ To run the tests locally, clone the repository and install the package in editab
|
|
|
157
157
|
|
|
158
158
|
.. code-block:: bash
|
|
159
159
|
|
|
160
|
-
git clone git@bitbucket.org:dkistdc/dkist-processing-common.git
|
|
160
|
+
git clone git@ssh.bitbucket.org:dkistdc/dkist-processing-common.git
|
|
161
161
|
cd dkist-processing-common
|
|
162
162
|
pre-commit install
|
|
163
163
|
pip install -e .[test]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Convert polcal and solar calibration quality metrics to the new storage-based QualityMetric framework.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Update the README clone command to use Bitbucket's new SSH hostname.
|
|
@@ -19,129 +19,7 @@ from pydantic_core.core_schema import SerializationInfo
|
|
|
19
19
|
from pydantic_core.core_schema import ValidationInfo
|
|
20
20
|
|
|
21
21
|
###########################################################
|
|
22
|
-
#
|
|
23
|
-
# #
|
|
24
|
-
# These will gradually be replaced by #
|
|
25
|
-
# New Quality Models (below) #
|
|
26
|
-
###########################################################
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class Plot2D(BaseModel):
|
|
30
|
-
"""Support class use to hold the data for creating a 2D plot in the quality report."""
|
|
31
|
-
|
|
32
|
-
xlabel: str
|
|
33
|
-
ylabel: str
|
|
34
|
-
series_data: dict[str, list[list[Any]]]
|
|
35
|
-
series_name: str | None = None
|
|
36
|
-
ylabel_horizontal: bool = False
|
|
37
|
-
ylim: tuple[float, float] | None = None
|
|
38
|
-
plot_kwargs: dict[str, dict[str, Any]] = Field(default_factory=dict)
|
|
39
|
-
sort_series: bool = True
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class VerticalMultiPanePlot2D(BaseModel):
|
|
43
|
-
"""
|
|
44
|
-
Support class to hold a multi-pane plot with plots stacked vertically.
|
|
45
|
-
|
|
46
|
-
This type of metric is really geared towards plots that share an X axis and have no gap between them. If you just
|
|
47
|
-
want two separate plots it's probably better to use a list of `Plot2D` objects.
|
|
48
|
-
"""
|
|
49
|
-
|
|
50
|
-
top_to_bottom_plot_list: list[Plot2D]
|
|
51
|
-
match_x_axes: bool = True
|
|
52
|
-
no_gap: bool = True
|
|
53
|
-
top_to_bottom_height_ratios: list[float] | None = None
|
|
54
|
-
|
|
55
|
-
@field_validator("top_to_bottom_height_ratios")
|
|
56
|
-
@classmethod
|
|
57
|
-
def ensure_same_number_of_height_ratios_and_plots(
|
|
58
|
-
cls, height_ratios: list[float] | None, info: ValidationInfo
|
|
59
|
-
) -> list[float]:
|
|
60
|
-
"""
|
|
61
|
-
Make sure that the number of height ratios is the same as the number of plots.
|
|
62
|
-
|
|
63
|
-
Also populates default, same-size ratios if no ratios were given.
|
|
64
|
-
"""
|
|
65
|
-
try:
|
|
66
|
-
plot_list = info.data["top_to_bottom_plot_list"]
|
|
67
|
-
except KeyError:
|
|
68
|
-
# The plot list didn't validate for some reason. We're about to error anyway.
|
|
69
|
-
return [1.0]
|
|
70
|
-
|
|
71
|
-
num_plots = len(plot_list)
|
|
72
|
-
if height_ratios is None:
|
|
73
|
-
return [1.0] * num_plots
|
|
74
|
-
|
|
75
|
-
if len(height_ratios) != num_plots:
|
|
76
|
-
raise ValueError(
|
|
77
|
-
f"The number of items in `top_to_bottom_height_ratios` list ({len(height_ratios)}) is not "
|
|
78
|
-
f"the same as the number of plots ({num_plots})"
|
|
79
|
-
)
|
|
80
|
-
|
|
81
|
-
return height_ratios
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
class SimpleTable(BaseModel):
|
|
85
|
-
"""Support class to hold a simple table to be inserted into the quality report."""
|
|
86
|
-
|
|
87
|
-
rows: list[list[Any]]
|
|
88
|
-
header_row: bool = True
|
|
89
|
-
header_column: bool = False
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
class ModulationMatrixHistograms(BaseModel):
|
|
93
|
-
"""Support class for holding the big ol' grid of histograms that represent the modulation matrix fits."""
|
|
94
|
-
|
|
95
|
-
modmat_list: list[list[list[float]]]
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
class EfficiencyHistograms(BaseModel):
|
|
99
|
-
"""Support class for holding 4 histograms that correspond to efficiencies of the 4 stokes components."""
|
|
100
|
-
|
|
101
|
-
efficiency_list: list[list[float]]
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
class PlotHistogram(BaseModel):
|
|
105
|
-
"""Support class to hold 1D data for plotting a histogram."""
|
|
106
|
-
|
|
107
|
-
xlabel: str
|
|
108
|
-
series_data: dict[str, list[float]]
|
|
109
|
-
series_name: str | None = None
|
|
110
|
-
vertical_lines: dict[str, float] | None
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
class PlotRaincloud(BaseModel):
|
|
114
|
-
"""Support class to hold data series for fancy-ass violin plots."""
|
|
115
|
-
|
|
116
|
-
xlabel: str
|
|
117
|
-
ylabel: str
|
|
118
|
-
categorical_column_name: str
|
|
119
|
-
distribution_column_name: str
|
|
120
|
-
dataframe_json: str
|
|
121
|
-
hue_column_name: str | None
|
|
122
|
-
ylabel_horizontal: bool | None
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
class ReportMetric(BaseModel):
|
|
126
|
-
"""A Quality Report is made up of a list of metrics with the schema defined by this class."""
|
|
127
|
-
|
|
128
|
-
name: str
|
|
129
|
-
description: str
|
|
130
|
-
metric_code: str
|
|
131
|
-
facet: str | None = None
|
|
132
|
-
statement: str | list[str] | None = None
|
|
133
|
-
plot_data: Plot2D | list[Plot2D] | None = None
|
|
134
|
-
multi_plot_data: VerticalMultiPanePlot2D | None = None
|
|
135
|
-
histogram_data: PlotHistogram | list[PlotHistogram] | None = None
|
|
136
|
-
table_data: SimpleTable | list[SimpleTable] | None = None
|
|
137
|
-
modmat_data: ModulationMatrixHistograms | None = None
|
|
138
|
-
efficiency_data: EfficiencyHistograms | None = None
|
|
139
|
-
raincloud_data: PlotRaincloud | None = None
|
|
140
|
-
warnings: list[str] | None = None
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
###########################################################
|
|
144
|
-
# New Quality Models #
|
|
22
|
+
# Quality Models #
|
|
145
23
|
# #
|
|
146
24
|
# These define the interface with dkist-quality #
|
|
147
25
|
# These will eventually get moved to dkist-quality #
|
|
@@ -424,29 +302,34 @@ class MultiPlotData(QualityModel):
|
|
|
424
302
|
class HistogramData(QualityModel):
|
|
425
303
|
"""Histogram Data."""
|
|
426
304
|
|
|
427
|
-
|
|
428
|
-
|
|
305
|
+
xlabel: str
|
|
306
|
+
series_data: dict[str, tuple[FiniteFloat, ...]] = Field(default_factory=dict)
|
|
307
|
+
series_name: str | None = None
|
|
308
|
+
vertical_lines: dict[str, FiniteFloat] | None = None
|
|
429
309
|
|
|
430
310
|
|
|
431
311
|
class ModMatData(QualityModel):
|
|
432
312
|
"""Modulation Matrix Data."""
|
|
433
313
|
|
|
434
|
-
|
|
435
|
-
pass
|
|
314
|
+
modmat_list: tuple[tuple[tuple[FiniteFloat, ...], ...], ...]
|
|
436
315
|
|
|
437
316
|
|
|
438
317
|
class RaincloudData(QualityModel):
|
|
439
318
|
"""Raincloud Data."""
|
|
440
319
|
|
|
441
|
-
|
|
442
|
-
|
|
320
|
+
xlabel: str
|
|
321
|
+
ylabel: str
|
|
322
|
+
categorical_column_name: str
|
|
323
|
+
distribution_column_name: str
|
|
324
|
+
dataframe_json: str
|
|
325
|
+
hue_column_name: str | None = None
|
|
326
|
+
ylabel_horizontal: bool | None = None
|
|
443
327
|
|
|
444
328
|
|
|
445
329
|
class EfficiencyData(QualityModel):
|
|
446
330
|
"""Efficiency Data."""
|
|
447
331
|
|
|
448
|
-
|
|
449
|
-
pass
|
|
332
|
+
efficiency_list: tuple[tuple[FiniteFloat, ...], ...]
|
|
450
333
|
|
|
451
334
|
|
|
452
335
|
def format_facet(v: Any) -> Any:
|
|
@@ -477,9 +360,10 @@ class QualityMetric(QualityModel):
|
|
|
477
360
|
multi_plot_data: MultiPlotData | None = None
|
|
478
361
|
histogram_data: list[HistogramData] | None = None
|
|
479
362
|
table_data: list[TableData] | None = None
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
363
|
+
# The following three metrics are not a list as the quality library does not support a list of these metrics
|
|
364
|
+
modmat_data: ModMatData | None = None
|
|
365
|
+
raincloud_data: RaincloudData | None = None
|
|
366
|
+
efficiency_data: EfficiencyData | None = None
|
|
483
367
|
warnings: list[str] | None = None
|
|
484
368
|
|
|
485
369
|
|
|
@@ -160,25 +160,12 @@ class TransferL1Data(TransferDataBase, GlobusMixin):
|
|
|
160
160
|
class AssembleQualityData(L1OutputDataBase, QualityMixin):
|
|
161
161
|
"""Assemble quality data from the various quality metrics."""
|
|
162
162
|
|
|
163
|
-
@property
|
|
164
|
-
def polcal_label_list(self) -> list[str] | None:
|
|
165
|
-
"""Return the list of labels to look for when building polcal metrics.
|
|
166
|
-
|
|
167
|
-
If no labels are specified then no polcal metrics will be built.
|
|
168
|
-
"""
|
|
169
|
-
return None
|
|
170
|
-
|
|
171
163
|
def run(self):
|
|
172
164
|
"""Run method for the task."""
|
|
173
|
-
# this is the new way, which will eventually supplant the old `quality_assemble_data`
|
|
174
165
|
with self.telemetry_span("Assembling generic quality data"):
|
|
175
166
|
self.compute_and_write_type_counts()
|
|
176
167
|
quality_data = self.assemble_quality_data()
|
|
177
168
|
|
|
178
|
-
# this is the old way, which is being replaced by the new `assemble_quality_data`
|
|
179
|
-
with self.telemetry_span("Assembling quality data by Metric"):
|
|
180
|
-
quality_data += self.quality_assemble_data(polcal_label_list=self.polcal_label_list)
|
|
181
|
-
|
|
182
169
|
with self.telemetry_span(
|
|
183
170
|
f"Saving quality data with {len(quality_data)} metrics to the file system"
|
|
184
171
|
):
|