dkist-processing-cryonirsp 1.4.2__tar.gz → 1.4.4__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 (124) hide show
  1. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/CHANGELOG.rst +18 -0
  2. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/PKG-INFO +5 -5
  3. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/models/constants.py +6 -0
  4. dkist_processing_cryonirsp-1.4.4/dkist_processing_cryonirsp/parsers/check_for_gains.py +58 -0
  5. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/parse.py +2 -0
  6. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/conftest.py +1 -1
  7. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_parse.py +58 -0
  8. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp.egg-info/PKG-INFO +5 -5
  9. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +1 -0
  10. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp.egg-info/requires.txt +4 -4
  11. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/pyproject.toml +4 -4
  12. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/.gitignore +0 -0
  13. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/.pre-commit-config.yaml +0 -0
  14. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/.readthedocs.yml +0 -0
  15. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/README.rst +0 -0
  16. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/SCIENCE_CHANGELOG.rst +0 -0
  17. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/bitbucket-pipelines.yml +0 -0
  18. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/changelog/.gitempty +0 -0
  19. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/check_changelog_updated.sh +0 -0
  20. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/__init__.py +0 -0
  21. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/config.py +0 -0
  22. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/models/__init__.py +0 -0
  23. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/models/exposure_conditions.py +0 -0
  24. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/models/parameters.py +0 -0
  25. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/models/tags.py +0 -0
  26. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/models/task_name.py +0 -0
  27. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
  28. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +0 -0
  29. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
  30. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/exposure_conditions.py +0 -0
  31. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
  32. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
  33. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/modstates.py +0 -0
  34. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +0 -0
  35. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/polarimetric_check.py +0 -0
  36. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
  37. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/time.py +0 -0
  38. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/parsers/wavelength.py +0 -0
  39. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
  40. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
  41. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
  42. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +0 -0
  43. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
  44. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
  45. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
  46. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
  47. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/gain.py +0 -0
  48. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +0 -0
  49. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -0
  50. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/linearity_correction.py +0 -0
  51. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
  52. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
  53. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/mixin/beam_access.py +0 -0
  54. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +0 -0
  55. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/mixin/intermediate_frame.py +0 -0
  56. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/mixin/linearized_frame.py +0 -0
  57. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/mixin/shift_measurements.py +0 -0
  58. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/quality_metrics.py +0 -0
  59. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/science_base.py +0 -0
  60. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
  61. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/sp_dispersion_axis_correction.py +0 -0
  62. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/sp_geometric.py +0 -0
  63. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -0
  64. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +0 -0
  65. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
  66. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
  67. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/header_models.py +0 -0
  68. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/local_trial_workflows/__init__.py +0 -0
  69. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py +0 -0
  70. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py +0 -0
  71. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/local_trial_workflows/linearize_only.py +0 -0
  72. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py +0 -0
  73. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +0 -0
  74. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_assemble_qualilty.py +0 -0
  75. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +0 -0
  76. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +0 -0
  77. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_ci_science.py +0 -0
  78. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_corrections.py +0 -0
  79. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
  80. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
  81. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_dark.py +0 -0
  82. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_gain.py +0 -0
  83. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +0 -0
  84. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +0 -0
  85. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_make_movie_frames.py +0 -0
  86. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_parameters.py +0 -0
  87. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_quality.py +0 -0
  88. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +0 -0
  89. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_sp_dispersion_axis_correction.py +0 -0
  90. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +0 -0
  91. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +0 -0
  92. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_sp_science.py +0 -0
  93. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_sp_solar.py +0 -0
  94. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_trial_create_quality_report.py +0 -0
  95. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
  96. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/tests/test_write_l1.py +0 -0
  97. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
  98. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
  99. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
  100. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
  101. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
  102. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
  103. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/Makefile +0 -0
  104. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/bad_pixel_calibration.rst +0 -0
  105. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/beam_angle_calculation.rst +0 -0
  106. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/beam_boundary_computation.rst +0 -0
  107. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/changelog.rst +0 -0
  108. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/ci_science_calibration.rst +0 -0
  109. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/conf.py +0 -0
  110. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/index.rst +0 -0
  111. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/l0_to_l1_cryonirsp_ci-full-trial.rst +0 -0
  112. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
  113. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/l0_to_l1_cryonirsp_sp-full-trial.rst +0 -0
  114. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
  115. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/linearization.rst +0 -0
  116. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/make.bat +0 -0
  117. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/requirements.txt +0 -0
  118. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/requirements_table.rst +0 -0
  119. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/scientific_changelog.rst +0 -0
  120. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/docs/sp_science_calibration.rst +0 -0
  121. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/licenses/LICENSE.rst +0 -0
  122. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/science_towncrier.sh +0 -0
  123. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/setup.cfg +0 -0
  124. {dkist_processing_cryonirsp-1.4.2 → dkist_processing_cryonirsp-1.4.4}/towncrier_science.toml +0 -0
@@ -1,3 +1,21 @@
1
+ v1.4.4 (2024-11-21)
2
+ ===================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - This change adds a new pickybud to make sure that the dataset contains both lamp gain frames and solar gain frames (we need both for calibration). If we don't have both types of frames, the pipeline will fail fast. (`#159 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/159>`__)
8
+
9
+
10
+ v1.4.3 (2024-11-21)
11
+ ===================
12
+
13
+ Bugfixes
14
+ --------
15
+
16
+ - Update dkist-inventory and dkist-processing-common to fix a bug in producing dataset inventory from the SPECLN* keys
17
+
18
+
1
19
  v1.4.2 (2024-11-20)
2
20
  ===================
3
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist-processing-cryonirsp
3
- Version: 1.4.2
3
+ Version: 1.4.4
4
4
  Summary: Science processing code for the Cryo-NIRSP instrument on DKIST
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -17,7 +17,7 @@ Requires-Dist: Pillow==10.3.0
17
17
  Requires-Dist: astropy==6.1.0
18
18
  Requires-Dist: dkist-fits-specifications==4.7.0
19
19
  Requires-Dist: dkist-header-validator==5.1.1
20
- Requires-Dist: dkist-processing-common==10.5.1
20
+ Requires-Dist: dkist-processing-common==10.5.2
21
21
  Requires-Dist: dkist-processing-math==2.1.1
22
22
  Requires-Dist: dkist-processing-pac==3.1.0
23
23
  Requires-Dist: dkist-spectral-lines==3.0.0
@@ -43,16 +43,16 @@ Requires-Dist: dkist-processing-cryonirsp[asdf]; extra == "test"
43
43
  Requires-Dist: dkist-processing-cryonirsp[quality]; extra == "test"
44
44
  Provides-Extra: inventory
45
45
  Requires-Dist: dkist-processing-common[inventory]; extra == "inventory"
46
- Requires-Dist: dkist-inventory==1.4.2; extra == "inventory"
46
+ Requires-Dist: dkist-inventory==1.4.3; extra == "inventory"
47
47
  Provides-Extra: asdf
48
48
  Requires-Dist: dkist-processing-common[asdf]; extra == "asdf"
49
- Requires-Dist: dkist-inventory[asdf]==1.4.2; extra == "asdf"
49
+ Requires-Dist: dkist-inventory[asdf]==1.4.3; extra == "asdf"
50
50
  Provides-Extra: quality
51
51
  Requires-Dist: dkist-quality==1.1.1; extra == "quality"
52
52
  Provides-Extra: grogu
53
53
  Requires-Dist: dkist; extra == "grogu"
54
54
  Requires-Dist: pyparsing; extra == "grogu"
55
- Requires-Dist: dkist-inventory>=1.4.2; extra == "grogu"
55
+ Requires-Dist: dkist-inventory>=1.4.3; extra == "grogu"
56
56
  Provides-Extra: docs
57
57
  Requires-Dist: sphinx; extra == "docs"
58
58
  Requires-Dist: sphinx-astropy; extra == "docs"
@@ -46,6 +46,7 @@ class CryonirspBudName(Enum):
46
46
  roi_1_size_y = "ROI_1_SIZE_Y"
47
47
  optical_density_filter_picky_bud = "OPTICAL_DENSITY_FILTER_PICKY_BUD"
48
48
  solar_gain_ip_start_time = "SOLAR_GAIN_IP_START_TIME"
49
+ gain_frame_type_list = "GAIN_FRAME_TYPE_LIST"
49
50
 
50
51
 
51
52
  class CryonirspConstants(ConstantsBase):
@@ -124,6 +125,11 @@ class CryonirspConstants(ConstantsBase):
124
125
  """Construct a sorted tuple of all the dateobs for this dataset."""
125
126
  return self._db_dict[CryonirspBudName.time_obs_list.value]
126
127
 
128
+ @property
129
+ def gain_frame_type_list(self) -> list[str]:
130
+ """Construct a list of all the types of gain frames for this dataset."""
131
+ return self._db_dict[CryonirspBudName.gain_frame_type_list.value]
132
+
127
133
  @property
128
134
  def exposure_conditions_list(self) -> [ExposureConditions]:
129
135
  """Construct a list of ExposureConditions tuples for the dataset."""
@@ -0,0 +1,58 @@
1
+ """Pickybud to check for lamp gain and solar gain frames."""
2
+ from typing import Hashable
3
+ from typing import Type
4
+
5
+ from dkist_processing_common.models.flower_pot import SpilledDirt
6
+ from dkist_processing_common.models.flower_pot import Stem
7
+ from dkist_processing_common.models.flower_pot import Thorn
8
+ from dkist_processing_common.models.task_name import TaskName
9
+ from dkist_processing_common.parsers.task import parse_header_ip_task_with_gains
10
+
11
+ from dkist_processing_cryonirsp.models.constants import CryonirspBudName
12
+ from dkist_processing_cryonirsp.parsers.cryonirsp_l0_fits_access import CryonirspL0FitsAccess
13
+
14
+
15
+ class CheckGainFramesPickyBud(Stem):
16
+ """Pickybud to check for lamp gain and solar gain frames."""
17
+
18
+ def __init__(self):
19
+ super().__init__(stem_name=CryonirspBudName.gain_frame_type_list.value)
20
+
21
+ def setter(self, fits_obj: CryonirspL0FitsAccess) -> Type[SpilledDirt] | str:
22
+ """
23
+ Set the calibration frame type for this fits object.
24
+
25
+ Parameters
26
+ ----------
27
+ fits_obj
28
+ The input fits object
29
+ Returns
30
+ -------
31
+ The calibration frame object associated with this fits object
32
+ """
33
+ task = parse_header_ip_task_with_gains(fits_obj).casefold()
34
+
35
+ if task in [TaskName.lamp_gain.value.casefold(), TaskName.solar_gain.value.casefold()]:
36
+ return task
37
+ return SpilledDirt
38
+
39
+ def getter(self, key: Hashable) -> Thorn:
40
+ """
41
+ Check that lamp and solar gain frames exist. If they do, return a Thorn.
42
+
43
+ Parameters
44
+ ----------
45
+ key
46
+ The input key
47
+
48
+ Returns
49
+ -------
50
+ Thorn
51
+ """
52
+ gain_task_types = list(self.key_to_petal_dict.values())
53
+
54
+ if TaskName.lamp_gain.value.casefold() not in gain_task_types:
55
+ raise ValueError("Lamp gain frames not found.")
56
+ if TaskName.solar_gain.value.casefold() not in gain_task_types:
57
+ raise ValueError("Solar gain frames not found.")
58
+ return Thorn
@@ -25,6 +25,7 @@ from dkist_processing_cryonirsp.models.constants import CryonirspBudName
25
25
  from dkist_processing_cryonirsp.models.parameters import CryonirspParsingParameters
26
26
  from dkist_processing_cryonirsp.models.tags import CryonirspStemName
27
27
  from dkist_processing_cryonirsp.models.tags import CryonirspTag
28
+ from dkist_processing_cryonirsp.parsers.check_for_gains import CheckGainFramesPickyBud
28
29
  from dkist_processing_cryonirsp.parsers.cryonirsp_l0_fits_access import CryonirspL0FitsAccess
29
30
  from dkist_processing_cryonirsp.parsers.cryonirsp_l0_fits_access import CryonirspRampFitsAccess
30
31
  from dkist_processing_cryonirsp.parsers.exposure_conditions import (
@@ -179,6 +180,7 @@ class ParseL0CryonirspLinearizedData(ParseDataBase, InputDatasetMixin):
179
180
  NumberOfScanStepsBud(),
180
181
  NumberOfMeasurementsBud(),
181
182
  CryonirspSolarGainStartTimeBud(),
183
+ CheckGainFramesPickyBud(),
182
184
  NumCSStepBud(self.parameters.max_cs_step_time_sec),
183
185
  CryonirspTaskExposureConditionsBud(
184
186
  stem_name=CryonirspBudName.dark_frame_exposure_conditions_list.value,
@@ -72,7 +72,7 @@ def generate_214_l1_fits_frame(
72
72
  ) -> fits.HDUList:
73
73
  """Convert S122 header into 214 L1 only.
74
74
 
75
- This does NOT include populating all L1 headers, just removing 214 L0 only headers
75
+ This does NOT include populating all L1 headers, just removing 214 L0 only headers.
76
76
 
77
77
  NOTE: The stuff you care about will be in hdulist[1]
78
78
  """
@@ -1437,3 +1437,61 @@ def test_polarimetric_checking_unique_bud(dummy_fits_obj):
1437
1437
  Bud.update("key1", nonpol_obs_frame2)
1438
1438
  Bud.update("key2", pol_frame2)
1439
1439
  assert Bud.getter("key1") == "Bad"
1440
+
1441
+
1442
+ @pytest.mark.parametrize("arm_id", ["CI", "SP"])
1443
+ def test_missing_solar_gain_frames(parse_linearized_task, arm_id):
1444
+ """
1445
+ Given: A dataset missing solar gain frames
1446
+ When: Parsing
1447
+ Then: The 'CheckGainFramesPickyBud' raises an error
1448
+ """
1449
+ task = parse_linearized_task
1450
+
1451
+ lin_tag = [CryonirspTag.linearized()]
1452
+ gain_exposure_condition = ExposureConditions(
1453
+ 10.0, AllowableOpticalDensityFilterNames.OPEN.value
1454
+ )
1455
+ dark_exp_condition = ExposureConditions(10.0, AllowableOpticalDensityFilterNames.OPEN.value)
1456
+
1457
+ # Needed so the dark picky bud is happy
1458
+ write_dark_frames_to_task(task, exposure_condition=dark_exp_condition, tags=lin_tag)
1459
+
1460
+ write_lamp_gain_frames_to_task(
1461
+ task,
1462
+ tags=lin_tag,
1463
+ exposure_condition=gain_exposure_condition,
1464
+ num_modstates=1,
1465
+ )
1466
+
1467
+ with pytest.raises(ValueError, match="Solar gain frames not found."):
1468
+ task()
1469
+
1470
+
1471
+ @pytest.mark.parametrize("arm_id", ["CI", "SP"])
1472
+ def test_missing_lamp_gain_frames(parse_linearized_task, arm_id):
1473
+ """
1474
+ Given: A dataset missing lamp gain frames
1475
+ When: Parsing
1476
+ Then: The 'CheckGainFramesPickyBud' raises an error
1477
+ """
1478
+ task = parse_linearized_task
1479
+
1480
+ lin_tag = [CryonirspTag.linearized()]
1481
+ gain_exposure_condition = ExposureConditions(
1482
+ 10.0, AllowableOpticalDensityFilterNames.OPEN.value
1483
+ )
1484
+ dark_exp_condition = ExposureConditions(10.0, AllowableOpticalDensityFilterNames.OPEN.value)
1485
+
1486
+ # Needed so the dark picky bud is happy
1487
+ write_dark_frames_to_task(task, exposure_condition=dark_exp_condition, tags=lin_tag)
1488
+
1489
+ write_solar_gain_frames_to_task(
1490
+ task,
1491
+ tags=lin_tag,
1492
+ exposure_condition=gain_exposure_condition,
1493
+ num_modstates=1,
1494
+ )
1495
+
1496
+ with pytest.raises(ValueError, match="Lamp gain frames not found."):
1497
+ task()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist-processing-cryonirsp
3
- Version: 1.4.2
3
+ Version: 1.4.4
4
4
  Summary: Science processing code for the Cryo-NIRSP instrument on DKIST
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -17,7 +17,7 @@ Requires-Dist: Pillow==10.3.0
17
17
  Requires-Dist: astropy==6.1.0
18
18
  Requires-Dist: dkist-fits-specifications==4.7.0
19
19
  Requires-Dist: dkist-header-validator==5.1.1
20
- Requires-Dist: dkist-processing-common==10.5.1
20
+ Requires-Dist: dkist-processing-common==10.5.2
21
21
  Requires-Dist: dkist-processing-math==2.1.1
22
22
  Requires-Dist: dkist-processing-pac==3.1.0
23
23
  Requires-Dist: dkist-spectral-lines==3.0.0
@@ -43,16 +43,16 @@ Requires-Dist: dkist-processing-cryonirsp[asdf]; extra == "test"
43
43
  Requires-Dist: dkist-processing-cryonirsp[quality]; extra == "test"
44
44
  Provides-Extra: inventory
45
45
  Requires-Dist: dkist-processing-common[inventory]; extra == "inventory"
46
- Requires-Dist: dkist-inventory==1.4.2; extra == "inventory"
46
+ Requires-Dist: dkist-inventory==1.4.3; extra == "inventory"
47
47
  Provides-Extra: asdf
48
48
  Requires-Dist: dkist-processing-common[asdf]; extra == "asdf"
49
- Requires-Dist: dkist-inventory[asdf]==1.4.2; extra == "asdf"
49
+ Requires-Dist: dkist-inventory[asdf]==1.4.3; extra == "asdf"
50
50
  Provides-Extra: quality
51
51
  Requires-Dist: dkist-quality==1.1.1; extra == "quality"
52
52
  Provides-Extra: grogu
53
53
  Requires-Dist: dkist; extra == "grogu"
54
54
  Requires-Dist: pyparsing; extra == "grogu"
55
- Requires-Dist: dkist-inventory>=1.4.2; extra == "grogu"
55
+ Requires-Dist: dkist-inventory>=1.4.3; extra == "grogu"
56
56
  Provides-Extra: docs
57
57
  Requires-Dist: sphinx; extra == "docs"
58
58
  Requires-Dist: sphinx-astropy; extra == "docs"
@@ -24,6 +24,7 @@ dkist_processing_cryonirsp/models/parameters.py
24
24
  dkist_processing_cryonirsp/models/tags.py
25
25
  dkist_processing_cryonirsp/models/task_name.py
26
26
  dkist_processing_cryonirsp/parsers/__init__.py
27
+ dkist_processing_cryonirsp/parsers/check_for_gains.py
27
28
  dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py
28
29
  dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py
29
30
  dkist_processing_cryonirsp/parsers/exposure_conditions.py
@@ -2,7 +2,7 @@ Pillow==10.3.0
2
2
  astropy==6.1.0
3
3
  dkist-fits-specifications==4.7.0
4
4
  dkist-header-validator==5.1.1
5
- dkist-processing-common==10.5.1
5
+ dkist-processing-common==10.5.2
6
6
  dkist-processing-math==2.1.1
7
7
  dkist-processing-pac==3.1.0
8
8
  dkist-spectral-lines==3.0.0
@@ -18,7 +18,7 @@ sunpy==5.1.3
18
18
 
19
19
  [asdf]
20
20
  dkist-processing-common[asdf]
21
- dkist-inventory[asdf]==1.4.2
21
+ dkist-inventory[asdf]==1.4.3
22
22
 
23
23
  [docs]
24
24
  sphinx
@@ -32,11 +32,11 @@ dkist-sphinx-theme
32
32
  [grogu]
33
33
  dkist
34
34
  pyparsing
35
- dkist-inventory>=1.4.2
35
+ dkist-inventory>=1.4.3
36
36
 
37
37
  [inventory]
38
38
  dkist-processing-common[inventory]
39
- dkist-inventory==1.4.2
39
+ dkist-inventory==1.4.3
40
40
 
41
41
  [quality]
42
42
  dkist-quality==1.1.1
@@ -25,7 +25,7 @@ dependencies = [
25
25
  "astropy == 6.1.0",
26
26
  "dkist-fits-specifications == 4.7.0",
27
27
  "dkist-header-validator == 5.1.1",
28
- "dkist-processing-common == 10.5.1",
28
+ "dkist-processing-common == 10.5.2",
29
29
  "dkist-processing-math == 2.1.1",
30
30
  "dkist-processing-pac == 3.1.0",
31
31
  "dkist-spectral-lines == 3.0.0",
@@ -61,11 +61,11 @@ test = [
61
61
  ]
62
62
  inventory = [
63
63
  "dkist-processing-common[inventory]",
64
- "dkist-inventory==1.4.2",
64
+ "dkist-inventory==1.4.3",
65
65
  ]
66
66
  asdf = [
67
67
  "dkist-processing-common[asdf]",
68
- "dkist-inventory[asdf]==1.4.2",
68
+ "dkist-inventory[asdf]==1.4.3",
69
69
  ]
70
70
  quality = [
71
71
  "dkist-quality==1.1.1",
@@ -73,7 +73,7 @@ quality = [
73
73
  grogu = [
74
74
  "dkist",
75
75
  "pyparsing",
76
- "dkist-inventory >= 1.4.2",
76
+ "dkist-inventory >= 1.4.3",
77
77
  ]
78
78
  docs = [
79
79
  "sphinx",