dkist-processing-cryonirsp 0.0.61__tar.gz → 0.0.63__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.61 → dkist_processing_cryonirsp-0.0.63}/CHANGELOG.rst +28 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/PKG-INFO +1 -1
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/models/tags.py +0 -18
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/modstates.py +2 -6
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +11 -2
- dkist_processing_cryonirsp-0.0.63/dkist_processing_cryonirsp/tasks/l1_output_data.py +44 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/conftest.py +1 -1
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/header_models.py +12 -6
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py +3 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py +62 -7
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_assemble_qualilty.py +7 -2
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +3 -3
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_parse.py +97 -57
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp.egg-info/PKG-INFO +1 -1
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp.egg-info/requires.txt +2 -2
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/setup.cfg +2 -2
- dkist_processing_cryonirsp-0.0.61/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -22
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/.gitignore +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/.pre-commit-config.yaml +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/.readthedocs.yml +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/README.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/SCIENCE_CHANGELOG.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/changelog/.gitempty +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/check_changelog_updated.sh +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/models/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/models/constants.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/models/exposure_conditions.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/models/parameters.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/models/task_name.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/exposure_conditions.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/polarimetric_check.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/time.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/parsers/wavelength.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/gain.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/linearity_correction.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/mixin/beam_access.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/mixin/intermediate_frame.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/mixin/linearized_frame.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/mixin/shift_measurements.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/parse.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/quality_metrics.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/science_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/sp_geometric.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/trial_output_data.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/local_trial_workflows/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/local_trial_workflows/linearize_only.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_ci_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_corrections.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_dark.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_gain.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_make_movie_frames.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_parameters.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_quality.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_sp_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_sp_solar.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_trial_create_quality_report.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_trial_output_data.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/tests/test_write_l1.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/Makefile +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/bad_pixel_calibration.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/beam_angle_calculation.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/beam_boundary_computation.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/changelog.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/ci_science_calibration.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/conf.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/index.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/linearization.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/make.bat +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/requirements.txt +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/requirements_table.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/scientific_changelog.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/sp_science_calibration.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/licenses/LICENSE.rst +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/pyproject.toml +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/science_towncrier.sh +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/setup.py +0 -0
- {dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/towncrier_science.toml +0 -0
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
v0.0.63 (2024-05-20)
|
|
2
|
+
====================
|
|
3
|
+
|
|
4
|
+
Bugfixes
|
|
5
|
+
--------
|
|
6
|
+
|
|
7
|
+
- Polcal fit/modulation matrix quality metrics are now correctly rendered in quality report. (`#125 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/125>`__)
|
|
8
|
+
- Correctly render L0 quality metrics (individual frame and dataset average and RMS values for dark, lamp, and solar frames).
|
|
9
|
+
Previously these had been missing from quality reports of polarimetric datasets. (`#125 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/125>`__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Misc
|
|
13
|
+
----
|
|
14
|
+
|
|
15
|
+
- Remove `CryoStemName.modstate` and `CryonirspTag.modstate`. Both of these already exist in `*-common` and can be used directly from there. (`#125 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/125>`__)
|
|
16
|
+
- Update `dkist-processing-common` to v6.2.4. This fixes a bug that could cause the quality report to fail to render if
|
|
17
|
+
the demodulation matrices were fit with the (very old) "use_M12" fit mode. (`#126 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/126>`__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
v0.0.62 (2024-05-16)
|
|
21
|
+
====================
|
|
22
|
+
|
|
23
|
+
Misc
|
|
24
|
+
----
|
|
25
|
+
|
|
26
|
+
- Bumped dkist-fits-specifications to 4.2.0 (`#124 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/124>`__)
|
|
27
|
+
|
|
28
|
+
|
|
1
29
|
v0.0.61 (2024-05-09)
|
|
2
30
|
====================
|
|
3
31
|
|
|
@@ -3,7 +3,6 @@ from enum import Enum
|
|
|
3
3
|
|
|
4
4
|
from dkist_processing_common.models.tags import StemName
|
|
5
5
|
from dkist_processing_common.models.tags import Tag
|
|
6
|
-
from dkist_processing_common.models.task_name import TaskName
|
|
7
6
|
|
|
8
7
|
from dkist_processing_cryonirsp.models.exposure_conditions import ExposureConditions
|
|
9
8
|
from dkist_processing_cryonirsp.models.task_name import CryonirspTaskName
|
|
@@ -18,7 +17,6 @@ class CryonirspStemName(str, Enum):
|
|
|
18
17
|
curr_frame_in_ramp = "CURR_FRAME_IN_RAMP"
|
|
19
18
|
time_obs = "TIME_OBS"
|
|
20
19
|
meas_num = "MEAS_NUM"
|
|
21
|
-
modstate = "MODSTATE"
|
|
22
20
|
map_scan = "MAP_SCAN"
|
|
23
21
|
exposure_conditions = "EXPOSURE_CONDITIONS"
|
|
24
22
|
|
|
@@ -74,22 +72,6 @@ class CryonirspTag(Tag):
|
|
|
74
72
|
"""
|
|
75
73
|
return cls.format_tag(CryonirspStemName.map_scan, map_scan)
|
|
76
74
|
|
|
77
|
-
@classmethod
|
|
78
|
-
def modstate(cls, modstate: int) -> str:
|
|
79
|
-
"""
|
|
80
|
-
Tags by the current modstate number.
|
|
81
|
-
|
|
82
|
-
Parameters
|
|
83
|
-
----------
|
|
84
|
-
modstate
|
|
85
|
-
The current scan step number
|
|
86
|
-
|
|
87
|
-
Returns
|
|
88
|
-
-------
|
|
89
|
-
The formatted tag string
|
|
90
|
-
"""
|
|
91
|
-
return cls.format_tag(CryonirspStemName.modstate, modstate)
|
|
92
|
-
|
|
93
75
|
@classmethod
|
|
94
76
|
def linearized(cls) -> str:
|
|
95
77
|
"""
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
from typing import Type
|
|
3
3
|
|
|
4
4
|
from dkist_processing_common.models.flower_pot import SpilledDirt
|
|
5
|
+
from dkist_processing_common.models.tags import StemName
|
|
5
6
|
from dkist_processing_common.parsers.single_value_single_key_flower import (
|
|
6
7
|
SingleValueSingleKeyFlower,
|
|
7
8
|
)
|
|
8
9
|
|
|
9
|
-
from dkist_processing_cryonirsp.models.tags import CryonirspStemName
|
|
10
10
|
from dkist_processing_cryonirsp.parsers.cryonirsp_l0_fits_access import CryonirspL0FitsAccess
|
|
11
11
|
|
|
12
12
|
|
|
@@ -14,9 +14,7 @@ class ModstateNumberFlower(SingleValueSingleKeyFlower):
|
|
|
14
14
|
"""Flower for a modstate number."""
|
|
15
15
|
|
|
16
16
|
def __init__(self):
|
|
17
|
-
super().__init__(
|
|
18
|
-
tag_stem_name=CryonirspStemName.modstate.value, metadata_key="modulator_state"
|
|
19
|
-
)
|
|
17
|
+
super().__init__(tag_stem_name=StemName.modstate.value, metadata_key="modulator_state")
|
|
20
18
|
|
|
21
19
|
def setter(self, fits_obj: CryonirspL0FitsAccess) -> Type[SpilledDirt] | int:
|
|
22
20
|
"""
|
|
@@ -27,8 +25,6 @@ class ModstateNumberFlower(SingleValueSingleKeyFlower):
|
|
|
27
25
|
fits_obj:
|
|
28
26
|
A single FitsAccess object
|
|
29
27
|
"""
|
|
30
|
-
if fits_obj.ip_task_type != "observe" and fits_obj.ip_task_type != "polcal":
|
|
31
|
-
return SpilledDirt
|
|
32
28
|
# Some intensity data incorrectly has modulator state = 0
|
|
33
29
|
if getattr(fits_obj, self.metadata_key) == 0:
|
|
34
30
|
return 1
|
|
@@ -23,6 +23,15 @@ from dkist_processing_cryonirsp.tasks.cryonirsp_base import CryonirspTaskBase
|
|
|
23
23
|
__all__ = ["CIInstrumentPolarizationCalibration", "SPInstrumentPolarizationCalibration"]
|
|
24
24
|
|
|
25
25
|
|
|
26
|
+
def generate_polcal_quality_label(arm: str, beam: int) -> str:
|
|
27
|
+
"""
|
|
28
|
+
Make a quality label given an arm and beam.
|
|
29
|
+
|
|
30
|
+
Defined here so we don't have to remember what our labels are in the L1 output data task.
|
|
31
|
+
"""
|
|
32
|
+
return f"{arm} Beam {beam}"
|
|
33
|
+
|
|
34
|
+
|
|
26
35
|
class InstrumentPolarizationCalibrationBase(CryonirspTaskBase, ABC):
|
|
27
36
|
"""
|
|
28
37
|
Base task class for instrument polarization for a CryoNIRSP calibration run.
|
|
@@ -402,7 +411,7 @@ class CIInstrumentPolarizationCalibration(InstrumentPolarizationCalibrationBase)
|
|
|
402
411
|
"""Record various quality metrics from PolCal fits."""
|
|
403
412
|
self.quality_store_polcal_results(
|
|
404
413
|
polcal_fitter=polcal_fitter,
|
|
405
|
-
label=
|
|
414
|
+
label=generate_polcal_quality_label(arm="CI", beam=beam),
|
|
406
415
|
bins_1=self.parameters.polcal_num_spatial_bins,
|
|
407
416
|
bins_2=self.parameters.polcal_num_spatial_bins,
|
|
408
417
|
bin_1_type="spatial",
|
|
@@ -421,7 +430,7 @@ class SPInstrumentPolarizationCalibration(InstrumentPolarizationCalibrationBase)
|
|
|
421
430
|
"""Record various quality metrics from PolCal fits."""
|
|
422
431
|
self.quality_store_polcal_results(
|
|
423
432
|
polcal_fitter=polcal_fitter,
|
|
424
|
-
label=
|
|
433
|
+
label=generate_polcal_quality_label(arm="SP", beam=beam),
|
|
425
434
|
bins_1=self.parameters.polcal_num_spatial_bins,
|
|
426
435
|
bins_2=self.parameters.polcal_num_spectral_bins,
|
|
427
436
|
bin_1_type="spatial",
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""Subclasses of AssembleQualityData that cause the correct polcal metrics to build."""
|
|
2
|
+
from typing import Type
|
|
3
|
+
|
|
4
|
+
from dkist_processing_common.models.constants import ConstantsBase
|
|
5
|
+
from dkist_processing_common.tasks import AssembleQualityData
|
|
6
|
+
|
|
7
|
+
__all__ = ["CIAssembleQualityData", "SPAssembleQualityData"]
|
|
8
|
+
|
|
9
|
+
from dkist_processing_cryonirsp.models.constants import CryonirspConstants
|
|
10
|
+
from dkist_processing_cryonirsp.tasks.instrument_polarization import generate_polcal_quality_label
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CIAssembleQualityData(AssembleQualityData):
|
|
14
|
+
"""Subclass just so that the polcal_label_list can be populated."""
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def constants_model_class(self) -> Type[CryonirspConstants]:
|
|
18
|
+
"""Grab the Cryo constants so we can have the number of beams."""
|
|
19
|
+
return CryonirspConstants
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def polcal_label_list(self) -> list[str]:
|
|
23
|
+
"""Return label(s) for Cryo CI."""
|
|
24
|
+
return [
|
|
25
|
+
generate_polcal_quality_label(arm="CI", beam=beam)
|
|
26
|
+
for beam in range(1, self.constants.num_beams + 1)
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class SPAssembleQualityData(AssembleQualityData):
|
|
31
|
+
"""Subclass just so that the polcal_label_list can be populated."""
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def constants_model_class(self) -> Type[CryonirspConstants]:
|
|
35
|
+
"""Grab the Cryo constants so we can have the number of beams."""
|
|
36
|
+
return CryonirspConstants
|
|
37
|
+
|
|
38
|
+
@property
|
|
39
|
+
def polcal_label_list(self) -> list[str]:
|
|
40
|
+
"""Return labels for beams 1 and 2."""
|
|
41
|
+
return [
|
|
42
|
+
generate_polcal_quality_label(arm="SP", beam=beam)
|
|
43
|
+
for beam in range(1, self.constants.num_beams + 1)
|
|
44
|
+
]
|
|
@@ -284,7 +284,7 @@ def cryonirsp_testing_parameters_factory(
|
|
|
284
284
|
class CryonirspTestingParameters:
|
|
285
285
|
cryonirsp_polcal_num_spatial_bins: int = 1
|
|
286
286
|
cryonirsp_polcal_num_spectral_bins: int = 1
|
|
287
|
-
cryonirsp_polcal_pac_fit_mode: str = "
|
|
287
|
+
cryonirsp_polcal_pac_fit_mode: str = "use_M12_I_sys_per_step"
|
|
288
288
|
cryonirsp_polcal_pac_init_set: str = "OCCal_VIS"
|
|
289
289
|
cryonirsp_geo_upsample_factor: int = 100
|
|
290
290
|
cryonirsp_geo_max_shift: int = 80
|
|
@@ -372,10 +372,12 @@ class ModulatedLampGainHeaders(SimpleModulatedHeaders):
|
|
|
372
372
|
exposure_condition: ExposureConditions,
|
|
373
373
|
start_date: str = "2023-01-01T01:23:45",
|
|
374
374
|
modstate_length_sec: float = 0.5,
|
|
375
|
+
num_modstates: int = 1,
|
|
376
|
+
modstate: int = 1,
|
|
375
377
|
):
|
|
376
378
|
super().__init__(
|
|
377
|
-
num_modstates=
|
|
378
|
-
modstate=
|
|
379
|
+
num_modstates=num_modstates,
|
|
380
|
+
modstate=modstate,
|
|
379
381
|
array_shape=array_shape,
|
|
380
382
|
task="gain",
|
|
381
383
|
exposure_condition=exposure_condition,
|
|
@@ -403,10 +405,12 @@ class ModulatedSolarGainHeaders(SimpleModulatedHeaders):
|
|
|
403
405
|
exposure_condition: ExposureConditions,
|
|
404
406
|
start_date: str = "2023-01-01T01:23:45",
|
|
405
407
|
modstate_length_sec: float = 0.5,
|
|
408
|
+
num_modstates: int = 1,
|
|
409
|
+
modstate: int = 1,
|
|
406
410
|
):
|
|
407
411
|
super().__init__(
|
|
408
|
-
num_modstates=
|
|
409
|
-
modstate=
|
|
412
|
+
num_modstates=num_modstates,
|
|
413
|
+
modstate=modstate,
|
|
410
414
|
array_shape=array_shape,
|
|
411
415
|
task="gain",
|
|
412
416
|
exposure_condition=exposure_condition,
|
|
@@ -436,10 +440,12 @@ class ModulatedDarkHeaders(SimpleModulatedHeaders):
|
|
|
436
440
|
exposure_condition: ExposureConditions,
|
|
437
441
|
start_date: str = "2023-01-01T01:23:45",
|
|
438
442
|
modstate_length_sec: float = 0.5,
|
|
443
|
+
num_modstates: int = 1,
|
|
444
|
+
modstate: int = 1,
|
|
439
445
|
):
|
|
440
446
|
super().__init__(
|
|
441
|
-
num_modstates=
|
|
442
|
-
modstate=
|
|
447
|
+
num_modstates=num_modstates,
|
|
448
|
+
modstate=modstate,
|
|
443
449
|
array_shape=array_shape,
|
|
444
450
|
task="dark",
|
|
445
451
|
exposure_condition=exposure_condition,
|
|
@@ -406,12 +406,15 @@ def main(
|
|
|
406
406
|
)
|
|
407
407
|
else:
|
|
408
408
|
raise ValueError(f"Did not recognize {arm_id = }")
|
|
409
|
+
|
|
409
410
|
manual_processing_run.run_task(task=QualityL1Metrics)
|
|
410
411
|
manual_processing_run.run_task(task=CryonirspL1QualityMetrics)
|
|
412
|
+
|
|
411
413
|
if arm_id == "SP":
|
|
412
414
|
manual_processing_run.run_task(task=SPAssembleQualityData)
|
|
413
415
|
elif arm_id == "CI":
|
|
414
416
|
manual_processing_run.run_task(task=CIAssembleQualityData)
|
|
417
|
+
|
|
415
418
|
manual_processing_run.run_task(task=ValidateL1Output)
|
|
416
419
|
|
|
417
420
|
if transfer_trial_data:
|
|
@@ -171,15 +171,24 @@ class SaveTaskTags(WorkflowTaskBase):
|
|
|
171
171
|
def relative_save_file(self) -> str:
|
|
172
172
|
return "default_sav.asdf"
|
|
173
173
|
|
|
174
|
+
@property
|
|
175
|
+
def tag_lists_to_save(self) -> list[list[str]] | list[str]:
|
|
176
|
+
return [[CryonirspTag.task(self.task_str), CryonirspTag.intermediate()]]
|
|
177
|
+
|
|
174
178
|
def run(self):
|
|
175
179
|
file_tag_dict = dict()
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
tag_list_list = self.tag_lists_to_save
|
|
181
|
+
if isinstance(tag_list_list[0], str):
|
|
182
|
+
tag_list_list = [tag_list_list]
|
|
183
|
+
|
|
184
|
+
for tags_to_save in tag_list_list:
|
|
185
|
+
path_list = self.read(tags=tags_to_save)
|
|
186
|
+
save_dir = self.scratch.workflow_base_path / Path(self.relative_save_file).stem
|
|
187
|
+
save_dir.mkdir(exist_ok=True)
|
|
188
|
+
for p in path_list:
|
|
189
|
+
copied_path = shutil.copy(str(p), save_dir)
|
|
190
|
+
tags = self.tags(p)
|
|
191
|
+
file_tag_dict[copied_path] = tags
|
|
183
192
|
|
|
184
193
|
full_save_file = self.scratch.workflow_base_path / self.relative_save_file
|
|
185
194
|
tree = {"file_tag_dict": file_tag_dict}
|
|
@@ -216,6 +225,14 @@ class SaveGeometricCal(WorkflowTaskBase):
|
|
|
216
225
|
tags=[CryonirspTag.task_geometric_sepectral_shifts(), CryonirspTag.intermediate()]
|
|
217
226
|
)
|
|
218
227
|
)
|
|
228
|
+
path_list += list(
|
|
229
|
+
self.read(
|
|
230
|
+
tags=[
|
|
231
|
+
CryonirspTag.quality("TASK_TYPES"),
|
|
232
|
+
CryonirspTag.workflow_task("SPGeometricCalibration"),
|
|
233
|
+
]
|
|
234
|
+
)
|
|
235
|
+
)
|
|
219
236
|
save_dir = self.scratch.workflow_base_path / Path(relative_save_file).stem
|
|
220
237
|
save_dir.mkdir(exist_ok=True)
|
|
221
238
|
for p in path_list:
|
|
@@ -277,6 +294,12 @@ class SaveDarkCal(SaveTaskTags):
|
|
|
277
294
|
def relative_save_file(self) -> str:
|
|
278
295
|
return "dark_cal.asdf"
|
|
279
296
|
|
|
297
|
+
@property
|
|
298
|
+
def tag_lists_to_save(self) -> list[list[str]]:
|
|
299
|
+
return super().tag_lists_to_save + [
|
|
300
|
+
[CryonirspTag.quality("TASK_TYPES"), CryonirspTag.workflow_task("DarkCalibration")]
|
|
301
|
+
]
|
|
302
|
+
|
|
280
303
|
|
|
281
304
|
class LoadDarkCal(LoadTaskTags):
|
|
282
305
|
@property
|
|
@@ -293,6 +316,12 @@ class SaveLampCal(SaveTaskTags):
|
|
|
293
316
|
def relative_save_file(self) -> str:
|
|
294
317
|
return "lamp_cal.asdf"
|
|
295
318
|
|
|
319
|
+
@property
|
|
320
|
+
def tag_lists_to_save(self) -> list[list[str]]:
|
|
321
|
+
return super().tag_lists_to_save + [
|
|
322
|
+
[CryonirspTag.quality("TASK_TYPES"), CryonirspTag.workflow_task("LampGainCalibration")],
|
|
323
|
+
]
|
|
324
|
+
|
|
296
325
|
|
|
297
326
|
class LoadLampCal(LoadTaskTags):
|
|
298
327
|
@property
|
|
@@ -309,6 +338,19 @@ class SaveSolarCal(SaveTaskTags):
|
|
|
309
338
|
def relative_save_file(self) -> str:
|
|
310
339
|
return "solar_cal.asdf"
|
|
311
340
|
|
|
341
|
+
@property
|
|
342
|
+
def tag_lists_to_save(self) -> list[list[str]]:
|
|
343
|
+
return super().tag_lists_to_save + [
|
|
344
|
+
[
|
|
345
|
+
CryonirspTag.quality("TASK_TYPES"),
|
|
346
|
+
CryonirspTag.workflow_task("CISolarGainCalibration"),
|
|
347
|
+
],
|
|
348
|
+
[
|
|
349
|
+
CryonirspTag.quality("TASK_TYPES"),
|
|
350
|
+
CryonirspTag.workflow_task("SPSolarGainCalibration"),
|
|
351
|
+
],
|
|
352
|
+
]
|
|
353
|
+
|
|
312
354
|
|
|
313
355
|
class LoadSolarCal(LoadTaskTags):
|
|
314
356
|
@property
|
|
@@ -325,6 +367,19 @@ class SaveInstPolCal(SaveTaskTags):
|
|
|
325
367
|
def relative_save_file(self) -> str:
|
|
326
368
|
return "inst_pol_cal.asdf"
|
|
327
369
|
|
|
370
|
+
@property
|
|
371
|
+
def tag_lists_to_save(self) -> list[list[str]]:
|
|
372
|
+
return super().tag_lists_to_save + [
|
|
373
|
+
[
|
|
374
|
+
CryonirspTag.quality("TASK_TYPES"),
|
|
375
|
+
CryonirspTag.workflow_task("CIInstrumentPolarizationCalibration"),
|
|
376
|
+
],
|
|
377
|
+
[
|
|
378
|
+
CryonirspTag.quality("TASK_TYPES"),
|
|
379
|
+
CryonirspTag.workflow_task("SPInstrumentPolarizationCalibration"),
|
|
380
|
+
],
|
|
381
|
+
]
|
|
382
|
+
|
|
328
383
|
|
|
329
384
|
class LoadInstPolCal(LoadTaskTags):
|
|
330
385
|
@property
|
|
@@ -21,8 +21,13 @@ from dkist_processing_cryonirsp.tests.conftest import CryonirspConstantsDb
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
@pytest.fixture(scope="function", params=["CI", "SP"])
|
|
24
|
-
def cryo_assemble_quality_data_task(
|
|
24
|
+
def cryo_assemble_quality_data_task(
|
|
25
|
+
tmp_path, recipe_run_id, init_cryonirsp_constants_db, request
|
|
26
|
+
) -> AssembleQualityData:
|
|
25
27
|
arm_id = request.param
|
|
28
|
+
init_cryonirsp_constants_db(
|
|
29
|
+
recipe_run_id=recipe_run_id, constants_obj=CryonirspConstantsDb(ARM_ID=arm_id)
|
|
30
|
+
)
|
|
26
31
|
if arm_id == "CI":
|
|
27
32
|
with CIAssembleQualityData(
|
|
28
33
|
recipe_run_id=recipe_run_id,
|
|
@@ -228,7 +233,7 @@ def quality_metrics(dataframe_json) -> list[Metric]:
|
|
|
228
233
|
"bin_1_str": "bin1",
|
|
229
234
|
"bin_2_str": "bin2",
|
|
230
235
|
"total_bins": 100,
|
|
231
|
-
"
|
|
236
|
+
"num_varied_I_sys": 2,
|
|
232
237
|
},
|
|
233
238
|
["QUALITY_POLCAL_LOCAL_PAR_VALS", "QUALITY_TASK_CI BEAM 1"],
|
|
234
239
|
),
|
|
@@ -46,7 +46,7 @@ class DummyPolcalFitter(PolcalFitter):
|
|
|
46
46
|
super().__init__(
|
|
47
47
|
local_dresser=local_dresser,
|
|
48
48
|
global_dresser=global_dresser,
|
|
49
|
-
fit_mode="
|
|
49
|
+
fit_mode="use_M12_I_sys_per_step",
|
|
50
50
|
init_set="OCCal_VIS",
|
|
51
51
|
_dont_fit=True,
|
|
52
52
|
)
|
|
@@ -411,7 +411,7 @@ def test_ci_instrument_polarization_calibration_task(
|
|
|
411
411
|
|
|
412
412
|
quality_mocker.assert_any_call(
|
|
413
413
|
polcal_fitter=ANY,
|
|
414
|
-
label=f"
|
|
414
|
+
label=f"CI Beam {beam}",
|
|
415
415
|
bins_1=task.parameters.polcal_num_spatial_bins,
|
|
416
416
|
bins_2=task.parameters.polcal_num_spatial_bins,
|
|
417
417
|
bin_1_type="spatial",
|
|
@@ -447,7 +447,7 @@ def test_sp_instrument_polarization_calibration_task(
|
|
|
447
447
|
|
|
448
448
|
quality_mocker.assert_any_call(
|
|
449
449
|
polcal_fitter=ANY,
|
|
450
|
-
label=f"
|
|
450
|
+
label=f"SP Beam {beam}",
|
|
451
451
|
bins_1=task.parameters.polcal_num_spatial_bins,
|
|
452
452
|
bins_2=task.parameters.polcal_num_spectral_bins,
|
|
453
453
|
bin_1_type="spatial",
|
|
@@ -39,12 +39,19 @@ def write_dark_frames_to_task(
|
|
|
39
39
|
exposure_condition: ExposureConditions,
|
|
40
40
|
array_shape=(2, 2, 1),
|
|
41
41
|
tags: list[str] | None = None,
|
|
42
|
+
num_modstates: int = 1,
|
|
42
43
|
):
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
num_frames = 0
|
|
45
|
+
for modstate in range(1, num_modstates + 1):
|
|
46
|
+
frame_generator = ModulatedDarkHeaders(
|
|
47
|
+
array_shape=array_shape,
|
|
48
|
+
exposure_condition=exposure_condition,
|
|
49
|
+
num_modstates=num_modstates,
|
|
50
|
+
modstate=modstate,
|
|
51
|
+
)
|
|
52
|
+
num_frames += _write_frames_to_task(
|
|
53
|
+
task=task, frame_generator=frame_generator, extra_tags=tags
|
|
54
|
+
)
|
|
48
55
|
|
|
49
56
|
return num_frames
|
|
50
57
|
|
|
@@ -55,17 +62,23 @@ def write_lamp_gain_frames_to_task(
|
|
|
55
62
|
array_shape=(2, 2, 1),
|
|
56
63
|
tags: list[str] | None = None,
|
|
57
64
|
tag_func: Callable[[CryonirspHeaders], list[str]] = lambda x: [],
|
|
65
|
+
num_modstates: int = 1,
|
|
58
66
|
):
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
67
|
+
num_frames = 0
|
|
68
|
+
for modstate in range(1, num_modstates + 1):
|
|
69
|
+
frame_generator = ModulatedLampGainHeaders(
|
|
70
|
+
array_shape=array_shape,
|
|
71
|
+
exposure_condition=exposure_condition,
|
|
72
|
+
num_modstates=num_modstates,
|
|
73
|
+
modstate=modstate,
|
|
74
|
+
)
|
|
62
75
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
76
|
+
num_frames += _write_frames_to_task(
|
|
77
|
+
task=task,
|
|
78
|
+
frame_generator=frame_generator,
|
|
79
|
+
extra_tags=tags,
|
|
80
|
+
tag_func=tag_func,
|
|
81
|
+
)
|
|
69
82
|
|
|
70
83
|
return num_frames
|
|
71
84
|
|
|
@@ -75,12 +88,20 @@ def write_solar_gain_frames_to_task(
|
|
|
75
88
|
exposure_condition: ExposureConditions,
|
|
76
89
|
array_shape=(2, 2, 1),
|
|
77
90
|
tags: list[str] | None = None,
|
|
91
|
+
num_modstates: int = 1,
|
|
78
92
|
):
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
93
|
+
num_frames = 0
|
|
94
|
+
for modstate in range(1, num_modstates + 1):
|
|
95
|
+
frame_generator = ModulatedSolarGainHeaders(
|
|
96
|
+
array_shape=array_shape,
|
|
97
|
+
exposure_condition=exposure_condition,
|
|
98
|
+
num_modstates=num_modstates,
|
|
99
|
+
modstate=modstate,
|
|
100
|
+
)
|
|
82
101
|
|
|
83
|
-
|
|
102
|
+
num_frames += _write_frames_to_task(
|
|
103
|
+
task=task, frame_generator=frame_generator, extra_tags=tags
|
|
104
|
+
)
|
|
84
105
|
|
|
85
106
|
return num_frames
|
|
86
107
|
|
|
@@ -241,13 +262,20 @@ def make_linearized_test_frames(
|
|
|
241
262
|
task,
|
|
242
263
|
exposure_condition=condition,
|
|
243
264
|
tags=lin_tag,
|
|
265
|
+
num_modstates=num_modstates or 1, # We *always* need dark frames
|
|
244
266
|
)
|
|
245
267
|
|
|
246
268
|
num_lamp = write_lamp_gain_frames_to_task(
|
|
247
|
-
task,
|
|
269
|
+
task,
|
|
270
|
+
tags=lin_tag,
|
|
271
|
+
exposure_condition=lamp_exposure_condition,
|
|
272
|
+
num_modstates=num_modstates or 1, # We *always* need dark frames
|
|
248
273
|
)
|
|
249
274
|
num_solar = write_solar_gain_frames_to_task(
|
|
250
|
-
task,
|
|
275
|
+
task,
|
|
276
|
+
tags=lin_tag,
|
|
277
|
+
exposure_condition=solar_exposure_condition,
|
|
278
|
+
num_modstates=num_modstates or 1, # We *always* need dark frames
|
|
251
279
|
)
|
|
252
280
|
|
|
253
281
|
num_polcal += write_polcal_frames_to_task(
|
|
@@ -434,69 +462,81 @@ def test_parse_cryonirsp_linearized_data(parse_linearized_task, arm_id, number_o
|
|
|
434
462
|
)
|
|
435
463
|
|
|
436
464
|
task()
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
465
|
+
num_actual_modstates = number_of_modstates or 1
|
|
466
|
+
for modstate in range(1, num_actual_modstates + 1):
|
|
467
|
+
assert (
|
|
468
|
+
len(
|
|
469
|
+
list(
|
|
470
|
+
task.read(
|
|
471
|
+
tags=[
|
|
472
|
+
CryonirspTag.linearized(),
|
|
473
|
+
CryonirspTag.task_dark(),
|
|
474
|
+
CryonirspTag.modstate(modstate),
|
|
475
|
+
]
|
|
476
|
+
)
|
|
447
477
|
)
|
|
448
478
|
)
|
|
479
|
+
== num_dark / num_actual_modstates
|
|
449
480
|
)
|
|
450
|
-
== num_lamp
|
|
451
|
-
)
|
|
452
481
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
482
|
+
assert (
|
|
483
|
+
len(
|
|
484
|
+
list(
|
|
485
|
+
task.read(
|
|
486
|
+
tags=[
|
|
487
|
+
CryonirspTag.linearized(),
|
|
488
|
+
CryonirspTag.task_lamp_gain(),
|
|
489
|
+
CryonirspTag.modstate(modstate),
|
|
490
|
+
]
|
|
491
|
+
)
|
|
458
492
|
)
|
|
459
493
|
)
|
|
494
|
+
== num_lamp / num_actual_modstates
|
|
460
495
|
)
|
|
461
|
-
== num_solar
|
|
462
|
-
)
|
|
463
496
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
497
|
+
assert (
|
|
498
|
+
len(
|
|
499
|
+
list(
|
|
500
|
+
task.read(
|
|
501
|
+
tags=[
|
|
502
|
+
CryonirspTag.linearized(),
|
|
503
|
+
CryonirspTag.task_solar_gain(),
|
|
504
|
+
CryonirspTag.modstate(modstate),
|
|
505
|
+
]
|
|
506
|
+
)
|
|
469
507
|
)
|
|
470
508
|
)
|
|
509
|
+
== num_solar / num_actual_modstates
|
|
471
510
|
)
|
|
472
|
-
== num_polcal
|
|
473
|
-
)
|
|
474
511
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
512
|
+
assert (
|
|
513
|
+
len(
|
|
514
|
+
list(
|
|
515
|
+
task.read(
|
|
516
|
+
tags=[
|
|
517
|
+
CryonirspTag.linearized(),
|
|
518
|
+
CryonirspTag.task_polcal(),
|
|
519
|
+
CryonirspTag.modstate(modstate),
|
|
520
|
+
]
|
|
521
|
+
)
|
|
480
522
|
)
|
|
481
523
|
)
|
|
524
|
+
== num_polcal / num_actual_modstates
|
|
482
525
|
)
|
|
483
|
-
== num_obs
|
|
484
|
-
)
|
|
485
526
|
|
|
486
|
-
if number_of_modstates in [0, 1]:
|
|
487
527
|
assert (
|
|
488
528
|
len(
|
|
489
529
|
list(
|
|
490
|
-
|
|
530
|
+
task.read(
|
|
491
531
|
tags=[
|
|
492
532
|
CryonirspTag.linearized(),
|
|
493
533
|
CryonirspTag.task_observe(),
|
|
494
|
-
CryonirspTag.modstate(
|
|
534
|
+
CryonirspTag.modstate(modstate),
|
|
495
535
|
]
|
|
496
536
|
)
|
|
497
537
|
)
|
|
498
538
|
)
|
|
499
|
-
== num_obs
|
|
539
|
+
== num_obs / num_actual_modstates
|
|
500
540
|
)
|
|
501
541
|
|
|
502
542
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Pillow==10.2.0
|
|
2
2
|
astropy==5.3.2
|
|
3
|
-
dkist-fits-specifications==4.
|
|
3
|
+
dkist-fits-specifications==4.2.0
|
|
4
4
|
dkist-header-validator==5.1.0
|
|
5
|
-
dkist-processing-common==6.2.
|
|
5
|
+
dkist-processing-common==6.2.4
|
|
6
6
|
dkist-processing-math==2.0.0
|
|
7
7
|
dkist-processing-pac==3.0.1
|
|
8
8
|
dkist-spectral-lines==2.0.0
|
|
@@ -19,9 +19,9 @@ include_package_data = True
|
|
|
19
19
|
install_requires =
|
|
20
20
|
Pillow == 10.2.0
|
|
21
21
|
astropy == 5.3.2
|
|
22
|
-
dkist-fits-specifications == 4.
|
|
22
|
+
dkist-fits-specifications == 4.2.0
|
|
23
23
|
dkist-header-validator == 5.1.0
|
|
24
|
-
dkist-processing-common == 6.2.
|
|
24
|
+
dkist-processing-common == 6.2.4
|
|
25
25
|
dkist-processing-math == 2.0.0
|
|
26
26
|
dkist-processing-pac == 3.0.1
|
|
27
27
|
dkist-spectral-lines == 2.0.0
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"""Subclasses of AssembleQualityData that cause the correct polcal metrics to build."""
|
|
2
|
-
from dkist_processing_common.tasks import AssembleQualityData
|
|
3
|
-
|
|
4
|
-
__all__ = ["CIAssembleQualityData", "SPAssembleQualityData"]
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class CIAssembleQualityData(AssembleQualityData):
|
|
8
|
-
"""Subclass just so that the polcal_label_list can be populated."""
|
|
9
|
-
|
|
10
|
-
@property
|
|
11
|
-
def polcal_label_list(self) -> list[str]:
|
|
12
|
-
"""Return label(s) for Cryo CI."""
|
|
13
|
-
return ["CI Beam 1"]
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class SPAssembleQualityData(AssembleQualityData):
|
|
17
|
-
"""Subclass just so that the polcal_label_list can be populated."""
|
|
18
|
-
|
|
19
|
-
@property
|
|
20
|
-
def polcal_label_list(self) -> list[str]:
|
|
21
|
-
"""Return labels for beams 1 and 2."""
|
|
22
|
-
return ["SP Beam 1", "SP Beam 2"]
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/.pre-commit-config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/SCIENCE_CHANGELOG.rst
RENAMED
|
File without changes
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/bitbucket-pipelines.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/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
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/linearization.rst
RENAMED
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/requirements.txt
RENAMED
|
File without changes
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/docs/requirements_table.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/licenses/LICENSE.rst
RENAMED
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/science_towncrier.sh
RENAMED
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.61 → dkist_processing_cryonirsp-0.0.63}/towncrier_science.toml
RENAMED
|
File without changes
|