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