dkist-processing-cryonirsp 0.0.37rc1__tar.gz → 0.0.38__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.37rc1 → dkist_processing_cryonirsp-0.0.38}/CHANGELOG.rst +20 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/PKG-INFO +1 -1
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +10 -30
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/sp_geometric.py +34 -8
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py +9 -4
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py +23 -1
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +2 -2
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp.egg-info/PKG-INFO +1 -1
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +0 -1
- dkist_processing_cryonirsp-0.0.37rc1/changelog/95.bugfix.rst +0 -1
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/.gitignore +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/.pre-commit-config.yaml +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/.readthedocs.yml +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/README.rst +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/SCIENCE_CHANGELOG.rst +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/changelog/.gitempty +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/check_changelog_updated.sh +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/models/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/models/constants.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/models/filter.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/models/optical_density_filter_names.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/models/parameters.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/models/tags.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/models/task_name.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/modstates.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/polarimetric_check.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/time.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/parsers/wavelength.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/gain.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/linearity_correction.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/mixin/beam_access.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/mixin/intermediate_frame.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/mixin/linearized_frame.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/mixin/shift_measurements.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/parse.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/quality_metrics.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/science_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/trial_output_data.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/conftest.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/header_models.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/local_trial_workflows/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/local_trial_workflows/linearize_only.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_build_quality_report.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_ci_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_dark.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_gain.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_make_movie_frames.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_parameters.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_parse.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_quality.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_sp_science.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_sp_solar.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_submit_qualilty.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/tests/test_write_l1.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp.egg-info/requires.txt +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/Makefile +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/changelog.rst +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/conf.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/index.rst +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/make.bat +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/requirements.txt +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/requirements_table.rst +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/scientific_changelog.rst +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/licenses/LICENSE.rst +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/pyproject.toml +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/science_towncrier.sh +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/setup.cfg +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/setup.py +0 -0
- {dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/towncrier_science.toml +0 -0
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
v0.0.38 (2024-02-22)
|
|
2
|
+
====================
|
|
3
|
+
|
|
4
|
+
Bugfixes
|
|
5
|
+
--------
|
|
6
|
+
|
|
7
|
+
- Fixed bugs in `SPGeometricCalibration` task to use basic-corrected or gain-corrected arrays where needed. (`#97 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/97>`__)
|
|
8
|
+
- Fixed errors in `CorrectionsMixin` that caused problems in rotation, shift and spectral curvature computations. (`#97 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/97>`__)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
v0.0.37 (2024-02-21)
|
|
12
|
+
====================
|
|
13
|
+
|
|
14
|
+
Bugfixes
|
|
15
|
+
--------
|
|
16
|
+
|
|
17
|
+
- Added ObsIpStartTimeBud to ramp parser to support parameter access outside of parse tasks (`#95 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/95>`__)
|
|
18
|
+
- Fix local workflow code to use the correct polyfit coefficients for local data processing. (`#96 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/96>`__)
|
|
19
|
+
|
|
20
|
+
|
|
1
21
|
v0.0.36 (2024-02-20)
|
|
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.38
|
|
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
|
|
@@ -27,11 +27,11 @@ class CorrectionsMixin:
|
|
|
27
27
|
arrays
|
|
28
28
|
2D array(s) containing the data for the un-shifted beam
|
|
29
29
|
|
|
30
|
-
shift
|
|
30
|
+
shift
|
|
31
31
|
The measured shift offset in the spectral dimension
|
|
32
32
|
between beams or between modulator states in a single beam.
|
|
33
33
|
|
|
34
|
-
angle
|
|
34
|
+
angle
|
|
35
35
|
The angle between the slit and pixel axes.
|
|
36
36
|
|
|
37
37
|
Returns
|
|
@@ -46,18 +46,9 @@ class CorrectionsMixin:
|
|
|
46
46
|
array[np.where(array == np.inf)] = np.max(array[np.isfinite(array)])
|
|
47
47
|
array[np.where(array == -np.inf)] = np.min(array[np.isfinite(array)])
|
|
48
48
|
array[np.isnan(array)] = np.nanmedian(array)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
array,
|
|
53
|
-
translation=-shift,
|
|
54
|
-
mode="constant",
|
|
55
|
-
cval=cval,
|
|
56
|
-
)
|
|
57
|
-
yield next(
|
|
58
|
-
# TODO: rotate_arrays_about_point rotates the wrong way, so no negative sign here
|
|
59
|
-
rotate_arrays_about_point(translated, angle=angle, mode="constant", cval=cval)
|
|
60
|
-
)
|
|
49
|
+
translated = affine_transform_arrays(array, translation=-shift, mode="edge", order=1)
|
|
50
|
+
# TODO: rotate_arrays_about_point rotates the wrong way, so no negative sign here
|
|
51
|
+
yield next(rotate_arrays_about_point(translated, angle=angle, mode="edge", order=1))
|
|
61
52
|
|
|
62
53
|
@staticmethod
|
|
63
54
|
def corrections_distort_geometry(
|
|
@@ -75,11 +66,11 @@ class CorrectionsMixin:
|
|
|
75
66
|
arrays
|
|
76
67
|
2D array(s) containing the data for the un-shifted beam
|
|
77
68
|
|
|
78
|
-
shift
|
|
69
|
+
shift
|
|
79
70
|
The measured shift offset in the spectral dimension
|
|
80
71
|
between beams or between modulator states in a single beam.
|
|
81
72
|
|
|
82
|
-
angle
|
|
73
|
+
angle
|
|
83
74
|
The angle between the slit and pixel axes.
|
|
84
75
|
|
|
85
76
|
Returns
|
|
@@ -94,18 +85,9 @@ class CorrectionsMixin:
|
|
|
94
85
|
array[np.where(array == np.inf)] = np.max(array[np.isfinite(array)])
|
|
95
86
|
array[np.where(array == -np.inf)] = np.min(array[np.isfinite(array)])
|
|
96
87
|
array[np.isnan(array)] = np.nanmedian(array)
|
|
97
|
-
cval = np.nanmedian(array)
|
|
98
88
|
# TODO: rotate_arrays_about_point rotates the wrong way, so no negative sign here
|
|
99
|
-
rotated = rotate_arrays_about_point(array, angle=angle, mode="
|
|
100
|
-
yield next(
|
|
101
|
-
affine_transform_arrays(
|
|
102
|
-
# The shift is inverted here to represent the correction that should be applied
|
|
103
|
-
rotated,
|
|
104
|
-
translation=-shift,
|
|
105
|
-
mode="constant",
|
|
106
|
-
cval=cval,
|
|
107
|
-
)
|
|
108
|
-
)
|
|
89
|
+
rotated = rotate_arrays_about_point(array, angle=angle, mode="edge")
|
|
90
|
+
yield next(affine_transform_arrays(rotated, translation=-shift, mode="edge"))
|
|
109
91
|
|
|
110
92
|
@staticmethod
|
|
111
93
|
def corrections_remove_spec_shifts(
|
|
@@ -136,9 +118,7 @@ class CorrectionsMixin:
|
|
|
136
118
|
numx = array.shape[0]
|
|
137
119
|
array_output = np.zeros(array.shape)
|
|
138
120
|
for j in range(numx):
|
|
139
|
-
array_output[j, :] = spnd.
|
|
140
|
-
array[j, :], -spec_shift[j], mode="constant", cval=np.nanmedian(array[j, :])
|
|
141
|
-
)
|
|
121
|
+
array_output[j, :] = spnd.shift(array[j, :], -spec_shift[j], mode="nearest")
|
|
142
122
|
yield array_output
|
|
143
123
|
|
|
144
124
|
def corrections_correct_bad_pixels(
|
|
@@ -4,7 +4,6 @@ import math
|
|
|
4
4
|
import numpy as np
|
|
5
5
|
import peakutils as pku
|
|
6
6
|
import scipy.ndimage as spnd
|
|
7
|
-
import skimage.registration as skir
|
|
8
7
|
from dkist_processing_common.models.task_name import TaskName
|
|
9
8
|
from dkist_processing_math.arithmetic import divide_arrays_by_array
|
|
10
9
|
from dkist_processing_math.arithmetic import subtract_array_from_arrays
|
|
@@ -110,9 +109,9 @@ class SPGeometricCalibration(CryonirspTaskBase, ShiftMeasurementsMixin):
|
|
|
110
109
|
task_type=TaskName.geometric.value, total_frames=no_of_raw_geo_frames
|
|
111
110
|
)
|
|
112
111
|
|
|
113
|
-
def
|
|
112
|
+
def basic_gain_corrected_data(self, beam: int) -> np.ndarray:
|
|
114
113
|
"""
|
|
115
|
-
Get dark corrected data array for a single beam.
|
|
114
|
+
Get dark and lamp gain corrected data array for a single beam.
|
|
116
115
|
|
|
117
116
|
Parameters
|
|
118
117
|
----------
|
|
@@ -125,7 +124,26 @@ class SPGeometricCalibration(CryonirspTaskBase, ShiftMeasurementsMixin):
|
|
|
125
124
|
Dark corrected data array
|
|
126
125
|
"""
|
|
127
126
|
array_generator = self.intermediate_frame_load_intermediate_arrays(
|
|
128
|
-
tags=[CryonirspTag.task("
|
|
127
|
+
tags=[CryonirspTag.task("GC_BASIC_GAIN_CORRECTED"), CryonirspTag.beam(beam)]
|
|
128
|
+
)
|
|
129
|
+
return average_numpy_arrays(array_generator)
|
|
130
|
+
|
|
131
|
+
def basic_dark_bp_corrected_data(self, beam: int) -> np.ndarray:
|
|
132
|
+
"""
|
|
133
|
+
Get dark and bad pixel corrected data array for a single beam.
|
|
134
|
+
|
|
135
|
+
Parameters
|
|
136
|
+
----------
|
|
137
|
+
beam : int
|
|
138
|
+
The current beam being processed
|
|
139
|
+
|
|
140
|
+
Returns
|
|
141
|
+
-------
|
|
142
|
+
np.ndarray
|
|
143
|
+
Dark and bad pixel corrected data array
|
|
144
|
+
"""
|
|
145
|
+
array_generator = self.intermediate_frame_load_intermediate_arrays(
|
|
146
|
+
tags=[CryonirspTag.task("GC_BASIC_DARK_BP_CORRECTED"), CryonirspTag.beam(beam)]
|
|
129
147
|
)
|
|
130
148
|
return average_numpy_arrays(array_generator)
|
|
131
149
|
|
|
@@ -183,7 +201,12 @@ class SPGeometricCalibration(CryonirspTaskBase, ShiftMeasurementsMixin):
|
|
|
183
201
|
bad_pixel_corrected_array = self.corrections_correct_bad_pixels(
|
|
184
202
|
dark_corrected_solar_array, bad_pixel_map
|
|
185
203
|
)
|
|
186
|
-
|
|
204
|
+
logger.info(f"Writing bad pixel corrected data for {beam=}")
|
|
205
|
+
self.intermediate_frame_write_arrays(
|
|
206
|
+
arrays=bad_pixel_corrected_array,
|
|
207
|
+
beam=beam,
|
|
208
|
+
task="GC_BASIC_DARK_BP_CORRECTED",
|
|
209
|
+
)
|
|
187
210
|
gain_corrected_solar_array = next(
|
|
188
211
|
divide_arrays_by_array(bad_pixel_corrected_array, lamp_gain_array)
|
|
189
212
|
)
|
|
@@ -191,7 +214,7 @@ class SPGeometricCalibration(CryonirspTaskBase, ShiftMeasurementsMixin):
|
|
|
191
214
|
self.intermediate_frame_write_arrays(
|
|
192
215
|
arrays=gain_corrected_solar_array,
|
|
193
216
|
beam=beam,
|
|
194
|
-
task="
|
|
217
|
+
task="GC_BASIC_GAIN_CORRECTED",
|
|
195
218
|
)
|
|
196
219
|
|
|
197
220
|
def compute_beam_angle(self, beam: int) -> float:
|
|
@@ -214,7 +237,10 @@ class SPGeometricCalibration(CryonirspTaskBase, ShiftMeasurementsMixin):
|
|
|
214
237
|
The beam rotation angle in radians
|
|
215
238
|
"""
|
|
216
239
|
# Step 1
|
|
217
|
-
|
|
240
|
+
# Do not use a gain corrected image here, as it will cancel out the slit structure
|
|
241
|
+
# that is used for the shift measurement computations
|
|
242
|
+
gain_array = self.intermediate_frame_load_lamp_gain_array(beam=beam)
|
|
243
|
+
|
|
218
244
|
full_spatial_size, full_spectral_size = gain_array.shape
|
|
219
245
|
|
|
220
246
|
# Get the params for the strips
|
|
@@ -257,7 +283,7 @@ class SPGeometricCalibration(CryonirspTaskBase, ShiftMeasurementsMixin):
|
|
|
257
283
|
np.ndarray
|
|
258
284
|
The corrected array
|
|
259
285
|
"""
|
|
260
|
-
rotated_array = self.
|
|
286
|
+
rotated_array = self.basic_gain_corrected_data(beam=beam)
|
|
261
287
|
corrected_array = next(self.corrections_correct_geometry(rotated_array, angle=angle))
|
|
262
288
|
return corrected_array
|
|
263
289
|
|
|
@@ -2,10 +2,12 @@ import argparse
|
|
|
2
2
|
import json
|
|
3
3
|
import os
|
|
4
4
|
import sys
|
|
5
|
+
from datetime import datetime
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
|
|
7
8
|
from astropy.io import fits
|
|
8
9
|
from dkist_processing_common.manual import ManualProcessing
|
|
10
|
+
from dkist_processing_common.models.constants import BudName
|
|
9
11
|
from dkist_processing_common.tasks import WorkflowTaskBase
|
|
10
12
|
from dkist_service_configuration import logger
|
|
11
13
|
|
|
@@ -131,15 +133,16 @@ def tag_linearized_inputs_task(suffix: str):
|
|
|
131
133
|
return TagLinearizedInputs
|
|
132
134
|
|
|
133
135
|
|
|
134
|
-
def
|
|
136
|
+
def spoof_obs_ramp_parsed_constants(wavelength: float = 1083.0):
|
|
135
137
|
class SetObsWavelength(WorkflowTaskBase):
|
|
136
138
|
def run(self) -> None:
|
|
137
139
|
self.constants._update({CryonirspBudName.wavelength.value: wavelength})
|
|
140
|
+
self.constants._update({BudName.obs_ip_start_time.value: datetime.now().isoformat()})
|
|
138
141
|
|
|
139
142
|
return SetObsWavelength
|
|
140
143
|
|
|
141
144
|
|
|
142
|
-
def
|
|
145
|
+
def spoof_obs_lin_parsed_constants(
|
|
143
146
|
polarimetric: bool = True,
|
|
144
147
|
):
|
|
145
148
|
class SetCalOnlyConstants(CryonirspTaskBase):
|
|
@@ -346,7 +349,7 @@ def main(
|
|
|
346
349
|
manual_processing_run.run_task(task=load_parsing_task(save_file="input_parsing.asdf"))
|
|
347
350
|
else:
|
|
348
351
|
manual_processing_run.run_task(task=ParseL0CryonirspRampData)
|
|
349
|
-
manual_processing_run.run_task(task=
|
|
352
|
+
manual_processing_run.run_task(task=spoof_obs_ramp_parsed_constants(dummy_wavelength))
|
|
350
353
|
manual_processing_run.run_task(
|
|
351
354
|
task=save_parsing_task(
|
|
352
355
|
tag_list=[CryonirspTag.input(), CryonirspTag.frame()],
|
|
@@ -372,7 +375,9 @@ def main(
|
|
|
372
375
|
)
|
|
373
376
|
else:
|
|
374
377
|
manual_processing_run.run_task(task=ParseL0CryonirspLinearizedData)
|
|
375
|
-
manual_processing_run.run_task(
|
|
378
|
+
manual_processing_run.run_task(
|
|
379
|
+
task=spoof_obs_lin_parsed_constants(polarimetric=polarimetric)
|
|
380
|
+
)
|
|
376
381
|
if not skip_saving_parse:
|
|
377
382
|
manual_processing_run.run_task(
|
|
378
383
|
task=save_parsing_task(
|
|
@@ -18,6 +18,22 @@ from dkist_processing_cryonirsp.tasks.cryonirsp_base import CryonirspTaskBase
|
|
|
18
18
|
from dkist_processing_cryonirsp.tests.conftest import cryonirsp_testing_parameters_factory
|
|
19
19
|
|
|
20
20
|
|
|
21
|
+
# These are the workflow versions of the polyfit coefficient parameters
|
|
22
|
+
WORKFLOW_LINEARIZATION_POLYFIT_COEFFS_CI = [
|
|
23
|
+
1.1565851e00,
|
|
24
|
+
-1.1925439e-05,
|
|
25
|
+
2.6748548e-10,
|
|
26
|
+
-2.7366326e-15,
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
WORKFLOW_LINEARIZATION_POLYFIT_COEFFS_SP = [
|
|
30
|
+
1.1421334e00,
|
|
31
|
+
-1.0536260e-05,
|
|
32
|
+
2.2702712e-10,
|
|
33
|
+
-2.5632187e-15,
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
|
|
21
37
|
def save_parsing_task(
|
|
22
38
|
tag_list: [str], save_file: str, save_file_tags: bool = True, save_constants: bool = True
|
|
23
39
|
):
|
|
@@ -371,7 +387,13 @@ def create_input_dataset_parameter_document(param_path: Path):
|
|
|
371
387
|
param_class = cryonirsp_testing_parameters_factory(
|
|
372
388
|
param_path=param_path, create_files=False
|
|
373
389
|
)
|
|
374
|
-
|
|
390
|
+
params = asdict(
|
|
391
|
+
param_class(
|
|
392
|
+
cryonirsp_linearization_polyfit_coeffs_ci=WORKFLOW_LINEARIZATION_POLYFIT_COEFFS_CI,
|
|
393
|
+
cryonirsp_linearization_polyfit_coeffs_sp=WORKFLOW_LINEARIZATION_POLYFIT_COEFFS_SP,
|
|
394
|
+
)
|
|
395
|
+
)
|
|
396
|
+
for pn, pv in params.items():
|
|
375
397
|
values = [
|
|
376
398
|
{
|
|
377
399
|
"parameterValueId": value_id,
|
|
@@ -291,7 +291,7 @@ def test_basic_corrections(geometric_calibration_task_with_simple_raw_data):
|
|
|
291
291
|
expected = flipped_true_solar[:, 0 : beam_shape[1]]
|
|
292
292
|
else:
|
|
293
293
|
expected = flipped_true_solar[:, beam_shape[1] :]
|
|
294
|
-
array = task.
|
|
294
|
+
array = task.basic_dark_bp_corrected_data(beam=beam)
|
|
295
295
|
np.testing.assert_equal(expected, array)
|
|
296
296
|
|
|
297
297
|
# Negative test on the original true solar image
|
|
@@ -300,6 +300,6 @@ def test_basic_corrections(geometric_calibration_task_with_simple_raw_data):
|
|
|
300
300
|
expected = true_solar[:, 0 : beam_shape[1]]
|
|
301
301
|
else:
|
|
302
302
|
expected = true_solar[:, beam_shape[1] :]
|
|
303
|
-
array = task.
|
|
303
|
+
array = task.basic_dark_bp_corrected_data(beam=beam)
|
|
304
304
|
with pytest.raises(AssertionError):
|
|
305
305
|
np.testing.assert_equal(expected, array)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dkist-processing-cryonirsp
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.38
|
|
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
|
-
Added ObsIpStartTimeBud to ramp parser to support parameter access outside of parse tasks
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/.pre-commit-config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/SCIENCE_CHANGELOG.rst
RENAMED
|
File without changes
|
{dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/bitbucket-pipelines.yml
RENAMED
|
File without changes
|
{dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/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
|
|
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.37rc1 → dkist_processing_cryonirsp-0.0.38}/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.37rc1 → dkist_processing_cryonirsp-0.0.38}/docs/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/licenses/LICENSE.rst
RENAMED
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/science_towncrier.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_cryonirsp-0.0.37rc1 → dkist_processing_cryonirsp-0.0.38}/towncrier_science.toml
RENAMED
|
File without changes
|