dkist-processing-cryonirsp 0.0.23rc2__tar.gz → 0.0.25rc1__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 (114) hide show
  1. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/CHANGELOG.rst +18 -0
  2. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/PKG-INFO +1 -1
  3. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/bitbucket-pipelines.yml +16 -1
  4. dkist_processing_cryonirsp-0.0.25rc1/changelog/84.bugfix.rst +2 -0
  5. dkist_processing_cryonirsp-0.0.25rc1/changelog/84.misc.rst +1 -0
  6. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/science_base.py +63 -9
  7. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_ci_science.py +3 -0
  8. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_sp_science.py +3 -0
  9. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_write_l1.py +14 -1
  10. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp.egg-info/PKG-INFO +1 -1
  11. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +2 -1
  12. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp.egg-info/requires.txt +6 -6
  13. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/setup.cfg +6 -6
  14. dkist_processing_cryonirsp-0.0.23rc2/changelog/81.misc.rst +0 -1
  15. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/.gitignore +0 -0
  16. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/.pre-commit-config.yaml +0 -0
  17. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/.readthedocs.yml +0 -0
  18. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/README.rst +0 -0
  19. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/SCIENCE_CHANGELOG.rst +0 -0
  20. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/changelog/.gitempty +0 -0
  21. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/check_changelog_updated.sh +0 -0
  22. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/__init__.py +0 -0
  23. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/models/__init__.py +0 -0
  24. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/models/constants.py +0 -0
  25. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/models/filter.py +0 -0
  26. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/models/optical_density_filter_names.py +0 -0
  27. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/models/parameters.py +0 -0
  28. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/models/tags.py +0 -0
  29. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/models/task_name.py +0 -0
  30. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
  31. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +0 -0
  32. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
  33. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
  34. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
  35. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/modstates.py +0 -0
  36. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +0 -0
  37. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/polarimeter_mode.py +0 -0
  38. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
  39. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/time.py +0 -0
  40. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/parsers/wavelength.py +0 -0
  41. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
  42. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
  43. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
  44. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +0 -0
  45. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
  46. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
  47. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
  48. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
  49. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/gain.py +0 -0
  50. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +0 -0
  51. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -0
  52. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/linearity_correction.py +0 -0
  53. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
  54. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
  55. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/mixin/beam_access.py +0 -0
  56. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +0 -0
  57. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/mixin/intermediate_frame.py +0 -0
  58. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/mixin/linearized_frame.py +0 -0
  59. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/parse.py +0 -0
  60. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/quality_metrics.py +0 -0
  61. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
  62. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/sp_geometric.py +0 -0
  63. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -0
  64. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +0 -0
  65. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/trial_output_data.py +0 -0
  66. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
  67. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
  68. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/ci_e2e_test.py +0 -0
  69. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/conftest.py +0 -0
  70. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/e2e_helpers.py +0 -0
  71. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/e2e_linearize.py +0 -0
  72. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/header_models.py +0 -0
  73. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/sp_e2e_test.py +0 -0
  74. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +0 -0
  75. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +0 -0
  76. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_build_quality_report.py +0 -0
  77. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +0 -0
  78. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_ci_make_movie_frames.py +0 -0
  79. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
  80. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
  81. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_dark.py +0 -0
  82. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_gain.py +0 -0
  83. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +0 -0
  84. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +0 -0
  85. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_parameters.py +0 -0
  86. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_parse.py +0 -0
  87. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_quality.py +0 -0
  88. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +0 -0
  89. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +0 -0
  90. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +0 -0
  91. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_sp_solar.py +0 -0
  92. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_submit_qualilty.py +0 -0
  93. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
  94. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
  95. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
  96. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
  97. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
  98. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
  99. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
  100. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/Makefile +0 -0
  101. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/changelog.rst +0 -0
  102. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/conf.py +0 -0
  103. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/index.rst +0 -0
  104. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
  105. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
  106. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/make.bat +0 -0
  107. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/requirements.txt +0 -0
  108. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/requirements_table.rst +0 -0
  109. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/docs/scientific_changelog.rst +0 -0
  110. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/licenses/LICENSE.rst +0 -0
  111. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/pyproject.toml +0 -0
  112. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/science_towncrier.sh +0 -0
  113. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/setup.py +0 -0
  114. {dkist_processing_cryonirsp-0.0.23rc2 → dkist_processing_cryonirsp-0.0.25rc1}/towncrier_science.toml +0 -0
@@ -1,3 +1,21 @@
1
+ v0.0.24 (2024-01-03)
2
+ ====================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - Bump version of `dkist-processing-pac` to v3.0.1. No change to pipeline behavior at all. (`#82 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/82>`__)
8
+
9
+
10
+ v0.0.23 (2023-12-20)
11
+ ====================
12
+
13
+ Misc
14
+ ----
15
+
16
+ - Adding manual processing worker capabilities via dkist-processing-common update. (`#81 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/81>`__)
17
+
18
+
1
19
  v0.0.22 (2023-12-01)
2
20
  ====================
3
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist_processing_cryonirsp
3
- Version: 0.0.23rc2
3
+ Version: 0.0.25rc1
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
@@ -123,6 +123,21 @@ pipelines:
123
123
  - step: *scan
124
124
  - step: *test
125
125
  - step: *docs
126
+ custom:
127
+ build_rc: # I.e. skip the doc check (because we might have rc dependencies)
128
+ - variables:
129
+ - name: BITBUCKET_TAG
130
+ description: "Tag version to build (e.g., 'vX.Y.ZrcR')"
131
+ - parallel:
132
+ - step: *changelog
133
+ - step: *lint
134
+ - parallel:
135
+ - step: *scan
136
+ - step: *test
137
+ - parallel:
138
+ - step: *push_workflow
139
+ - step: *push_mpw
140
+ - step: *push_code
126
141
  tags:
127
142
  'v*':
128
143
  - parallel:
@@ -131,7 +146,7 @@ pipelines:
131
146
  - parallel:
132
147
  - step: *scan
133
148
  - step: *test
134
- #- step: *docs
149
+ - step: *docs
135
150
  - parallel:
136
151
  - step: *push_workflow
137
152
  - step: *push_mpw
@@ -0,0 +1,2 @@
1
+ Compute polarimetric noise and sensitivity values and add to L1 headers (POL_NOIS, and POL_SENS, respectively). These
2
+ keywords are now required by the fits-spec.
@@ -0,0 +1 @@
1
+ Update `dkist-fits-specifications` and associated (validator, simulator) to use new conditional requiredness framework.
@@ -297,20 +297,28 @@ class ScienceCalibrationBase(CryonirspTaskBase, ABC):
297
297
  meas_num
298
298
  The current measurement number
299
299
  """
300
+ final_header = self._update_calibrated_header(calibrated_object.header, map_scan=map_scan)
300
301
  if self.constants.correct_for_polarization:
301
- stokes_targets = self.constants.stokes_params
302
- else:
303
- stokes_targets = self.constants.stokes_I_list
302
+ stokes_I_data = calibrated_object.data[:, :, 0]
303
+ for s, stokes_param in enumerate(self.constants.stokes_params):
304
+ stokes_data = calibrated_object.data[:, :, s]
305
+ final_data = self._re_dummy_data(stokes_data)
306
+ pol_header = self._add_L1_pol_headers(final_header, stokes_data, stokes_I_data)
307
+ self._write_calibrated_array(
308
+ data=final_data,
309
+ header=pol_header,
310
+ stokes=stokes_param,
311
+ meas_num=meas_num,
312
+ scan_step=scan_step,
313
+ map_scan=map_scan,
314
+ )
304
315
 
305
- for i, stokes_param in enumerate(stokes_targets):
306
- final_data = self._re_dummy_data(calibrated_object.data[:, :, i])
307
- final_header = self._update_calibrated_header(
308
- calibrated_object.header, map_scan=map_scan
309
- )
316
+ else:
317
+ final_data = self._re_dummy_data(calibrated_object.data[:, :, 0])
310
318
  self._write_calibrated_array(
311
319
  data=final_data,
312
320
  header=final_header,
313
- stokes=stokes_param,
321
+ stokes="I",
314
322
  meas_num=meas_num,
315
323
  scan_step=scan_step,
316
324
  map_scan=map_scan,
@@ -405,6 +413,52 @@ class ScienceCalibrationBase(CryonirspTaskBase, ABC):
405
413
 
406
414
  return header
407
415
 
416
+ def _add_L1_pol_headers(
417
+ self, input_header: fits.Header, stokes_data: np.ndarray, stokes_I_data: np.ndarray
418
+ ) -> fits.Header:
419
+ """Compute and add 214 header values specific to polarimetric datasets."""
420
+ # Probably not needed, but just to be safe
421
+ output_header = input_header.copy()
422
+
423
+ pol_noise = self.compute_polarimetric_noise(stokes_data, stokes_I_data)
424
+ pol_sensitivity = self.compute_polarimetric_sensitivity(stokes_I_data)
425
+ output_header["POL_NOIS"] = pol_noise
426
+ output_header["POL_SENS"] = pol_sensitivity
427
+
428
+ return output_header
429
+
430
+ def compute_polarimetric_noise(
431
+ self, stokes_data: np.ndarray, stokes_I_data: np.ndarray
432
+ ) -> float:
433
+ r"""
434
+ Compute the polarimetric noise for a single frame.
435
+
436
+ The polarimetric noise, :math:`N`, is defined as
437
+
438
+ .. math::
439
+
440
+ N = stddev(\frac{F_i}{F_I})
441
+
442
+ where :math:`F_i` is a full array of values for Stokes parameter :math:`i` (I, Q, U, V), and :math:`F_I` is the
443
+ full frame of Stokes-I. The stddev is computed across the entire frame.
444
+ """
445
+ return float(np.nanstd(stokes_data / stokes_I_data))
446
+
447
+ def compute_polarimetric_sensitivity(self, stokes_I_data: np.ndarray) -> float:
448
+ r"""
449
+ Compute the polarimetric sensitivity for a single frame.
450
+
451
+ The polarimetric sensitivity is the smallest signal that can be measured based on the values in the Stokes-I
452
+ frame. The sensitivity, :math:`S`, is computed as
453
+
454
+ .. math::
455
+
456
+ S = \frac{1}{\sqrt{\mathrm{max}(F_I)}}
457
+
458
+ where :math:`F_I` is the full frame of values for Stokes-I.
459
+ """
460
+ return float(1.0 / np.sqrt(np.nanmax(stokes_I_data)))
461
+
408
462
  def _write_calibrated_array(
409
463
  self,
410
464
  data: np.ndarray,
@@ -257,6 +257,9 @@ def test_ci_science_calibration_task(ci_science_calibration_task, mocker):
257
257
  assert hdu.data.shape == expected_final_shape
258
258
  assert "DATE-BEG" in hdu.header.keys()
259
259
  assert "DATE-END" in hdu.header.keys()
260
+ if polarization_mode == "Full Stokes":
261
+ assert "POL_NOIS" in hdu.header.keys()
262
+ assert "POL_SENS" in hdu.header.keys()
260
263
 
261
264
  # Check that scan step keys were updated
262
265
  scan_step = [
@@ -305,6 +305,9 @@ def test_sp_science_calibration_task(sp_science_calibration_task, mocker):
305
305
  assert hdu.data.shape == expected_final_shape
306
306
  assert "DATE-BEG" in hdu.header.keys()
307
307
  assert "DATE-END" in hdu.header.keys()
308
+ if polarization_mode == "Full Stokes":
309
+ assert "POL_NOIS" in hdu.header.keys()
310
+ assert "POL_SENS" in hdu.header.keys()
308
311
 
309
312
  # Check that scan step keys were updated
310
313
  scan_step = [
@@ -1,5 +1,4 @@
1
1
  from datetime import datetime
2
- from typing import Literal
3
2
 
4
3
  import numpy as np
5
4
  import pytest
@@ -83,6 +82,20 @@ def write_l1_task(
83
82
  hdul[0].header["CTYPE1"] = axis_1_type
84
83
  hdul[0].header["CTYPE2"] = axis_2_type
85
84
  hdul[0].header["CTYPE3"] = axis_3_type
85
+ hdul[0].header["CNNMAPS"] = num_map_scans
86
+
87
+ # Set CNMODNST and CNSPINMD so the correct schema is loaded for validation
88
+ hdul[0].header["CNMODNST"] = num_modstates
89
+ if num_stokes_params > 1:
90
+ hdul[0].header["CNSPINMD"] = "Continuous"
91
+
92
+ # These headers are added to polarimetric frames in the science task
93
+ hdul[0].header["POL_NOIS"] = 0.1
94
+ hdul[0].header["POL_SENS"] = 0.2
95
+
96
+ else:
97
+ hdul[0].header["CNSPINMD"] = "None"
98
+
86
99
  for map_scan in range(1, num_map_scans + 1):
87
100
  for scan_step in range(1, num_scan_steps + 1):
88
101
  for meas_num in range(1, num_meas + 1):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist-processing-cryonirsp
3
- Version: 0.0.23rc2
3
+ Version: 0.0.25rc1
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
@@ -12,7 +12,8 @@ setup.cfg
12
12
  setup.py
13
13
  towncrier_science.toml
14
14
  changelog/.gitempty
15
- changelog/81.misc.rst
15
+ changelog/84.bugfix.rst
16
+ changelog/84.misc.rst
16
17
  dkist_processing_cryonirsp/__init__.py
17
18
  dkist_processing_cryonirsp.egg-info/PKG-INFO
18
19
  dkist_processing_cryonirsp.egg-info/SOURCES.txt
@@ -1,10 +1,10 @@
1
1
  Pillow==10.0.1
2
2
  astropy==5.3.2
3
- dkist-fits-specifications==3.9.0
4
- dkist-header-validator==4.1.0
5
- dkist-processing-common==5.0.0rc1
3
+ dkist-fits-specifications==4.0.0rc5
4
+ dkist-header-validator==5.0.0rc6
5
+ dkist-processing-common==5.0.1rc1
6
6
  dkist-processing-math==2.0.0
7
- dkist-processing-pac==3.0.0
7
+ dkist-processing-pac==3.0.1
8
8
  dkist-spectral-lines==2.0.0
9
9
  largestinteriorrectangle==0.2.0
10
10
  dkist-service-configuration==1.1.0
@@ -28,7 +28,7 @@ dkist-sphinx-theme
28
28
  [grogu]
29
29
  dkist
30
30
  pyparsing
31
- dkist-inventory
31
+ dkist-inventory==1.2.2rc3
32
32
 
33
33
  [test]
34
34
  pytest
@@ -37,4 +37,4 @@ pytest-xdist
37
37
  pytest-mock
38
38
  hypothesis
39
39
  towncrier
40
- dkist-data-simulator
40
+ dkist-data-simulator==5.0.0rc5
@@ -19,11 +19,11 @@ include_package_data = True
19
19
  install_requires =
20
20
  Pillow == 10.0.1
21
21
  astropy == 5.3.2
22
- dkist-fits-specifications == 3.9.0
23
- dkist-header-validator == 4.1.0
24
- dkist-processing-common == 5.0.0rc1
22
+ dkist-fits-specifications == 4.0.0rc5
23
+ dkist-header-validator == 5.0.0rc6
24
+ dkist-processing-common == 5.0.1rc1
25
25
  dkist-processing-math == 2.0.0
26
- dkist-processing-pac == 3.0.0
26
+ dkist-processing-pac == 3.0.1
27
27
  dkist-spectral-lines == 2.0.0
28
28
  largestinteriorrectangle == 0.2.0
29
29
  dkist-service-configuration == 1.1.0
@@ -43,11 +43,11 @@ test =
43
43
  pytest-mock
44
44
  hypothesis
45
45
  towncrier
46
- dkist-data-simulator
46
+ dkist-data-simulator == 5.0.0rc5
47
47
  grogu =
48
48
  dkist
49
49
  pyparsing
50
- dkist-inventory
50
+ dkist-inventory == 1.2.2rc3
51
51
  docs =
52
52
  sphinx
53
53
  sphinx-astropy
@@ -1 +0,0 @@
1
- Adding manual processing worker capabilities via dkist-processing-common update.