dkist-processing-cryonirsp 0.0.17rc1__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.
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/CHANGELOG.rst +20 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/PKG-INFO +1 -1
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/optical_density_filter_names.py +3 -2
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/parameters.py +8 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +1 -1
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +1 -1
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/science_base.py +5 -8
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -16
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +2 -3
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/conftest.py +7 -6
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/header_models.py +1 -1
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +1 -1
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_parameters.py +21 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_parse.py +20 -10
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_science.py +1 -1
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/PKG-INFO +1 -1
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +0 -1
- dkist_processing_cryonirsp-0.0.17rc1/changelog/70.feature.rst +0 -1
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/.gitignore +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/.pre-commit-config.yaml +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/.readthedocs.yml +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/README.rst +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/SCIENCE_CHANGELOG.rst +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/changelog/.gitempty +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/check_changelog_updated.sh +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/constants.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/filter.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/tags.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/models/task_name.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/modstates.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/polarimeter_mode.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/polcal_task.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/task.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/time.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/parsers/wavelength.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/gain.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/linearity_correction.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/beam_access.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/intermediate_frame.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/mixin/linearized_frame.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/parse.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/quality_metrics.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/sp_geometric.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/trial_output_data.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/ci_e2e_test.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/e2e_helpers.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/e2e_linearize.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/sp_e2e_test.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_build_quality_report.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_ci_make_movie_frames.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_ci_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_dark.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_gain.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_quality.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_sp_solar.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_submit_qualilty.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/tests/test_write_l1.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/requires.txt +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/Makefile +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/changelog.rst +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/conf.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/index.rst +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/make.bat +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/requirements.txt +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/requirements_table.rst +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/scientific_changelog.rst +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/licenses/LICENSE.rst +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/pyproject.toml +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/science_towncrier.sh +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/setup.cfg +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/setup.py +0 -0
- {dkist_processing_cryonirsp-0.0.17rc1 → 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.
|
|
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 = "
|
|
11
|
-
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,
|
|
@@ -163,6 +164,13 @@ class CryonirspParameters(ParameterBase):
|
|
|
163
164
|
}
|
|
164
165
|
return filter_attenuation_dict
|
|
165
166
|
|
|
167
|
+
@cached_property
|
|
168
|
+
def _linearization_optical_density_filter_attenuation_g278(self) -> float:
|
|
169
|
+
"""Return the attenuation value for the G278 filter."""
|
|
170
|
+
return self._find_parameter_closest_wavelength(
|
|
171
|
+
"cryonirsp_linearization_optical_density_filter_attenuation_g278"
|
|
172
|
+
)
|
|
173
|
+
|
|
166
174
|
@cached_property
|
|
167
175
|
def _linearization_optical_density_filter_attenuation_g358(self) -> float:
|
|
168
176
|
"""Return the attenuation value for the G358 filter."""
|
|
@@ -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
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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:
|
|
@@ -329,6 +329,9 @@ def cryonirsp_testing_parameters_factory(
|
|
|
329
329
|
)
|
|
330
330
|
)
|
|
331
331
|
cryonirsp_linearization_max_memory_gb: float = 4.0
|
|
332
|
+
cryonirsp_linearization_optical_density_filter_attenuation_g278: WavelengthParameter = (
|
|
333
|
+
WavelengthParameter(values=(-1.64, -1.64, -1.64, -1.64))
|
|
334
|
+
)
|
|
332
335
|
cryonirsp_linearization_optical_density_filter_attenuation_g358: WavelengthParameter = (
|
|
333
336
|
WavelengthParameter(values=(-3.75, -3.75, -3.75, -3.75))
|
|
334
337
|
)
|
|
@@ -387,7 +390,7 @@ def assign_input_dataset_doc_to_task(
|
|
|
387
390
|
def _write_frames_to_task(
|
|
388
391
|
task: Type[WorkflowTaskBase],
|
|
389
392
|
frame_generator: Spec122Dataset,
|
|
390
|
-
change_translated_headers: Callable[[fits.Header
|
|
393
|
+
change_translated_headers: Callable[[fits.Header], fits.Header] = lambda x: x,
|
|
391
394
|
tag_ramp_frames: Callable[[fits.Header], list[str]] = lambda x: [],
|
|
392
395
|
extra_tags: list[str] | None = None,
|
|
393
396
|
tag_func: Callable[[CryonirspHeaders], list[str]] = lambda x: [],
|
|
@@ -404,11 +407,9 @@ def _write_frames_to_task(
|
|
|
404
407
|
data = frame.data
|
|
405
408
|
frame_tags = tags + tag_func(frame)
|
|
406
409
|
translated_header = fits.Header(translate_spec122_to_spec214_l0(header))
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
ramp_tags = tag_ramp_frames(translated_header)
|
|
411
|
-
frame_tags = frame_tags + ramp_tags
|
|
410
|
+
translated_header = change_translated_headers(translated_header)
|
|
411
|
+
ramp_tags = tag_ramp_frames(translated_header)
|
|
412
|
+
frame_tags = frame_tags + ramp_tags
|
|
412
413
|
|
|
413
414
|
task.write(data=data, header=translated_header, tags=frame_tags, encoder=fits_array_encoder)
|
|
414
415
|
num_frames += 1
|
|
@@ -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.
|
|
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("
|
|
120
|
+
[pytest.param("G358", id="G358"), pytest.param("OPEN", id="OPEN")],
|
|
121
121
|
)
|
|
122
122
|
@pytest.mark.parametrize(
|
|
123
123
|
"frames_in_ramp",
|
|
@@ -52,6 +52,27 @@ def _is_wavelength_param(param_value: Any) -> bool:
|
|
|
52
52
|
return isinstance(param_value, dict) and "wavelength" in param_value
|
|
53
53
|
|
|
54
54
|
|
|
55
|
+
@given(wave=st.floats(min_value=800.0, max_value=2000.0))
|
|
56
|
+
@settings(suppress_health_check=[HealthCheck.function_scoped_fixture])
|
|
57
|
+
@example(wave=1082.7)
|
|
58
|
+
def test_filter_parameters(basic_science_task_with_parameter_mixin, wave):
|
|
59
|
+
"""
|
|
60
|
+
Given: A Science task with the parameter mixin
|
|
61
|
+
When: Accessing properties for the optical density filters
|
|
62
|
+
Then: The correct value is returned
|
|
63
|
+
"""
|
|
64
|
+
task, expected = basic_science_task_with_parameter_mixin
|
|
65
|
+
task_params = task.parameters
|
|
66
|
+
task_params._wavelength = wave
|
|
67
|
+
expected = {
|
|
68
|
+
"_linearization_optical_density_filter_attenuation_g278": -1.64,
|
|
69
|
+
"_linearization_optical_density_filter_attenuation_g358": -3.75,
|
|
70
|
+
"_linearization_optical_density_filter_attenuation_g408": -4.26,
|
|
71
|
+
}
|
|
72
|
+
for param in expected:
|
|
73
|
+
assert getattr(task_params, param) == expected[param]
|
|
74
|
+
|
|
75
|
+
|
|
55
76
|
def _is_file_param(param_value: Any) -> bool:
|
|
56
77
|
return isinstance(param_value, dict) and "is_file" in param_value and param_value["is_file"]
|
|
57
78
|
|
|
@@ -107,7 +107,7 @@ def write_observe_frames_to_task(
|
|
|
107
107
|
num_map_scans: int,
|
|
108
108
|
num_sub_repeats: int,
|
|
109
109
|
arm_id: str,
|
|
110
|
-
change_translated_headers: Callable[[fits.Header | None], fits.Header] =
|
|
110
|
+
change_translated_headers: Callable[[fits.Header | None], fits.Header] = lambda x: x,
|
|
111
111
|
exp_time_ms: float = 6.0,
|
|
112
112
|
array_shape=(2, 2, 1),
|
|
113
113
|
tags: list[str] | None = None,
|
|
@@ -154,7 +154,7 @@ def write_non_linearized_frames(
|
|
|
154
154
|
arm_id: str,
|
|
155
155
|
start_time: str,
|
|
156
156
|
camera_readout_mode: str,
|
|
157
|
-
change_translated_headers: Callable[[fits.Header | None], fits.Header] =
|
|
157
|
+
change_translated_headers: Callable[[fits.Header | None], fits.Header] = lambda x: x,
|
|
158
158
|
tags: list[str] | None = None,
|
|
159
159
|
):
|
|
160
160
|
frame_generator = CryonirspHeadersValidNonLinearizedFrames(
|
|
@@ -194,7 +194,7 @@ def make_linearized_test_frames(
|
|
|
194
194
|
dark_exp_times: list[float],
|
|
195
195
|
num_modstates: int,
|
|
196
196
|
num_steps: int,
|
|
197
|
-
change_translated_headers: Callable[[fits.Header | None], fits.Header] =
|
|
197
|
+
change_translated_headers: Callable[[fits.Header | None], fits.Header] = lambda x: x,
|
|
198
198
|
num_map_scans: int = 1,
|
|
199
199
|
num_sub_repeats: int = 1,
|
|
200
200
|
extra_headers: dict | None = None,
|
|
@@ -232,7 +232,7 @@ def make_linearized_test_frames(
|
|
|
232
232
|
|
|
233
233
|
def make_non_linearized_test_frames(
|
|
234
234
|
task,
|
|
235
|
-
change_translated_headers: Callable[[fits.Header | None], fits.Header] =
|
|
235
|
+
change_translated_headers: Callable[[fits.Header | None], fits.Header] = lambda x: x,
|
|
236
236
|
):
|
|
237
237
|
arm_id = "SP"
|
|
238
238
|
camera_readout_mode = "FastUpTheRamp"
|
|
@@ -335,11 +335,13 @@ def test_parse_cryonirsp_non_linearized_data_bad_filter_name(parse_non_linearize
|
|
|
335
335
|
|
|
336
336
|
task = parse_non_linearized_task
|
|
337
337
|
|
|
338
|
-
def
|
|
338
|
+
def insert_bad_filter_name_into_header(translated_header: fits.Header):
|
|
339
339
|
translated_header["CNFILTNP"] = "BAD_FILTER_NAME"
|
|
340
340
|
return translated_header
|
|
341
341
|
|
|
342
|
-
make_non_linearized_test_frames(
|
|
342
|
+
make_non_linearized_test_frames(
|
|
343
|
+
task, change_translated_headers=insert_bad_filter_name_into_header
|
|
344
|
+
)
|
|
343
345
|
|
|
344
346
|
with pytest.raises(
|
|
345
347
|
ValueError,
|
|
@@ -560,7 +562,6 @@ def test_parse_cryonirsp_linearized_incomplete_final_map(parse_linearized_task,
|
|
|
560
562
|
task=task,
|
|
561
563
|
frame_generator=frame_generator,
|
|
562
564
|
extra_tags=[CryonirspTag.linearized()],
|
|
563
|
-
change_translated_headers=None,
|
|
564
565
|
)
|
|
565
566
|
|
|
566
567
|
task()
|
|
@@ -720,6 +721,15 @@ def test_parse_cryonirsp_linearized_data_constants(parse_linearized_task, arm_id
|
|
|
720
721
|
|
|
721
722
|
def test_optical_density_filter_names(parse_non_linearized_task):
|
|
722
723
|
task = parse_non_linearized_task
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
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((
|
|
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.
|
|
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
|
|
@@ -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.
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/.pre-commit-config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/SCIENCE_CHANGELOG.rst
RENAMED
|
File without changes
|
{dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/bitbucket-pipelines.yml
RENAMED
|
File without changes
|
{dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/changelog/.gitempty
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/changelog.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/docs/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/licenses/LICENSE.rst
RENAMED
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/science_towncrier.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.17rc1 → dkist_processing_cryonirsp-0.0.18}/towncrier_science.toml
RENAMED
|
File without changes
|