dkist-processing-cryonirsp 0.0.17rc2__tar.gz → 0.0.18__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.17rc2 → dkist_processing_cryonirsp-0.0.18}/CHANGELOG.rst +20 -0
  2. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/PKG-INFO +1 -1
  3. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/optical_density_filter_names.py +3 -2
  4. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/parameters.py +1 -0
  5. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +1 -1
  6. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +1 -1
  7. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/science_base.py +5 -8
  8. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -16
  9. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +2 -3
  10. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/header_models.py +1 -1
  11. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +1 -1
  12. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_parse.py +12 -3
  13. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_science.py +1 -1
  14. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/PKG-INFO +1 -1
  15. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +0 -1
  16. dkist_processing_cryonirsp-0.0.17rc2/changelog/70.feature.rst +0 -1
  17. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/.gitignore +0 -0
  18. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/.pre-commit-config.yaml +0 -0
  19. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/.readthedocs.yml +0 -0
  20. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/README.rst +0 -0
  21. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/SCIENCE_CHANGELOG.rst +0 -0
  22. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/bitbucket-pipelines.yml +0 -0
  23. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/changelog/.gitempty +0 -0
  24. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/check_changelog_updated.sh +0 -0
  25. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/__init__.py +0 -0
  26. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/__init__.py +0 -0
  27. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/constants.py +0 -0
  28. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/filter.py +0 -0
  29. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/tags.py +0 -0
  30. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/task_name.py +0 -0
  31. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
  32. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
  33. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
  34. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
  35. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/modstates.py +0 -0
  36. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/polarimeter_mode.py +0 -0
  37. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/polcal_task.py +0 -0
  38. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
  39. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/task.py +0 -0
  40. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/time.py +0 -0
  41. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/wavelength.py +0 -0
  42. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
  43. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
  44. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
  45. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +0 -0
  46. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
  47. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
  48. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
  49. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
  50. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/gain.py +0 -0
  51. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +0 -0
  52. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -0
  53. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/linearity_correction.py +0 -0
  54. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
  55. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
  56. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/beam_access.py +0 -0
  57. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +0 -0
  58. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/intermediate_frame.py +0 -0
  59. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/linearized_frame.py +0 -0
  60. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/parse.py +0 -0
  61. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/quality_metrics.py +0 -0
  62. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
  63. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/sp_geometric.py +0 -0
  64. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/trial_output_data.py +0 -0
  65. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
  66. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
  67. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/ci_e2e_test.py +0 -0
  68. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/conftest.py +0 -0
  69. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/e2e_helpers.py +0 -0
  70. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/e2e_linearize.py +0 -0
  71. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/sp_e2e_test.py +0 -0
  72. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +0 -0
  73. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +0 -0
  74. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_build_quality_report.py +0 -0
  75. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +0 -0
  76. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_ci_make_movie_frames.py +0 -0
  77. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_ci_science.py +0 -0
  78. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
  79. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
  80. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_dark.py +0 -0
  81. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_gain.py +0 -0
  82. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +0 -0
  83. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_parameters.py +0 -0
  84. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_quality.py +0 -0
  85. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +0 -0
  86. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +0 -0
  87. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +0 -0
  88. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_solar.py +0 -0
  89. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_submit_qualilty.py +0 -0
  90. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
  91. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_write_l1.py +0 -0
  92. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
  93. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
  94. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
  95. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
  96. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
  97. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/requires.txt +0 -0
  98. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
  99. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/Makefile +0 -0
  100. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/changelog.rst +0 -0
  101. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/conf.py +0 -0
  102. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/index.rst +0 -0
  103. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
  104. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
  105. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/make.bat +0 -0
  106. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/requirements.txt +0 -0
  107. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/requirements_table.rst +0 -0
  108. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/docs/scientific_changelog.rst +0 -0
  109. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/licenses/LICENSE.rst +0 -0
  110. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/pyproject.toml +0 -0
  111. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/science_towncrier.sh +0 -0
  112. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/setup.cfg +0 -0
  113. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/setup.py +0 -0
  114. {dkist_processing_cryonirsp-0.0.17rc2 → dkist_processing_cryonirsp-0.0.18}/towncrier_science.toml +0 -0
@@ -1,3 +1,23 @@
1
+ v0.0.18 (2023-11-08)
2
+ ====================
3
+
4
+ Bugfixes
5
+ --------
6
+
7
+ - Removes cross-talk correction from SP science task. (`#72 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/72>`__)
8
+ - Turn on bad-pixel correction of science observe frames for science team evaluation. (`#73 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/73>`__)
9
+ - Fix computation of characteristic spectrum by removing incorrect median normalization. (`#74 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/74>`__)
10
+
11
+
12
+ v0.0.17 (2023-11-06)
13
+ ====================
14
+
15
+ Features
16
+ --------
17
+
18
+ - Implement relative photometric calibration. Linearized ramp sets are normalized to counts per second. Attenuation due to Optical Density filters is compensated. Solar gain image is no longer normalized to mean of 1. Observe images are now in units of flux relative to solar center. (`#70 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/70>`__)
19
+
20
+
1
21
  v0.0.16 (2023-11-02)
2
22
  ====================
3
23
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist_processing_cryonirsp
3
- Version: 0.0.17rc2
3
+ Version: 0.0.18
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
@@ -5,7 +5,8 @@ from enum import StrEnum
5
5
  class AllowableOpticalDensityFilterNames(StrEnum):
6
6
  """Enum to implement list of allowable Optical Density Filter names."""
7
7
 
8
+ G278 = "G278"
8
9
  G358 = "G358"
9
10
  G408 = "G408"
10
- OPEN = "Open"
11
- NONE = "none"
11
+ OPEN = "OPEN"
12
+ NONE = "NONE"
@@ -156,6 +156,7 @@ class CryonirspParameters(ParameterBase):
156
156
  def linearization_filter_attenuation_dict(self) -> dict:
157
157
  """Return a dict that maps the filter name to its attenuation parameter."""
158
158
  filter_attenuation_dict = {
159
+ AllowableOpticalDensityFilterNames.G278.value: self._linearization_optical_density_filter_attenuation_g278,
159
160
  AllowableOpticalDensityFilterNames.G358.value: self._linearization_optical_density_filter_attenuation_g358,
160
161
  AllowableOpticalDensityFilterNames.G408.value: self._linearization_optical_density_filter_attenuation_g408,
161
162
  AllowableOpticalDensityFilterNames.OPEN.value: self._linearization_optical_density_filter_attenuation_open,
@@ -32,7 +32,7 @@ class CryonirspRampFitsAccess(L0FitsAccess):
32
32
  self.camera_readout_mode = self.header["CNCAMMD"]
33
33
  self.curr_frame_in_ramp: int = self.header["CNCNDR"]
34
34
  self.arm_id: str = self.header["CNARMID"]
35
- self.filter_name = self.header["CNFILTNP"]
35
+ self.filter_name = self.header["CNFILTNP"].upper()
36
36
  self.roi_1_origin_x = self.header["HWROI1OX"]
37
37
  self.roi_1_origin_y = self.header["HWROI1OY"]
38
38
  self.roi_1_size_x = self.header["HWROI1SX"]
@@ -31,7 +31,7 @@ class OpticalDensityFiltersPickyBud(Stem):
31
31
  -------
32
32
  The optical density filter name associated with this fits object
33
33
  """
34
- return fits_obj.filter_name
34
+ return fits_obj.filter_name.upper()
35
35
 
36
36
  def getter(self, key: Hashable) -> Thorn:
37
37
  """Return a Thorn for valid names or raise an exception for bad names."""
@@ -168,17 +168,14 @@ class ScienceCalibrationBase(CryonirspTaskBase, ABC):
168
168
  # Dark correction
169
169
  dark_corrected_array = next(subtract_array_from_arrays(avg_observe_array, dark_array))
170
170
 
171
- # TODO: Unclear how much this helps, so leaving it out for now...
172
- # TODO: Do not remove this code until we have confirmed with the cryo team
173
171
  # Bad pixel correction
174
- # bad_pixel_map = self.intermediate_frame_load_bad_pixel_map(beam=beam)
175
- # bad_pixel_corrected_array = self.corrections_correct_bad_pixels(
176
- # dark_corrected_array, bad_pixel_map
177
- # )
172
+ bad_pixel_map = self.intermediate_frame_load_bad_pixel_map(beam=beam)
173
+ bad_pixel_corrected_array = self.corrections_correct_bad_pixels(
174
+ dark_corrected_array, bad_pixel_map
175
+ )
178
176
 
179
177
  # Gain correction
180
- # gain_corrected_array = next(divide_arrays_by_array(bad_pixel_corrected_array, gain_array))
181
- gain_corrected_array = next(divide_arrays_by_array(dark_corrected_array, gain_array))
178
+ gain_corrected_array = next(divide_arrays_by_array(bad_pixel_corrected_array, gain_array))
182
179
 
183
180
  return gain_corrected_array, observe_header
184
181
 
@@ -99,7 +99,6 @@ class SPScienceCalibration(ScienceCalibrationBase):
99
99
 
100
100
  logger.info(f"Correcting telescope polarization for {logging_str}")
101
101
  calibrated = self.telescope_polarization_correction(combined)
102
- calibrated = self.remove_crosstalk(calibrated)
103
102
 
104
103
  return calibrated
105
104
 
@@ -208,21 +207,6 @@ class SPScienceCalibration(ScienceCalibrationBase):
208
207
 
209
208
  return obj
210
209
 
211
- @staticmethod
212
- def remove_crosstalk(fits_obj: CryonirspL0FitsAccess) -> CryonirspL0FitsAccess:
213
- """Remove the continuum from QUV (remove cross-talk)."""
214
- array_stack = fits_obj.data
215
- array_header = fits_obj.header
216
- for i in range(1, 4):
217
- array_stack[:, :, i] = (
218
- array_stack[:, :, i]
219
- - np.nanmedian(array_stack[:, :, i] / array_stack[:, :, 0], axis=1)[:, None]
220
- * array_stack[:, :, 0]
221
- )
222
- hdu = fits.ImageHDU(data=array_stack, header=array_header)
223
- obj = CryonirspL0FitsAccess(hdu=hdu, auto_squeeze=False)
224
- return obj
225
-
226
210
  def collect_calibration_objects(self) -> CalibrationCollection:
227
211
  """
228
212
  Collect *all* calibration for all modstates, and exposure times.
@@ -154,15 +154,14 @@ class SPSolarGainCalibration(CryonirspTaskBase):
154
154
  return spectral_corrected_solar_array
155
155
 
156
156
  def _compute_char_spectrum(self, array: np.ndarray) -> np.ndarray:
157
- """Estimate the characteristic colar spectrum from the corrected solar gain data."""
157
+ """Estimate the characteristic solar spectrum from the corrected solar gain data."""
158
158
  # Normalize data row by row
159
159
  pct = self.parameters.solar_characteristic_spatial_normalization_percentile
160
160
  array_row_norm = array / np.nanpercentile(array, pct, axis=1)[:, None]
161
161
  # Compute characteristic spectrum
162
162
  char_spec_1d = np.nanmedian(array_row_norm, axis=0)
163
- median_char_spec_1d = char_spec_1d / np.nanmean(char_spec_1d)
164
163
  # Expand the 1D median along the columns (along the slit)
165
- median_char_spec_2d = np.tile(median_char_spec_1d, (array_row_norm.shape[0], 1))
164
+ median_char_spec_2d = np.tile(char_spec_1d, (array_row_norm.shape[0], 1))
166
165
  return median_char_spec_2d
167
166
 
168
167
  def _distort_char_spectrum(self, char_spec: np.ndarray) -> np.ndarray:
@@ -108,7 +108,7 @@ class CryonirspHeadersValidNonLinearizedFrames(CryonirspHeaders):
108
108
  @key_function("XPOSURE")
109
109
  # set the exposure time for each frame in the ramp
110
110
  def exposure_time(self, key: float):
111
- return 100 * self._index * 0.01
111
+ return 100 * self.index * 0.01
112
112
 
113
113
 
114
114
  class CryonirspHeadersValidLinearizedFrames(CryonirspHeaders):
@@ -117,7 +117,7 @@ def linearity_correction(
117
117
 
118
118
  @pytest.mark.parametrize(
119
119
  "filter_name",
120
- [pytest.param("G358", id="G358"), pytest.param("Open", id="Open")],
120
+ [pytest.param("G358", id="G358"), pytest.param("OPEN", id="OPEN")],
121
121
  )
122
122
  @pytest.mark.parametrize(
123
123
  "frames_in_ramp",
@@ -721,6 +721,15 @@ def test_parse_cryonirsp_linearized_data_constants(parse_linearized_task, arm_id
721
721
 
722
722
  def test_optical_density_filter_names(parse_non_linearized_task):
723
723
  task = parse_non_linearized_task
724
- filter_map = {k for k in task.parameters.linearization_filter_attenuation_dict.keys()}
725
- difference = filter_map.symmetric_difference(ALLOWABLE_OPTICAL_DENSITY_FILTERS)
726
- assert not difference
724
+ # List of filter attenuation parameters defined in CryonirspParameters:
725
+ defined_filter_params = {
726
+ item[-4:].upper()
727
+ for item in dir(task.parameters)
728
+ if item.startswith("_linearization_optical_density_filter_attenuation_")
729
+ }
730
+ # List of filters in the filter map:
731
+ filter_map_params = {k for k in task.parameters.linearization_filter_attenuation_dict.keys()}
732
+ # Make sure all filter parameters match the allowable list
733
+ assert not defined_filter_params.symmetric_difference(ALLOWABLE_OPTICAL_DENSITY_FILTERS)
734
+ # Make sure all filter map keys match the allowable list
735
+ assert not filter_map_params.symmetric_difference(ALLOWABLE_OPTICAL_DENSITY_FILTERS)
@@ -67,7 +67,7 @@ def sp_science_calibration_task(
67
67
  assign_input_dataset_doc_to_task(task, param_class())
68
68
  # Create fake bad pixel map
69
69
  task.intermediate_frame_write_arrays(
70
- arrays=np.zeros((1, 1)),
70
+ arrays=np.zeros((30, 60)),
71
71
  task_tag=CryonirspTag.task_bad_pixel_map(),
72
72
  )
73
73
  # Create fake demodulation matrices
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist-processing-cryonirsp
3
- Version: 0.0.17rc2
3
+ Version: 0.0.18
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,6 @@ setup.cfg
12
12
  setup.py
13
13
  towncrier_science.toml
14
14
  changelog/.gitempty
15
- changelog/70.feature.rst
16
15
  dkist_processing_cryonirsp/__init__.py
17
16
  dkist_processing_cryonirsp.egg-info/PKG-INFO
18
17
  dkist_processing_cryonirsp.egg-info/SOURCES.txt
@@ -1 +0,0 @@
1
- Implement relative photometric calibration. Linearized ramp sets are normalized to counts per second. Attenuation due to Optical Density filters is compensated. Solar gain image is no longer normalized to mean of 1. Observe images are now in units of flux relative to solar center.