dkist-processing-common 14.6.0__tar.gz → 14.6.1__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.6.1}/CHANGELOG.rst +9 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/PKG-INFO +1 -1
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/quality_metrics.py +11 -6
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_quality.py +53 -1
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/PKG-INFO +1 -1
- dkist_processing_common-14.6.1/dkist_processing_common.egg-info/scm_version.json +8 -0
- 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.6.1}/.gitignore +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/.pre-commit-config.yaml +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/.readthedocs.yml +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/.rovodev/.review-agent.md +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/.snyk +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/README.rst +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/changelog/.gitempty +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/constants.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/graphql.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/scratch.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/tags.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/array.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/asdf.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/basemodel.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/bytes.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/fits.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/iobase.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/json.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/path.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/quality.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/str.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/config.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/fonts/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/manual.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/constants.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/dkist_location.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/extras.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/fits_access.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/flower_pot.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/fried_parameter.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/graphql.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/input_dataset.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/message.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/message_queue_binding.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/metric_code.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/parameters.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/quality.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/tags.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/task_name.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/telemetry.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/models/wavelength.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/average_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/cs_step.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/id_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/lookup_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/near_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/observing_program_id_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/quality.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/retarder.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/task.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/time.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/unique_bud.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/wavelength.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/assemble_movie.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/l1_output_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/globus.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/output_data_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/teardown.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/trial_catalog.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/trial_output_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/write_extra.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/write_l1.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/write_l1_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/__init__.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/conftest.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_codecs.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_constants.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_construct_dataset_extras.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_cs_step.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_dkist_location.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_fits_access.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_flower_pot.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_input_dataset.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_manual_processing.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_output_data_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_parameters.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_scratch.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_stems.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_tags.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_task_name.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_task_parsing.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_teardown.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_trial_catalog.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_write_l1.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/SOURCES.txt +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/requires.txt +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/scm_file_list.json +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/top_level.txt +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/docs/Makefile +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/docs/changelog.rst +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/docs/conf.py +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/docs/index.rst +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/docs/landing_page.rst +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/docs/make.bat +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/docs/requirements.txt +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/licenses/LICENSE.rst +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/pyproject.toml +0 -0
- {dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/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
|
|
|
@@ -620,10 +620,13 @@ class QualityL1Metrics(WorkflowTaskBase, QualityMixin):
|
|
|
620
620
|
self.write(metric, tags=Tag.quality("GENERIC"), encoder=basemodel_encoder)
|
|
621
621
|
|
|
622
622
|
def compute_and_write_light_level(self, l1_quality_data: L1QualityData) -> None:
|
|
623
|
-
"""Write LIGHT_LEVEL quality metric."""
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
623
|
+
"""Write LIGHT_LEVEL quality metric using only nonnegative measurements."""
|
|
624
|
+
datetimes: list[datetime] = []
|
|
625
|
+
light_level_values: list[float] = []
|
|
626
|
+
for date, light_level in zip(l1_quality_data.datetimes, l1_quality_data.light_level_values):
|
|
627
|
+
if light_level >= 0:
|
|
628
|
+
datetimes.append(date)
|
|
629
|
+
light_level_values.append(light_level)
|
|
627
630
|
|
|
628
631
|
# don't write anything if there is no data
|
|
629
632
|
if not light_level_values:
|
|
@@ -642,8 +645,10 @@ class QualityL1Metrics(WorkflowTaskBase, QualityMixin):
|
|
|
642
645
|
series_data=series_data,
|
|
643
646
|
)
|
|
644
647
|
|
|
645
|
-
statement =
|
|
646
|
-
|
|
648
|
+
statement = (
|
|
649
|
+
f"Average Light Level for L1 dataset: "
|
|
650
|
+
f"{round(np.mean(light_level_values), 2)} ± {round(np.std(light_level_values), 2)} adu"
|
|
651
|
+
)
|
|
647
652
|
|
|
648
653
|
metric = QualityMetric(
|
|
649
654
|
name="Light Level",
|
|
@@ -1084,7 +1084,7 @@ def test_compute_and_write_light_level(
|
|
|
1084
1084
|
all_statements = metric.statement
|
|
1085
1085
|
assert isinstance(all_statements, list)
|
|
1086
1086
|
assert len(all_statements) == 1
|
|
1087
|
-
assert all_statements[
|
|
1087
|
+
assert all_statements == ["Average Light Level for L1 dataset: 0.45 ± 0.2 adu"]
|
|
1088
1088
|
assert metric.warnings is None
|
|
1089
1089
|
# data
|
|
1090
1090
|
all_plot_data = metric.plot_data
|
|
@@ -1112,6 +1112,58 @@ def test_compute_and_write_light_level(
|
|
|
1112
1112
|
assert len(time_series.x_values) == 7
|
|
1113
1113
|
|
|
1114
1114
|
|
|
1115
|
+
def test_light_level_excludes_negative_values(
|
|
1116
|
+
quality_l1_task_no_scratch_data: QualityL1Metrics, l1_quality_data: L1QualityData
|
|
1117
|
+
):
|
|
1118
|
+
"""
|
|
1119
|
+
Given: negative, zero, and positive light levels with distinct timestamps
|
|
1120
|
+
When: the light level quality metric is written
|
|
1121
|
+
Then: only nonnegative readings and their timestamps contribute to the plot and statistics
|
|
1122
|
+
"""
|
|
1123
|
+
task = quality_l1_task_no_scratch_data
|
|
1124
|
+
l1_quality_data.light_level_values = (-1.0, 0.0, 2.0, -0.01, 4.0, -2.0, 6.0)
|
|
1125
|
+
original_quality_data = l1_quality_data.model_dump()
|
|
1126
|
+
|
|
1127
|
+
task.compute_and_write_light_level(l1_quality_data)
|
|
1128
|
+
|
|
1129
|
+
metrics = list(
|
|
1130
|
+
task.read(tags=[Tag.quality("GENERIC")], decoder=basemodel_decoder, model=QualityMetric)
|
|
1131
|
+
)
|
|
1132
|
+
assert len(metrics) == 1
|
|
1133
|
+
metric = metrics[0]
|
|
1134
|
+
time_series = metric.plot_data[0].series_data[""]
|
|
1135
|
+
assert time_series.x_values == tuple(l1_quality_data.datetimes[i] for i in (1, 2, 4, 6))
|
|
1136
|
+
assert time_series.y_values == (0.0, 2.0, 4.0, 6.0)
|
|
1137
|
+
assert metric.statement == ["Average Light Level for L1 dataset: 3.0 ± 2.24 adu"]
|
|
1138
|
+
assert l1_quality_data.model_dump() == original_quality_data
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
def test_light_level_all_negative_values(
|
|
1142
|
+
quality_l1_task_with_calibrated_frames: QualityL1Metrics,
|
|
1143
|
+
):
|
|
1144
|
+
"""
|
|
1145
|
+
Given: calibrated frames whose light levels are all negative
|
|
1146
|
+
When: the L1 quality workflow task runs
|
|
1147
|
+
Then: light level is omitted, other metrics are written, and FITS headers retain their readings
|
|
1148
|
+
"""
|
|
1149
|
+
task = quality_l1_task_with_calibrated_frames
|
|
1150
|
+
frame_paths = list(task.read(tags=[Tag.calibrated(), Tag.frame()]))
|
|
1151
|
+
for frame_path in frame_paths:
|
|
1152
|
+
with fits.open(frame_path, mode="update") as hdul:
|
|
1153
|
+
hdul[0].header["LIGHTLVL"] = -1.0
|
|
1154
|
+
|
|
1155
|
+
task()
|
|
1156
|
+
|
|
1157
|
+
metrics = list(
|
|
1158
|
+
task.read(tags=[Tag.quality("GENERIC")], decoder=basemodel_decoder, model=QualityMetric)
|
|
1159
|
+
)
|
|
1160
|
+
assert "LIGHT_LEVEL" not in {metric.metric_code for metric in metrics}
|
|
1161
|
+
assert "HEALTH_STATUS" in {metric.metric_code for metric in metrics}
|
|
1162
|
+
for frame_path in frame_paths:
|
|
1163
|
+
with fits.open(frame_path) as hdul:
|
|
1164
|
+
assert hdul[0].header["LIGHTLVL"] == -1.0
|
|
1165
|
+
|
|
1166
|
+
|
|
1115
1167
|
def test_no_calibration_frames_no_l1_metrics(quality_l1_task_no_scratch_data: QualityL1Metrics):
|
|
1116
1168
|
"""
|
|
1117
1169
|
Given: No calibrated frames
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_common-14.6.0 → dkist_processing_common-14.6.1}/dkist_processing_common/manual.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|