dkist-processing-cryonirsp 0.0.81__tar.gz → 1.0.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.

Potentially problematic release.


This version of dkist-processing-cryonirsp might be problematic. Click here for more details.

Files changed (127) hide show
  1. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/CHANGELOG.rst +18 -0
  2. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/PKG-INFO +1 -1
  3. dkist_processing_cryonirsp-1.0.0/SCIENCE_CHANGELOG.rst +16 -0
  4. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +10 -8
  5. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/quality_metrics.py +21 -10
  6. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_assemble_qualilty.py +3 -6
  7. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +16 -11
  8. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_quality.py +103 -4
  9. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp.egg-info/PKG-INFO +1 -1
  10. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp.egg-info/requires.txt +1 -1
  11. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/setup.cfg +1 -1
  12. dkist_processing_cryonirsp-0.0.81/SCIENCE_CHANGELOG.rst +0 -7
  13. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/.gitignore +0 -0
  14. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/.pre-commit-config.yaml +0 -0
  15. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/.readthedocs.yml +0 -0
  16. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/README.rst +0 -0
  17. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/bitbucket-pipelines.yml +0 -0
  18. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/changelog/.gitempty +0 -0
  19. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/check_changelog_updated.sh +0 -0
  20. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/__init__.py +0 -0
  21. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/config.py +0 -0
  22. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/models/__init__.py +0 -0
  23. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/models/constants.py +0 -0
  24. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/models/exposure_conditions.py +0 -0
  25. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/models/parameters.py +0 -0
  26. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/models/tags.py +0 -0
  27. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/models/task_name.py +0 -0
  28. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
  29. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +0 -0
  30. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
  31. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/exposure_conditions.py +0 -0
  32. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
  33. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
  34. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/modstates.py +0 -0
  35. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +0 -0
  36. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/polarimetric_check.py +0 -0
  37. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
  38. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/time.py +0 -0
  39. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/parsers/wavelength.py +0 -0
  40. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
  41. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
  42. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
  43. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +0 -0
  44. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
  45. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
  46. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
  47. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
  48. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/gain.py +0 -0
  49. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -0
  50. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/linearity_correction.py +0 -0
  51. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
  52. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
  53. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/mixin/beam_access.py +0 -0
  54. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +0 -0
  55. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/mixin/intermediate_frame.py +0 -0
  56. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/mixin/linearized_frame.py +0 -0
  57. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/mixin/shift_measurements.py +0 -0
  58. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/parse.py +0 -0
  59. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/science_base.py +0 -0
  60. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
  61. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/sp_dispersion_axis_correction.py +0 -0
  62. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/sp_geometric.py +0 -0
  63. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -0
  64. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +0 -0
  65. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/trial_output_data.py +0 -0
  66. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
  67. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
  68. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/conftest.py +0 -0
  69. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/header_models.py +0 -0
  70. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/__init__.py +0 -0
  71. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py +0 -0
  72. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py +0 -0
  73. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/linearize_only.py +0 -0
  74. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py +0 -0
  75. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +0 -0
  76. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +0 -0
  77. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +0 -0
  78. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_ci_science.py +0 -0
  79. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_corrections.py +0 -0
  80. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
  81. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
  82. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_dark.py +0 -0
  83. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_gain.py +0 -0
  84. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +0 -0
  85. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_make_movie_frames.py +0 -0
  86. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_parameters.py +0 -0
  87. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_parse.py +0 -0
  88. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +0 -0
  89. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_sp_dispersion_axis_correction.py +0 -0
  90. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +0 -0
  91. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +0 -0
  92. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_sp_science.py +0 -0
  93. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_sp_solar.py +0 -0
  94. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_trial_create_quality_report.py +0 -0
  95. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_trial_output_data.py +0 -0
  96. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
  97. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/tests/test_write_l1.py +0 -0
  98. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
  99. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
  100. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
  101. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
  102. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +0 -0
  103. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
  104. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
  105. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/Makefile +0 -0
  106. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/bad_pixel_calibration.rst +0 -0
  107. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/beam_angle_calculation.rst +0 -0
  108. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/beam_boundary_computation.rst +0 -0
  109. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/changelog.rst +0 -0
  110. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/ci_science_calibration.rst +0 -0
  111. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/conf.py +0 -0
  112. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/index.rst +0 -0
  113. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/l0_to_l1_cryonirsp_ci-full-trial.rst +0 -0
  114. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
  115. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/l0_to_l1_cryonirsp_sp-full-trial.rst +0 -0
  116. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
  117. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/linearization.rst +0 -0
  118. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/make.bat +0 -0
  119. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/requirements.txt +0 -0
  120. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/requirements_table.rst +0 -0
  121. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/scientific_changelog.rst +0 -0
  122. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/docs/sp_science_calibration.rst +0 -0
  123. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/licenses/LICENSE.rst +0 -0
  124. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/pyproject.toml +0 -0
  125. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/science_towncrier.sh +0 -0
  126. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/setup.py +0 -0
  127. {dkist_processing_cryonirsp-0.0.81 → dkist_processing_cryonirsp-1.0.0}/towncrier_science.toml +0 -0
@@ -1,3 +1,21 @@
1
+ v1.0.0 (2024-08-21)
2
+ ===================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - CRYO-NIRSP processing pipeline data accepted for release to the community.
8
+
9
+
10
+ v0.0.82 (2024-08-21)
11
+ ====================
12
+
13
+ Misc
14
+ ----
15
+
16
+ - Update some Quality related tasks and methods for the new API in `dkist-processing-common` v9.0.0. No change to any outputs. (`#146 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/146>`__)
17
+
18
+
1
19
  v0.0.81 (2024-08-16)
2
20
  ====================
3
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist_processing_cryonirsp
3
- Version: 0.0.81
3
+ Version: 1.0.0
4
4
  Summary: Science processing code for the Cryo-NIRSP instrument on DKIST
5
5
  Home-page: https://bitbucket.org/dkistdc/dkist_processing_cryonirsp/src/main/
6
6
  Author: NSO / AURA
@@ -0,0 +1,16 @@
1
+ v1.0.0 (2024-08-21)
2
+ ===================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - CRYO-NIRSP processing pipeline data accepted for release to the community.
8
+
9
+
10
+ v0.0.1 (2023-08-25)
11
+ ===================
12
+
13
+ Misc
14
+ ----
15
+
16
+ - Initial release of pipeline for science review
@@ -412,10 +412,11 @@ class CIInstrumentPolarizationCalibration(InstrumentPolarizationCalibrationBase)
412
412
  self.quality_store_polcal_results(
413
413
  polcal_fitter=polcal_fitter,
414
414
  label=generate_polcal_quality_label(arm="CI", beam=beam),
415
- bins_1=self.parameters.polcal_num_spatial_bins,
416
- bins_2=self.parameters.polcal_num_spatial_bins,
417
- bin_1_type="spatial",
418
- bin_2_type="spatial",
415
+ bin_nums=[
416
+ self.parameters.polcal_num_spatial_bins,
417
+ self.parameters.polcal_num_spatial_bins,
418
+ ],
419
+ bin_labels=["spatial", "spatial"],
419
420
  )
420
421
 
421
422
 
@@ -431,8 +432,9 @@ class SPInstrumentPolarizationCalibration(InstrumentPolarizationCalibrationBase)
431
432
  self.quality_store_polcal_results(
432
433
  polcal_fitter=polcal_fitter,
433
434
  label=generate_polcal_quality_label(arm="SP", beam=beam),
434
- bins_1=self.parameters.polcal_num_spatial_bins,
435
- bins_2=self.parameters.polcal_num_spectral_bins,
436
- bin_1_type="spatial",
437
- bin_2_type="spectral",
435
+ bin_nums=[
436
+ self.parameters.polcal_num_spatial_bins,
437
+ self.parameters.polcal_num_spectral_bins,
438
+ ],
439
+ bin_labels=["spatial", "spectral"],
438
440
  )
@@ -2,6 +2,7 @@
2
2
  from dataclasses import dataclass
3
3
  from dataclasses import field
4
4
  from typing import Generator
5
+ from typing import Iterable
5
6
 
6
7
  import numpy as np
7
8
  from astropy.time import Time
@@ -66,16 +67,26 @@ class CryonirspL0QualityMetrics(QualityL0Metrics):
66
67
  """Class for Cryonirsp constants."""
67
68
  return CryonirspConstants
68
69
 
69
- def run(self) -> None:
70
- """Calculate L0 metrics for Cryonirsp data."""
71
- if not self.constants.correct_for_polarization:
72
- paths = self.read(tags=[CryonirspTag.linearized()])
73
- self.calculate_l0_metrics(paths=paths)
74
- else:
75
- for m in range(1, self.constants.num_modstates + 1):
76
- with self.apm_task_step(f"Working on modstate {m}"):
77
- paths = self.read(tags=[CryonirspTag.linearized(), CryonirspTag.modstate(m)])
78
- self.calculate_l0_metrics(paths=paths, modstate=m)
70
+ @property
71
+ def raw_frame_tag(self) -> str:
72
+ """
73
+ Define tag corresponding to L0 data.
74
+
75
+ For Cryo it's LINEARIZED.
76
+ """
77
+ return CryonirspTag.linearized()
78
+
79
+ @property
80
+ def modstate_list(self) -> Iterable[int] | None:
81
+ """
82
+ Define the list of modstates over which to compute L0 quality metrics.
83
+
84
+ If the dataset is non-polarimetric then we just compute all metrics over all modstates at once.
85
+ """
86
+ if self.constants.correct_for_polarization:
87
+ return range(1, self.constants.num_modstates + 1)
88
+
89
+ return None
79
90
 
80
91
 
81
92
  class CryonirspL1QualityMetrics(CryonirspTaskBase, QualityMixin):
@@ -230,8 +230,7 @@ def quality_metrics(dataframe_json) -> list[Metric]:
230
230
  "I_sys_CS00_step01": {"fit_values": [10, 20, 30.0], "init_value": 0.33},
231
231
  "param_X": {"fit_values": [5, 6, 7.0], "init_value": 99},
232
232
  },
233
- "bin_1_str": "bin1",
234
- "bin_2_str": "bin2",
233
+ "bin_strs": ["bin1", "bin2"],
235
234
  "total_bins": 100,
236
235
  "num_varied_I_sys": 2,
237
236
  },
@@ -239,8 +238,7 @@ def quality_metrics(dataframe_json) -> list[Metric]:
239
238
  ),
240
239
  Metric(
241
240
  {
242
- "bin_1_str": "bin1",
243
- "bin_2_str": "bin2",
241
+ "bin_strs": ["bin1", "bin2"],
244
242
  "total_bins": 100,
245
243
  "red_chi_list": [1, 2, 3],
246
244
  "residual_json": dataframe_json,
@@ -249,8 +247,7 @@ def quality_metrics(dataframe_json) -> list[Metric]:
249
247
  ),
250
248
  Metric(
251
249
  {
252
- "bin_1_str": "bin1",
253
- "bin_2_str": "bin2",
250
+ "bin_strs": ["bin1", "bin2"],
254
251
  "total_bins": 100,
255
252
  "efficiency_list": ((np.random.randn(4, 100) - 0.5) * 0.3).tolist(),
256
253
  "warnings": ["A warning"],
@@ -183,7 +183,8 @@ def ci_instrument_polarization_calibration_task(
183
183
 
184
184
  # Don't test place-holder QA stuff for now
185
185
  quality_metric_mocker = mocker.patch(
186
- "dkist_processing_cryonirsp.tasks.instrument_polarization.CIInstrumentPolarizationCalibration.quality_store_polcal_results"
186
+ "dkist_processing_cryonirsp.tasks.instrument_polarization.CIInstrumentPolarizationCalibration.quality_store_polcal_results",
187
+ autospec=True,
187
188
  )
188
189
 
189
190
  # Create beam border intermediate array that is consistent with a single pixel array
@@ -297,7 +298,8 @@ def sp_instrument_polarization_calibration_task(
297
298
 
298
299
  # Don't test place-holder QA stuff for now
299
300
  quality_metric_mocker = mocker.patch(
300
- "dkist_processing_cryonirsp.tasks.instrument_polarization.SPInstrumentPolarizationCalibration.quality_store_polcal_results"
301
+ "dkist_processing_cryonirsp.tasks.instrument_polarization.SPInstrumentPolarizationCalibration.quality_store_polcal_results",
302
+ autospec=True,
301
303
  )
302
304
 
303
305
  # Create beam border intermediate arrays that are consistent with a single pixel array
@@ -410,12 +412,14 @@ def test_ci_instrument_polarization_calibration_task(
410
412
  assert len(list(task.read(tags=tags))) == 1
411
413
 
412
414
  quality_mocker.assert_any_call(
415
+ task,
413
416
  polcal_fitter=ANY,
414
417
  label=f"CI Beam {beam}",
415
- bins_1=task.parameters.polcal_num_spatial_bins,
416
- bins_2=task.parameters.polcal_num_spatial_bins,
417
- bin_1_type="spatial",
418
- bin_2_type="spatial",
418
+ bin_nums=[
419
+ task.parameters.polcal_num_spatial_bins,
420
+ task.parameters.polcal_num_spatial_bins,
421
+ ],
422
+ bin_labels=["spatial", "spatial"],
419
423
  )
420
424
 
421
425
 
@@ -446,13 +450,14 @@ def test_sp_instrument_polarization_calibration_task(
446
450
  assert len(list(task.read(tags=tags))) == 1
447
451
 
448
452
  quality_mocker.assert_any_call(
453
+ task,
449
454
  polcal_fitter=ANY,
450
455
  label=f"SP Beam {beam}",
451
- bins_1=task.parameters.polcal_num_spatial_bins,
452
- bins_2=task.parameters.polcal_num_spectral_bins,
453
- bin_1_type="spatial",
454
- bin_2_type="spectral",
455
- # skip_recording_constant_pars=beam == 2,
456
+ bin_nums=[
457
+ task.parameters.polcal_num_spatial_bins,
458
+ task.parameters.polcal_num_spectral_bins,
459
+ ],
460
+ bin_labels=["spatial", "spectral"],
456
461
  )
457
462
 
458
463
 
@@ -1,21 +1,87 @@
1
1
  import json
2
2
 
3
+ import numpy as np
3
4
  import pytest
4
5
  from astropy.io import fits
5
6
  from dkist_header_validator import spec122_validator
6
7
  from dkist_processing_common._util.scratch import WorkflowFileSystem
8
+ from dkist_processing_common.codecs.fits import fits_array_encoder
7
9
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
10
+ from dkist_processing_common.models.task_name import TaskName
8
11
  from dkist_processing_common.tests.conftest import FakeGQLClient
9
12
 
10
13
  from dkist_processing_cryonirsp.models.tags import CryonirspTag
14
+ from dkist_processing_cryonirsp.tasks.quality_metrics import CryonirspL0QualityMetrics
11
15
  from dkist_processing_cryonirsp.tasks.quality_metrics import CryonirspL1QualityMetrics
12
16
  from dkist_processing_cryonirsp.tests.conftest import CryonirspConstantsDb
13
17
  from dkist_processing_cryonirsp.tests.conftest import generate_214_l1_fits_frame
14
18
  from dkist_processing_cryonirsp.tests.header_models import Cryonirsp122ObserveFrames
19
+ from dkist_processing_cryonirsp.tests.header_models import CryonirspHeaders
20
+
21
+
22
+ @pytest.fixture
23
+ def cryonirsp_l0_quality_task(recipe_run_id, num_modstates, init_cryonirsp_constants_db, tmp_path):
24
+ constants = CryonirspConstantsDb(
25
+ NUM_MODSTATES=num_modstates,
26
+ MODULATOR_SPIN_MODE="Stepped" if num_modstates > 1 else "Off",
27
+ )
28
+ init_cryonirsp_constants_db(recipe_run_id, constants)
29
+
30
+ with CryonirspL0QualityMetrics(
31
+ recipe_run_id=recipe_run_id,
32
+ workflow_name="workflow_name",
33
+ workflow_version="workflow_version",
34
+ ) as task:
35
+ task.scratch = WorkflowFileSystem(scratch_base_path=tmp_path, recipe_run_id=recipe_run_id)
36
+
37
+ yield task
38
+ task._purge()
39
+
40
+
41
+ @pytest.fixture()
42
+ def l0_quality_task_types() -> list[str]:
43
+ # The tasks types we want to build l0 metrics for
44
+ return [TaskName.lamp_gain.value, TaskName.dark.value]
45
+
46
+
47
+ @pytest.fixture()
48
+ def dataset_task_types(l0_quality_task_types) -> list[str]:
49
+ # The task types that exist in the dataset. I.e., a larger set than we want to build metrics for.
50
+ return l0_quality_task_types + [TaskName.solar_gain.value, TaskName.observe.value]
51
+
52
+
53
+ @pytest.fixture
54
+ def write_l0_task_frames_to_task(num_modstates, dataset_task_types):
55
+ array_shape = (1, 4, 4)
56
+ data = np.ones(array_shape)
57
+
58
+ def writer(task):
59
+ for task_type in dataset_task_types:
60
+ ds = CryonirspHeaders(
61
+ dataset_shape=(num_modstates,) + array_shape[-2:],
62
+ array_shape=array_shape,
63
+ time_delta=1.0,
64
+ file_schema="level0_spec214",
65
+ )
66
+ for modstate, frame in enumerate(ds, start=1):
67
+ header = frame.header()
68
+ task.write(
69
+ data=data,
70
+ header=header,
71
+ tags=[
72
+ CryonirspTag.linearized(),
73
+ CryonirspTag.frame(),
74
+ CryonirspTag.task(task_type),
75
+ CryonirspTag.modstate(modstate),
76
+ ],
77
+ encoder=fits_array_encoder,
78
+ )
79
+
80
+ return writer
15
81
 
16
82
 
17
83
  @pytest.fixture(scope="function")
18
- def cryo_quality_task(tmp_path, recipe_run_id, init_cryonirsp_constants_db):
84
+ def cryo_l1_quality_task(tmp_path, recipe_run_id, init_cryonirsp_constants_db):
19
85
  num_map_scans = 3
20
86
  num_scan_steps = 1
21
87
  constants_db = CryonirspConstantsDb(
@@ -63,9 +129,42 @@ def cryo_quality_task(tmp_path, recipe_run_id, init_cryonirsp_constants_db):
63
129
  task._purge()
64
130
 
65
131
 
66
- def test_quality_task(cryo_quality_task, mocker):
132
+ @pytest.mark.parametrize(
133
+ "num_modstates", [pytest.param(4, id="polarimetric"), pytest.param(1, id="intensity")]
134
+ )
135
+ def test_l0_quality_task(
136
+ cryonirsp_l0_quality_task, num_modstates, write_l0_task_frames_to_task, l0_quality_task_types
137
+ ):
138
+ """
139
+ Given: A `CryonirspL0QualityMetrics` task and some INPUT frames tagged with their task type and modstate
140
+ When: Running the task
141
+ Then: The expected L0 quality metric files exist
142
+ """
143
+ # NOTE: We rely on the unit tests in `*-common` to verify the correct format/data of the metric files
144
+ task = cryonirsp_l0_quality_task
145
+ write_l0_task_frames_to_task(task)
146
+
147
+ task()
148
+
149
+ task_metric_names = ["FRAME_RMS", "FRAME_AVERAGE"]
150
+ for metric_name in task_metric_names:
151
+ for modstate in range(1, num_modstates + 1):
152
+ for task_type in l0_quality_task_types:
153
+ tags = [CryonirspTag.quality(metric_name), CryonirspTag.quality_task(task_type)]
154
+ if num_modstates > 1:
155
+ tags.append(CryonirspTag.modstate(modstate))
156
+ files = list(task.read(tags))
157
+ assert len(files) == 1
158
+
159
+ global_metric_names = ["DATASET_AVERAGE", "DATASET_RMS"]
160
+ for metric_name in global_metric_names:
161
+ files = list(task.read(tags=[CryonirspTag.quality(metric_name)]))
162
+ assert len(files) > 0
163
+
164
+
165
+ def test_l1_quality_task(cryo_l1_quality_task, mocker):
67
166
  """
68
- Given: A CryonirspQualityMetrics task
167
+ Given: A CryonirspL1QualityMetrics task
69
168
  When: Calling the task instance
70
169
  Then: A single sensitivity measurement and datetime is recorded for each map scan for each Stokes Q, U, and V,
71
170
  and a single noise measurement and datetime is recorded for L1 file for each Stokes Q, U, and V
@@ -74,7 +173,7 @@ def test_quality_task(cryo_quality_task, mocker):
74
173
  "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
75
174
  )
76
175
  # When
77
- task = cryo_quality_task
176
+ task = cryo_l1_quality_task
78
177
  task()
79
178
  # Then
80
179
  num_map_scans = task.constants.num_map_scans
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist-processing-cryonirsp
3
- Version: 0.0.81
3
+ Version: 1.0.0
4
4
  Summary: Science processing code for the Cryo-NIRSP instrument on DKIST
5
5
  Home-page: https://bitbucket.org/dkistdc/dkist_processing_cryonirsp/src/main/
6
6
  Author: NSO / AURA
@@ -2,7 +2,7 @@ Pillow==10.3.0
2
2
  astropy==6.1.0
3
3
  dkist-fits-specifications==4.6.0
4
4
  dkist-header-validator==5.1.1
5
- dkist-processing-common==8.2.2
5
+ dkist-processing-common==9.0.0
6
6
  dkist-processing-math==2.1.0
7
7
  dkist-processing-pac==3.0.2
8
8
  dkist-spectral-lines==3.0.0
@@ -21,7 +21,7 @@ install_requires =
21
21
  astropy == 6.1.0
22
22
  dkist-fits-specifications == 4.6.0
23
23
  dkist-header-validator == 5.1.1
24
- dkist-processing-common == 8.2.2
24
+ dkist-processing-common == 9.0.0
25
25
  dkist-processing-math == 2.1.0
26
26
  dkist-processing-pac == 3.0.2
27
27
  dkist-spectral-lines == 3.0.0
@@ -1,7 +0,0 @@
1
- v0.0.1 (2023-08-25)
2
- ===================
3
-
4
- Misc
5
- ----
6
-
7
- - Initial release of pipeline for science review