dkist-processing-common 14.6.1__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.
Files changed (148) hide show
  1. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/PKG-INFO +2 -2
  2. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/README.rst +1 -1
  3. dkist_processing_common-14.7.0rc1/changelog/350.misc.rst +1 -0
  4. dkist_processing_common-14.7.0rc1/changelog/356.doc.rst +1 -0
  5. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/quality.py +18 -134
  6. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/l1_output_data.py +0 -13
  7. dkist_processing_common-14.6.1/dkist_processing_common/tasks/mixin/quality/_metrics.py → dkist_processing_common-14.7.0rc1/dkist_processing_common/tasks/mixin/quality.py +279 -244
  8. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_assemble_quality.py +97 -159
  9. dkist_processing_common-14.7.0rc1/dkist_processing_common/tests/test_quality_mixin.py +413 -0
  10. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/PKG-INFO +2 -2
  11. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/SOURCES.txt +3 -3
  12. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/scm_file_list.json +3 -3
  13. dkist_processing_common-14.7.0rc1/dkist_processing_common.egg-info/scm_version.json +8 -0
  14. dkist_processing_common-14.6.1/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -8
  15. dkist_processing_common-14.6.1/dkist_processing_common/tasks/mixin/quality/_base.py +0 -218
  16. dkist_processing_common-14.6.1/dkist_processing_common/tests/test_quality_mixin.py +0 -726
  17. dkist_processing_common-14.6.1/dkist_processing_common.egg-info/scm_version.json +0 -8
  18. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/.gitignore +0 -0
  19. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/.pre-commit-config.yaml +0 -0
  20. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/.readthedocs.yml +0 -0
  21. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/.rovodev/.review-agent.md +0 -0
  22. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/.snyk +0 -0
  23. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/CHANGELOG.rst +0 -0
  24. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/bitbucket-pipelines.yml +0 -0
  25. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/changelog/.gitempty +0 -0
  26. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/__init__.py +0 -0
  27. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/__init__.py +0 -0
  28. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/constants.py +0 -0
  29. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/graphql.py +0 -0
  30. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/scratch.py +0 -0
  31. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/_util/tags.py +0 -0
  32. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/__init__.py +0 -0
  33. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/array.py +0 -0
  34. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/asdf.py +0 -0
  35. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/basemodel.py +0 -0
  36. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/bytes.py +0 -0
  37. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/fits.py +0 -0
  38. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/iobase.py +0 -0
  39. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/json.py +0 -0
  40. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/path.py +0 -0
  41. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/quality.py +0 -0
  42. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/codecs/str.py +0 -0
  43. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/config.py +0 -0
  44. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
  45. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/fonts/__init__.py +0 -0
  46. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/manual.py +0 -0
  47. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/__init__.py +0 -0
  48. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/constants.py +0 -0
  49. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/dkist_location.py +0 -0
  50. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/extras.py +0 -0
  51. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/fits_access.py +0 -0
  52. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/flower_pot.py +0 -0
  53. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/fried_parameter.py +0 -0
  54. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/graphql.py +0 -0
  55. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/input_dataset.py +0 -0
  56. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/message.py +0 -0
  57. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/message_queue_binding.py +0 -0
  58. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/metric_code.py +0 -0
  59. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/parameters.py +0 -0
  60. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/tags.py +0 -0
  61. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/task_name.py +0 -0
  62. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/telemetry.py +0 -0
  63. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/models/wavelength.py +0 -0
  64. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/__init__.py +0 -0
  65. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/average_bud.py +0 -0
  66. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/cs_step.py +0 -0
  67. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
  68. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
  69. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/id_bud.py +0 -0
  70. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
  71. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
  72. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/lookup_bud.py +0 -0
  73. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/near_bud.py +0 -0
  74. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/observing_program_id_bud.py +0 -0
  75. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
  76. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/quality.py +0 -0
  77. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/retarder.py +0 -0
  78. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
  79. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/task.py +0 -0
  80. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/time.py +0 -0
  81. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/unique_bud.py +0 -0
  82. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/parsers/wavelength.py +0 -0
  83. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/__init__.py +0 -0
  84. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/assemble_movie.py +0 -0
  85. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/base.py +0 -0
  86. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
  87. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/globus.py +0 -0
  88. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
  89. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
  90. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
  91. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/output_data_base.py +0 -0
  92. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
  93. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/quality_metrics.py +0 -0
  94. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/teardown.py +0 -0
  95. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
  96. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/trial_catalog.py +0 -0
  97. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/trial_output_data.py +0 -0
  98. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/write_extra.py +0 -0
  99. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/write_l1.py +0 -0
  100. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tasks/write_l1_base.py +0 -0
  101. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/__init__.py +0 -0
  102. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/conftest.py +0 -0
  103. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
  104. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
  105. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_base.py +0 -0
  106. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_codecs.py +0 -0
  107. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_constants.py +0 -0
  108. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_construct_dataset_extras.py +0 -0
  109. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_cs_step.py +0 -0
  110. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_dkist_location.py +0 -0
  111. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_fits_access.py +0 -0
  112. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_flower_pot.py +0 -0
  113. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
  114. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_input_dataset.py +0 -0
  115. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
  116. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
  117. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_manual_processing.py +0 -0
  118. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_output_data_base.py +0 -0
  119. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_parameters.py +0 -0
  120. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
  121. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
  122. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_quality.py +0 -0
  123. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_scratch.py +0 -0
  124. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_stems.py +0 -0
  125. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
  126. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_tags.py +0 -0
  127. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_task_name.py +0 -0
  128. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_task_parsing.py +0 -0
  129. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_teardown.py +0 -0
  130. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
  131. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
  132. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_trial_catalog.py +0 -0
  133. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
  134. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
  135. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common/tests/test_write_l1.py +0 -0
  136. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
  137. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/requires.txt +0 -0
  138. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/dkist_processing_common.egg-info/top_level.txt +0 -0
  139. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/docs/Makefile +0 -0
  140. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/docs/changelog.rst +0 -0
  141. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/docs/conf.py +0 -0
  142. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/docs/index.rst +0 -0
  143. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/docs/landing_page.rst +0 -0
  144. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/docs/make.bat +0 -0
  145. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/docs/requirements.txt +0 -0
  146. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/licenses/LICENSE.rst +0 -0
  147. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/pyproject.toml +0 -0
  148. {dkist_processing_common-14.6.1 → dkist_processing_common-14.7.0rc1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 14.6.1
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
- # Old Quality Models #
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
- # TBD
428
- pass
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
- # TBD
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
- # TBD
442
- pass
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
- # TBD
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
- modmat_data: list[ModMatData] | None = None
481
- raincloud_data: list[RaincloudData] | None = None
482
- efficiency_data: list[EfficiencyData] | None = None
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
  ):