dkist-processing-common 12.3.0__tar.gz → 12.4.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 (141) hide show
  1. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/CHANGELOG.rst +11 -0
  2. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/PKG-INFO +1 -1
  3. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/write_extra.py +4 -1
  4. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/write_l1.py +21 -17
  5. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/write_l1_base.py +1 -1
  6. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common.egg-info/PKG-INFO +1 -1
  7. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/.gitignore +0 -0
  8. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/.pre-commit-config.yaml +0 -0
  9. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/.readthedocs.yml +0 -0
  10. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/.snyk +0 -0
  11. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/README.rst +0 -0
  12. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/bitbucket-pipelines.yml +0 -0
  13. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/changelog/.gitempty +0 -0
  14. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/__init__.py +0 -0
  15. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/_util/__init__.py +0 -0
  16. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/_util/constants.py +0 -0
  17. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/_util/graphql.py +0 -0
  18. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/_util/scratch.py +0 -0
  19. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/_util/tags.py +0 -0
  20. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/__init__.py +0 -0
  21. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/array.py +0 -0
  22. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/asdf.py +0 -0
  23. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/basemodel.py +0 -0
  24. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/bytes.py +0 -0
  25. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/fits.py +0 -0
  26. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/iobase.py +0 -0
  27. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/json.py +0 -0
  28. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/path.py +0 -0
  29. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/quality.py +0 -0
  30. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/codecs/str.py +0 -0
  31. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/config.py +0 -0
  32. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
  33. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/fonts/__init__.py +0 -0
  34. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/manual.py +0 -0
  35. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/__init__.py +0 -0
  36. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/constants.py +0 -0
  37. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/dkist_location.py +0 -0
  38. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/extras.py +0 -0
  39. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/fits_access.py +0 -0
  40. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/flower_pot.py +0 -0
  41. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/fried_parameter.py +0 -0
  42. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/graphql.py +0 -0
  43. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/input_dataset.py +0 -0
  44. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/message.py +0 -0
  45. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/message_queue_binding.py +0 -0
  46. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/metric_code.py +0 -0
  47. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/parameters.py +0 -0
  48. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/quality.py +0 -0
  49. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/tags.py +0 -0
  50. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/task_name.py +0 -0
  51. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/telemetry.py +0 -0
  52. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/models/wavelength.py +0 -0
  53. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/__init__.py +0 -0
  54. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/average_bud.py +0 -0
  55. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/cs_step.py +0 -0
  56. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
  57. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
  58. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/id_bud.py +0 -0
  59. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
  60. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
  61. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/lookup_bud.py +0 -0
  62. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/near_bud.py +0 -0
  63. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/observing_program_id_bud.py +0 -0
  64. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
  65. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/quality.py +0 -0
  66. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/retarder.py +0 -0
  67. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
  68. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/task.py +0 -0
  69. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/time.py +0 -0
  70. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/unique_bud.py +0 -0
  71. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/parsers/wavelength.py +0 -0
  72. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/__init__.py +0 -0
  73. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/assemble_movie.py +0 -0
  74. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/base.py +0 -0
  75. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/l1_output_data.py +0 -0
  76. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
  77. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/mixin/globus.py +0 -0
  78. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
  79. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
  80. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
  81. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
  82. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
  83. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
  84. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/output_data_base.py +0 -0
  85. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
  86. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/quality_metrics.py +0 -0
  87. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/teardown.py +0 -0
  88. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
  89. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/trial_catalog.py +0 -0
  90. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tasks/trial_output_data.py +0 -0
  91. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/__init__.py +0 -0
  92. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/conftest.py +0 -0
  93. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
  94. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
  95. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
  96. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_base.py +0 -0
  97. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_codecs.py +0 -0
  98. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_constants.py +0 -0
  99. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_construct_dataset_extras.py +0 -0
  100. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_cs_step.py +0 -0
  101. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_dkist_location.py +0 -0
  102. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_fits_access.py +0 -0
  103. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_flower_pot.py +0 -0
  104. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
  105. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_input_dataset.py +0 -0
  106. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
  107. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
  108. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_manual_processing.py +0 -0
  109. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_output_data_base.py +0 -0
  110. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_parameters.py +0 -0
  111. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
  112. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
  113. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_quality.py +0 -0
  114. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
  115. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_scratch.py +0 -0
  116. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_stems.py +0 -0
  117. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
  118. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_tags.py +0 -0
  119. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_task_name.py +0 -0
  120. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_task_parsing.py +0 -0
  121. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_teardown.py +0 -0
  122. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
  123. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
  124. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_trial_catalog.py +0 -0
  125. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
  126. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
  127. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common/tests/test_write_l1.py +0 -0
  128. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common.egg-info/SOURCES.txt +0 -0
  129. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
  130. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common.egg-info/requires.txt +0 -0
  131. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/dkist_processing_common.egg-info/top_level.txt +0 -0
  132. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/docs/Makefile +0 -0
  133. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/docs/changelog.rst +0 -0
  134. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/docs/conf.py +0 -0
  135. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/docs/index.rst +0 -0
  136. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/docs/landing_page.rst +0 -0
  137. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/docs/make.bat +0 -0
  138. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/docs/requirements.txt +0 -0
  139. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/licenses/LICENSE.rst +0 -0
  140. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/pyproject.toml +0 -0
  141. {dkist_processing_common-12.3.0 → dkist_processing_common-12.4.0}/setup.cfg +0 -0
@@ -1,3 +1,14 @@
1
+ v12.4.0 (2026-02-04)
2
+ ====================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - When calculating the updated frame volume for the `FRAMEVOL` key, don't decompress the file. (`#292 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/292>`__)
8
+ - Refactor calculation of statistics headers for improved performance. (`#293 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/293>`__)
9
+ - Send the L1 header for validation instead of the whole file for performance improvements. (`#294 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/294>`__)
10
+
11
+
1
12
  v12.3.0 (2026-02-02)
2
13
  ====================
3
14
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 12.3.0
3
+ Version: 12.4.0
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
@@ -320,7 +320,10 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
320
320
 
321
321
  # Check that the written file passes spec 214 validation if requested
322
322
  if self.validate_l1_on_write:
323
- spec_extras_validator.validate(self.scratch.absolute_path(filename), extra=False)
323
+ # Replace this logic with the fits_header_decoder once FITS library keys have been removed from the SPEC
324
+ with fits.open(self.scratch.absolute_path(filename)) as hdul:
325
+ header = hdul[1].header
326
+ spec_extras_validator.validate(header, extra=False)
324
327
 
325
328
  @abstractmethod
326
329
  def run(self) -> None:
@@ -27,6 +27,7 @@ from sunpy.coordinates import Helioprojective
27
27
 
28
28
  from dkist_processing_common.codecs.fits import fits_access_decoder
29
29
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
30
+ from dkist_processing_common.codecs.fits import fits_header_decoder
30
31
  from dkist_processing_common.models.dkist_location import location_of_dkist
31
32
  from dkist_processing_common.models.fried_parameter import r0_valid
32
33
  from dkist_processing_common.models.tags import Tag
@@ -102,9 +103,10 @@ class WriteL1Frame(WriteL1Base, ABC):
102
103
 
103
104
  # Check that the written file passes spec 214 validation if requested
104
105
  if self.validate_l1_on_write:
105
- spec214_validator.validate(
106
- self.scratch.absolute_path(relative_path), extra=False
107
- )
106
+ # Replace this logic with the fits_header_decoder once FITS library keys have been removed from the SPEC
107
+ with fits.open(self.scratch.absolute_path(relative_path)) as hdul:
108
+ header = hdul[1].header
109
+ spec214_validator.validate(header, extra=False)
108
110
 
109
111
  def replace_header_values(self, header: fits.Header, data: np.ndarray) -> fits.Header:
110
112
  """Replace header values that should already exist with new values."""
@@ -132,25 +134,27 @@ class WriteL1Frame(WriteL1Base, ABC):
132
134
  @staticmethod
133
135
  def add_stats_headers(header: fits.Header, data: np.ndarray) -> fits.Header:
134
136
  """Fill out the spec 214 statistics header table."""
135
- data = data.flatten()
136
- percentiles = np.nanpercentile(data, [1, 2, 5, 10, 25, 75, 90, 95, 98, 99])
137
- header["DATAMIN"] = np.nanmin(data)
138
- header["DATAMAX"] = np.nanmax(data)
139
- header["DATAMEAN"] = np.nanmean(data)
140
- header["DATAMEDN"] = np.nanmedian(data)
137
+ flat_data = np.ravel(data)
138
+ nan_mask = np.isfinite(flat_data)
139
+ valid_data = flat_data[nan_mask]
140
+ percentiles = np.percentile(valid_data, [1, 2, 5, 10, 25, 50, 75, 90, 95, 98, 99])
141
+ header["DATAMIN"] = valid_data.min()
142
+ header["DATAMAX"] = valid_data.max()
143
+ header["DATAMEAN"] = valid_data.mean()
144
+ header["DATAMEDN"] = percentiles[5]
141
145
  header["DATAP01"] = percentiles[0]
142
146
  header["DATAP02"] = percentiles[1]
143
147
  header["DATAP05"] = percentiles[2]
144
148
  header["DATAP10"] = percentiles[3]
145
149
  header["DATAP25"] = percentiles[4]
146
- header["DATAP75"] = percentiles[5]
147
- header["DATAP90"] = percentiles[6]
148
- header["DATAP95"] = percentiles[7]
149
- header["DATAP98"] = percentiles[8]
150
- header["DATAP99"] = percentiles[9]
151
- header["DATARMS"] = np.sqrt(np.nanmean(data**2))
152
- header["DATAKURT"] = kurtosis(data, nan_policy="omit")
153
- header["DATASKEW"] = skew(data, nan_policy="omit")
150
+ header["DATAP75"] = percentiles[6]
151
+ header["DATAP90"] = percentiles[7]
152
+ header["DATAP95"] = percentiles[8]
153
+ header["DATAP98"] = percentiles[9]
154
+ header["DATAP99"] = percentiles[10]
155
+ header["DATARMS"] = np.sqrt(np.dot(valid_data, valid_data) / valid_data.size)
156
+ header["DATAKURT"] = kurtosis(valid_data)
157
+ header["DATASKEW"] = skew(valid_data)
154
158
  return header
155
159
 
156
160
  def add_datacenter_headers(
@@ -38,7 +38,7 @@ class WriteL1Base(WorkflowTaskBase, MetadataStoreMixin, ABC):
38
38
  """Update FRAMEVOL key to be exactly the size of the file on-disk."""
39
39
  full_path = self.scratch.workflow_base_path / relative_path
40
40
  compressed_size = full_path.stat().st_size / 1024 / 1024
41
- hdul = fits.open(full_path, mode="update")
41
+ hdul = fits.open(full_path, mode="update", disable_image_compression=True)
42
42
  for i in range(1, len(hdul)):
43
43
  hdul[i].header["FRAMEVOL"] = compressed_size
44
44
  hdul.flush()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 12.3.0
3
+ Version: 12.4.0
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