dkist-processing-visp 5.0.0rc1__tar.gz → 5.0.0rc3__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.
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/PKG-INFO +26 -26
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/models/parameters.py +26 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/l1_output_data.py +2 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/solar.py +71 -12
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/conftest.py +3 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_assemble_quality.py +8 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_parameters.py +1 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_solar.py +25 -8
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp.egg-info/PKG-INFO +26 -26
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp.egg-info/requires.txt +25 -25
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/pyproject.toml +27 -27
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/.gitignore +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/.pre-commit-config.yaml +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/.readthedocs.yml +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/.snyk +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/CHANGELOG.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/README.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/SCIENCE_CHANGELOG.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/.gitempty +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.doc.2.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.doc.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.feature.2.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.feature.3.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.feature.4.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.feature.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.misc.2.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.misc.3.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.misc.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/changelog/246.science.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/__init__.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/config.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/fonts/Lato-Regular.ttf +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/models/__init__.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/models/constants.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/models/fits_access.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/models/metric_code.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/models/tags.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/models/task_name.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/parsers/__init__.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/parsers/map_repeats.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/parsers/modulator_states.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/parsers/polarimeter_mode.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/parsers/raster_step.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/parsers/spectrograph_configuration.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/parsers/time.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/parsers/visp_l0_fits_access.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/parsers/visp_l1_fits_access.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/__init__.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/assemble_movie.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/background_light.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/dark.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/geometric.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/instrument_polarization.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/lamp.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/make_movie_frames.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/mixin/__init__.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/mixin/beam_access.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/mixin/corrections.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/mixin/downsample.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/parse.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/quality_metrics.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/science.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/visp_base.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tasks/write_l1.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/README.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/__init__.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/header_models.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/local_trial_workflows/__init__.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/local_trial_workflows/l0_cals_only.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/local_trial_workflows/l0_polcals_as_science.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/local_trial_workflows/l0_solar_gain_as_science.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/local_trial_workflows/l0_to_l1.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/local_trial_workflows/local_trial_helpers.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_assemble_movie.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_background_light.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_dark.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_downsample.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_fits_access.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_geometric.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_instrument_polarization.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_lamp.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_make_movie_frames.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_map_repeats.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_parse.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_quality.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_science.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_trial_create_quality_report.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_visp_constants.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_workflows.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/tests/test_write_l1.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/workflows/__init__.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/workflows/l0_processing.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/workflows/single_task_workflows.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp/workflows/trial_workflows.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp.egg-info/SOURCES.txt +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp.egg-info/dependency_links.txt +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/dkist_processing_visp.egg-info/top_level.txt +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/Makefile +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/background_light.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/changelog.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/conf.py +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/gain_correction.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/geometric.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/index.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/l0_to_l1_visp.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/l0_to_l1_visp_full-trial.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/landing_page.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/make.bat +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/polarization_calibration.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/requirements.txt +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/requirements_table.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/science_calibration.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/docs/scientific_changelog.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/licenses/LICENSE.rst +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/science_towncrier.sh +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/setup.cfg +0 -0
- {dkist_processing_visp-5.0.0rc1 → dkist_processing_visp-5.0.0rc3}/towncrier_science.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-visp
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.0rc3
|
|
4
4
|
Summary: Science processing code for the ViSP instrument on DKIST
|
|
5
5
|
Author-email: NSO / AURA <dkistdc@nso.edu>
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -13,14 +13,14 @@ Classifier: Programming Language :: Python :: 3
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
14
|
Requires-Python: >=3.12
|
|
15
15
|
Description-Content-Type: text/x-rst
|
|
16
|
-
Requires-Dist: dkist-processing-common==11.8.
|
|
16
|
+
Requires-Dist: dkist-processing-common==11.8.1rc3
|
|
17
17
|
Requires-Dist: dkist-processing-math==2.2.1
|
|
18
18
|
Requires-Dist: dkist-processing-pac==3.1.1
|
|
19
19
|
Requires-Dist: dkist-header-validator==5.2.1
|
|
20
20
|
Requires-Dist: dkist-fits-specifications==4.17.0
|
|
21
21
|
Requires-Dist: dkist-service-configuration==4.1.7
|
|
22
22
|
Requires-Dist: dkist-spectral-lines==3.0.0
|
|
23
|
-
Requires-Dist: solar-wavelength-calibration==2.0.
|
|
23
|
+
Requires-Dist: solar-wavelength-calibration==2.0.0rc4
|
|
24
24
|
Requires-Dist: astropy==7.0.2
|
|
25
25
|
Requires-Dist: numpy==2.2.5
|
|
26
26
|
Requires-Dist: sunpy==6.1.1
|
|
@@ -95,44 +95,44 @@ Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
|
|
|
95
95
|
Requires-Dist: aiohttp==3.13.2; extra == "frozen"
|
|
96
96
|
Requires-Dist: aiosignal==1.4.0; extra == "frozen"
|
|
97
97
|
Requires-Dist: aiosmtplib==5.0.0; extra == "frozen"
|
|
98
|
-
Requires-Dist: alembic==1.17.
|
|
98
|
+
Requires-Dist: alembic==1.17.2; extra == "frozen"
|
|
99
99
|
Requires-Dist: amqp==5.3.1; extra == "frozen"
|
|
100
100
|
Requires-Dist: annotated-types==0.7.0; extra == "frozen"
|
|
101
101
|
Requires-Dist: anyio==4.11.0; extra == "frozen"
|
|
102
102
|
Requires-Dist: apache-airflow==2.11.0; extra == "frozen"
|
|
103
103
|
Requires-Dist: apache-airflow-providers-celery==3.10.0; extra == "frozen"
|
|
104
|
-
Requires-Dist: apache-airflow-providers-common-compat==1.
|
|
105
|
-
Requires-Dist: apache-airflow-providers-common-io==1.6.
|
|
106
|
-
Requires-Dist: apache-airflow-providers-common-sql==1.
|
|
104
|
+
Requires-Dist: apache-airflow-providers-common-compat==1.9.0; extra == "frozen"
|
|
105
|
+
Requires-Dist: apache-airflow-providers-common-io==1.6.5; extra == "frozen"
|
|
106
|
+
Requires-Dist: apache-airflow-providers-common-sql==1.29.0; extra == "frozen"
|
|
107
107
|
Requires-Dist: apache-airflow-providers-fab==1.5.3; extra == "frozen"
|
|
108
|
-
Requires-Dist: apache-airflow-providers-ftp==3.13.
|
|
109
|
-
Requires-Dist: apache-airflow-providers-http==5.
|
|
110
|
-
Requires-Dist: apache-airflow-providers-imap==3.9.
|
|
111
|
-
Requires-Dist: apache-airflow-providers-postgres==6.4.
|
|
112
|
-
Requires-Dist: apache-airflow-providers-smtp==2.3.
|
|
113
|
-
Requires-Dist: apache-airflow-providers-sqlite==4.1.
|
|
108
|
+
Requires-Dist: apache-airflow-providers-ftp==3.13.3; extra == "frozen"
|
|
109
|
+
Requires-Dist: apache-airflow-providers-http==5.5.0; extra == "frozen"
|
|
110
|
+
Requires-Dist: apache-airflow-providers-imap==3.9.4; extra == "frozen"
|
|
111
|
+
Requires-Dist: apache-airflow-providers-postgres==6.4.1; extra == "frozen"
|
|
112
|
+
Requires-Dist: apache-airflow-providers-smtp==2.3.2; extra == "frozen"
|
|
113
|
+
Requires-Dist: apache-airflow-providers-sqlite==4.1.3; extra == "frozen"
|
|
114
114
|
Requires-Dist: apispec==6.8.4; extra == "frozen"
|
|
115
115
|
Requires-Dist: argcomplete==3.6.3; extra == "frozen"
|
|
116
116
|
Requires-Dist: asdf==3.5.0; extra == "frozen"
|
|
117
117
|
Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
|
|
118
118
|
Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
|
|
119
|
-
Requires-Dist: asgiref==3.
|
|
119
|
+
Requires-Dist: asgiref==3.11.0; extra == "frozen"
|
|
120
120
|
Requires-Dist: asteval==1.0.7; extra == "frozen"
|
|
121
121
|
Requires-Dist: astropy==7.0.2; extra == "frozen"
|
|
122
122
|
Requires-Dist: astropy-iers-data==0.2025.11.10.0.38.31; extra == "frozen"
|
|
123
123
|
Requires-Dist: asyncpg==0.30.0; extra == "frozen"
|
|
124
124
|
Requires-Dist: attrs==25.4.0; extra == "frozen"
|
|
125
125
|
Requires-Dist: babel==2.17.0; extra == "frozen"
|
|
126
|
-
Requires-Dist: billiard==4.2.
|
|
126
|
+
Requires-Dist: billiard==4.2.3; extra == "frozen"
|
|
127
127
|
Requires-Dist: blinker==1.9.0; extra == "frozen"
|
|
128
|
-
Requires-Dist: boto3==1.
|
|
129
|
-
Requires-Dist: botocore==1.
|
|
128
|
+
Requires-Dist: boto3==1.41.1; extra == "frozen"
|
|
129
|
+
Requires-Dist: botocore==1.41.1; extra == "frozen"
|
|
130
130
|
Requires-Dist: cachelib==0.13.0; extra == "frozen"
|
|
131
131
|
Requires-Dist: celery==5.3.1; extra == "frozen"
|
|
132
132
|
Requires-Dist: certifi==2025.11.12; extra == "frozen"
|
|
133
133
|
Requires-Dist: cffi==2.0.0; extra == "frozen"
|
|
134
134
|
Requires-Dist: charset-normalizer==3.4.4; extra == "frozen"
|
|
135
|
-
Requires-Dist: click==8.3.
|
|
135
|
+
Requires-Dist: click==8.3.1; extra == "frozen"
|
|
136
136
|
Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
|
|
137
137
|
Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
|
|
138
138
|
Requires-Dist: click-repl==0.3.0; extra == "frozen"
|
|
@@ -149,11 +149,11 @@ Requires-Dist: dacite==1.9.2; extra == "frozen"
|
|
|
149
149
|
Requires-Dist: decorator==5.2.1; extra == "frozen"
|
|
150
150
|
Requires-Dist: dill==0.4.0; extra == "frozen"
|
|
151
151
|
Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
|
|
152
|
-
Requires-Dist: dkist-processing-common==11.8.
|
|
152
|
+
Requires-Dist: dkist-processing-common==11.8.1rc3; extra == "frozen"
|
|
153
153
|
Requires-Dist: dkist-processing-core==6.0.0; extra == "frozen"
|
|
154
154
|
Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
|
|
155
155
|
Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
|
|
156
|
-
Requires-Dist: dkist-processing-visp==5.0.
|
|
156
|
+
Requires-Dist: dkist-processing-visp==5.0.0rc3; extra == "frozen"
|
|
157
157
|
Requires-Dist: dkist-service-configuration==4.1.7; extra == "frozen"
|
|
158
158
|
Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
|
|
159
159
|
Requires-Dist: dkist_fits_specifications==4.17.0; extra == "frozen"
|
|
@@ -251,7 +251,7 @@ Requires-Dist: proglog==0.1.12; extra == "frozen"
|
|
|
251
251
|
Requires-Dist: prometheus_client==0.23.1; extra == "frozen"
|
|
252
252
|
Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
|
|
253
253
|
Requires-Dist: propcache==0.4.1; extra == "frozen"
|
|
254
|
-
Requires-Dist: protobuf==6.33.
|
|
254
|
+
Requires-Dist: protobuf==6.33.1; extra == "frozen"
|
|
255
255
|
Requires-Dist: psutil==7.1.3; extra == "frozen"
|
|
256
256
|
Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
|
|
257
257
|
Requires-Dist: pycparser==2.23; extra == "frozen"
|
|
@@ -273,8 +273,8 @@ Requires-Dist: requests-toolbelt==1.0.0; extra == "frozen"
|
|
|
273
273
|
Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
|
|
274
274
|
Requires-Dist: rich==13.9.4; extra == "frozen"
|
|
275
275
|
Requires-Dist: rich-argparse==1.7.2; extra == "frozen"
|
|
276
|
-
Requires-Dist: rpds-py==0.
|
|
277
|
-
Requires-Dist: s3transfer==0.
|
|
276
|
+
Requires-Dist: rpds-py==0.29.0; extra == "frozen"
|
|
277
|
+
Requires-Dist: s3transfer==0.15.0; extra == "frozen"
|
|
278
278
|
Requires-Dist: scikit-image==0.25.2; extra == "frozen"
|
|
279
279
|
Requires-Dist: scikit-learn==1.6.1; extra == "frozen"
|
|
280
280
|
Requires-Dist: scipy==1.15.3; extra == "frozen"
|
|
@@ -282,7 +282,7 @@ Requires-Dist: semantic-version==2.10.0; extra == "frozen"
|
|
|
282
282
|
Requires-Dist: setproctitle==1.3.7; extra == "frozen"
|
|
283
283
|
Requires-Dist: six==1.17.0; extra == "frozen"
|
|
284
284
|
Requires-Dist: sniffio==1.3.1; extra == "frozen"
|
|
285
|
-
Requires-Dist: solar-wavelength-calibration==2.0.
|
|
285
|
+
Requires-Dist: solar-wavelength-calibration==2.0.0rc4; extra == "frozen"
|
|
286
286
|
Requires-Dist: sqids==0.5.1; extra == "frozen"
|
|
287
287
|
Requires-Dist: sqlparse==0.5.3; extra == "frozen"
|
|
288
288
|
Requires-Dist: sunpy==6.1.1; extra == "frozen"
|
|
@@ -301,14 +301,14 @@ Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
|
|
|
301
301
|
Requires-Dist: tzdata==2025.2; extra == "frozen"
|
|
302
302
|
Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
|
|
303
303
|
Requires-Dist: uncertainties==3.2.3; extra == "frozen"
|
|
304
|
-
Requires-Dist: universal_pathlib==0.3.
|
|
304
|
+
Requires-Dist: universal_pathlib==0.3.6; extra == "frozen"
|
|
305
305
|
Requires-Dist: urllib3==2.5.0; extra == "frozen"
|
|
306
306
|
Requires-Dist: vine==5.1.0; extra == "frozen"
|
|
307
307
|
Requires-Dist: voluptuous==0.15.2; extra == "frozen"
|
|
308
308
|
Requires-Dist: wcwidth==0.2.14; extra == "frozen"
|
|
309
309
|
Requires-Dist: wirerope==1.0.0; extra == "frozen"
|
|
310
310
|
Requires-Dist: wrapt==1.17.3; extra == "frozen"
|
|
311
|
-
Requires-Dist: yamale==6.
|
|
311
|
+
Requires-Dist: yamale==6.1.0; extra == "frozen"
|
|
312
312
|
Requires-Dist: yarl==1.22.0; extra == "frozen"
|
|
313
313
|
Requires-Dist: zipp==3.23.0; extra == "frozen"
|
|
314
314
|
|
|
@@ -186,6 +186,25 @@ class VispParameters(ParameterBase, ParameterWavelengthMixin, ParameterArmIdMixi
|
|
|
186
186
|
"visp_solar_vignette_initial_continuum_poly_fit_order"
|
|
187
187
|
)
|
|
188
188
|
|
|
189
|
+
@property
|
|
190
|
+
def solar_vignette_crval_bounds_px(self) -> float:
|
|
191
|
+
"""
|
|
192
|
+
Define the bounds (in *pixels*) on crval when fitting the initial vignette signal.
|
|
193
|
+
|
|
194
|
+
The actual bounds on the value of crval are equal to ± the initial dispersion times this number. Note that the
|
|
195
|
+
total range searched by the fitting algorithm will be twice this number (in pixels).
|
|
196
|
+
"""
|
|
197
|
+
return self._find_most_recent_past_value("visp_solar_vignette_crval_bounds_px") * u.pix
|
|
198
|
+
|
|
199
|
+
@property
|
|
200
|
+
def solar_vignette_dispersion_bounds_fraction(self) -> float:
|
|
201
|
+
"""
|
|
202
|
+
Define the ± fraction away from the initial value for bounds on dispersion when fitting the initial vignette signal.
|
|
203
|
+
|
|
204
|
+
This value should be between 0 and 1. For example, the minimum bound is `init_value * (1 - solar_vignette_dispersion_bounds_fraction)`.
|
|
205
|
+
"""
|
|
206
|
+
return self._find_most_recent_past_value("visp_solar_vignette_dispersion_bounds_fraction")
|
|
207
|
+
|
|
189
208
|
@property
|
|
190
209
|
def solar_vignette_wavecal_fit_kwargs(self) -> dict[str, Any]:
|
|
191
210
|
"""Define extra keyword arguments to pass to the wavelength calibration fitter."""
|
|
@@ -228,6 +247,13 @@ class VispParameters(ParameterBase, ParameterWavelengthMixin, ParameterArmIdMixi
|
|
|
228
247
|
config_dict = self._find_most_recent_past_value("visp_wavecal_atlas_download_config")
|
|
229
248
|
return DownloadConfig.model_validate(config_dict)
|
|
230
249
|
|
|
250
|
+
@property
|
|
251
|
+
def wavecal_init_crval_guess_normalization_percentile(self) -> float | None:
|
|
252
|
+
"""Define the CDF percentage used to normalize the Atlas to the input spectrum level when computing an initial CRVAL guess."""
|
|
253
|
+
return self._find_most_recent_past_value(
|
|
254
|
+
"visp_wavecal_init_crval_guess_normalization_percentile"
|
|
255
|
+
)
|
|
256
|
+
|
|
231
257
|
@property
|
|
232
258
|
def wavecal_init_resolving_power(self) -> int:
|
|
233
259
|
"""Define the initial guess for ViSP resolving power in wavecal fits."""
|
|
@@ -132,6 +132,7 @@ class VispAssembleQualityData(AssembleQualityData):
|
|
|
132
132
|
description="These plots show the solar atlas fit used to estimate the initial, 1D spectral vignette "
|
|
133
133
|
"present in solar gain frames. The vignette signature is taken to be the fit continuum shown.",
|
|
134
134
|
metric_code=VispMetricCode.solar_first_vignette,
|
|
135
|
+
facet=self._format_facet(f"Beam {beam}"),
|
|
135
136
|
multi_plot_data=full_plot,
|
|
136
137
|
)
|
|
137
138
|
|
|
@@ -208,6 +209,7 @@ class VispAssembleQualityData(AssembleQualityData):
|
|
|
208
209
|
"The 5th and 9th percentile ranges show how stable this spectrum is along the spatial dimension "
|
|
209
210
|
"after removing the vignette signal.",
|
|
210
211
|
metric_code=VispMetricCode.solar_final_vignette,
|
|
212
|
+
facet=self._format_facet(f"Beam {beam}"),
|
|
211
213
|
multi_plot_data=full_plot,
|
|
212
214
|
)
|
|
213
215
|
|
|
@@ -70,6 +70,7 @@ class WavelengthCalibrationParametersWithContinuum(WavelengthCalibrationParamete
|
|
|
70
70
|
|
|
71
71
|
continuum_poly_fit_order: int
|
|
72
72
|
normalized_abscissa: np.ndarray
|
|
73
|
+
zeroth_order_continuum_coefficient: float
|
|
73
74
|
|
|
74
75
|
@property
|
|
75
76
|
def continuum_function(self) -> Callable[[np.ndarray, Parameters], np.ndarray]:
|
|
@@ -93,16 +94,26 @@ class WavelengthCalibrationParametersWithContinuum(WavelengthCalibrationParamete
|
|
|
93
94
|
# dynamically create the required number of "poly_coeff_{o:02n}" fields. Sorry if this bites you!
|
|
94
95
|
params = super().lmfit_parameters
|
|
95
96
|
for o in range(self.continuum_poly_fit_order + 1):
|
|
97
|
+
# `np.polyval` uses its input coefficient list "backwards", so `poly_coeff_{self.continuum_poly_fit_order}`
|
|
98
|
+
# is the 0th order polynomial term.
|
|
96
99
|
params.add(
|
|
97
100
|
f"poly_coeff_{o:02n}",
|
|
98
101
|
vary=True,
|
|
99
|
-
value=
|
|
102
|
+
value=(
|
|
103
|
+
self.zeroth_order_continuum_coefficient
|
|
104
|
+
if o == self.continuum_poly_fit_order
|
|
105
|
+
else 0
|
|
106
|
+
),
|
|
100
107
|
min=-1,
|
|
101
108
|
max=1,
|
|
102
109
|
)
|
|
103
110
|
|
|
104
|
-
params[f"poly_coeff_{self.continuum_poly_fit_order:02n}"].min =
|
|
105
|
-
|
|
111
|
+
params[f"poly_coeff_{self.continuum_poly_fit_order:02n}"].min = (
|
|
112
|
+
self.zeroth_order_continuum_coefficient * 0.5
|
|
113
|
+
)
|
|
114
|
+
params[f"poly_coeff_{self.continuum_poly_fit_order:02n}"].max = (
|
|
115
|
+
self.zeroth_order_continuum_coefficient * 1.5
|
|
116
|
+
)
|
|
106
117
|
|
|
107
118
|
# Remove the default continuum parameterization
|
|
108
119
|
del params["continuum_level"]
|
|
@@ -551,9 +562,19 @@ class SolarCalibration(
|
|
|
551
562
|
|
|
552
563
|
fitter = WavelengthCalibrationFitter(input_parameters=init_parameters, atlas=atlas)
|
|
553
564
|
with self.telemetry_span("Fit atlas and continuum"):
|
|
565
|
+
rng_kwarg = dict()
|
|
566
|
+
fitting_method = self.parameters.solar_vignette_wavecal_fit_kwargs.get("method", False)
|
|
567
|
+
if fitting_method in ["basinhopping", "differential_evolution", "dual_annealing"]:
|
|
568
|
+
# For methods that support the `rng` kwarg we use the recipe run id as the rng seed
|
|
569
|
+
rng = self.recipe_run_id
|
|
570
|
+
rng_kwarg["rng"] = rng
|
|
571
|
+
|
|
572
|
+
# The order here allows us to override the default `rng` (above) in a parameter value
|
|
573
|
+
extra_kwargs = rng_kwarg | self.parameters.solar_vignette_wavecal_fit_kwargs
|
|
574
|
+
logger.info(f"Calling fitter with extra kwargs: {extra_kwargs}")
|
|
554
575
|
fit_result = fitter(
|
|
555
576
|
input_spectrum=representative_spectrum,
|
|
556
|
-
**
|
|
577
|
+
**extra_kwargs,
|
|
557
578
|
)
|
|
558
579
|
|
|
559
580
|
return fit_result
|
|
@@ -610,6 +631,7 @@ class SolarCalibration(
|
|
|
610
631
|
negative_limit=-wavelength_range / 2,
|
|
611
632
|
positive_limit=wavelength_range / 2,
|
|
612
633
|
num_steps=500,
|
|
634
|
+
normalization_percentile=self.parameters.wavecal_init_crval_guess_normalization_percentile,
|
|
613
635
|
)
|
|
614
636
|
|
|
615
637
|
logger.info(f"{crval_init = !s}")
|
|
@@ -627,18 +649,22 @@ class SolarCalibration(
|
|
|
627
649
|
resolving_power = self.parameters.wavecal_init_resolving_power
|
|
628
650
|
opacity_factor = self.parameters.wavecal_init_opacity_factor
|
|
629
651
|
straylight_faction = self.parameters.wavecal_init_straylight_fraction
|
|
652
|
+
relative_atlas_scaling = self.estimate_relative_continuum_level(
|
|
653
|
+
crval_init=crval_init,
|
|
654
|
+
wavelength_range=wavelength_range,
|
|
655
|
+
atlas=atlas,
|
|
656
|
+
representative_spectrum=representative_spectrum,
|
|
657
|
+
)
|
|
658
|
+
logger.info(f"0th order coefficient initial guess: {relative_atlas_scaling}")
|
|
630
659
|
|
|
631
|
-
|
|
632
|
-
# them parameters.
|
|
633
|
-
wavelength_search_width = wavelength_range * 0.15
|
|
660
|
+
wavelength_search_width = dispersion * self.parameters.solar_vignette_crval_bounds_px
|
|
634
661
|
bounds = BoundsModel(
|
|
635
|
-
# An alternative for the crval bounds would be `[input_wavelength_vector.min(), input_wavelength_vector.max()]`
|
|
636
662
|
crval=LengthBoundRange(
|
|
637
663
|
min=crval_init - wavelength_search_width, max=crval_init + wavelength_search_width
|
|
638
664
|
),
|
|
639
665
|
dispersion=DispersionBoundRange(
|
|
640
|
-
min=dispersion *
|
|
641
|
-
max=dispersion * 1.
|
|
666
|
+
min=dispersion * (1 - self.parameters.solar_vignette_dispersion_bounds_fraction),
|
|
667
|
+
max=dispersion * (1 + self.parameters.solar_vignette_dispersion_bounds_fraction),
|
|
642
668
|
),
|
|
643
669
|
incident_light_angle=AngleBoundRange(
|
|
644
670
|
min=incident_light_angle - 1 * u.deg, max=incident_light_angle + 1 * u.deg
|
|
@@ -646,7 +672,6 @@ class SolarCalibration(
|
|
|
646
672
|
resolving_power=UnitlessBoundRange(min=1e5, max=5e5),
|
|
647
673
|
opacity_factor=UnitlessBoundRange(min=1.0, max=10),
|
|
648
674
|
straylight_fraction=UnitlessBoundRange(min=0.0, max=0.8),
|
|
649
|
-
continuum_level=UnitlessBoundRange(min=0.99, max=1.1),
|
|
650
675
|
)
|
|
651
676
|
|
|
652
677
|
init_params = WavelengthCalibrationParametersWithContinuum(
|
|
@@ -656,7 +681,7 @@ class SolarCalibration(
|
|
|
656
681
|
grating_constant=grating_constant,
|
|
657
682
|
doppler_velocity=doppler_velocity,
|
|
658
683
|
order=spectral_order,
|
|
659
|
-
continuum_level=1
|
|
684
|
+
continuum_level=1,
|
|
660
685
|
resolving_power=resolving_power,
|
|
661
686
|
opacity_factor=opacity_factor,
|
|
662
687
|
straylight_fraction=straylight_faction,
|
|
@@ -664,10 +689,44 @@ class SolarCalibration(
|
|
|
664
689
|
bounds=bounds,
|
|
665
690
|
continuum_poly_fit_order=self.parameters.solar_vignette_initial_continuum_poly_fit_order,
|
|
666
691
|
normalized_abscissa=normalized_abscissa,
|
|
692
|
+
zeroth_order_continuum_coefficient=relative_atlas_scaling,
|
|
667
693
|
)
|
|
668
694
|
|
|
669
695
|
return init_params
|
|
670
696
|
|
|
697
|
+
def estimate_relative_continuum_level(
|
|
698
|
+
self,
|
|
699
|
+
*,
|
|
700
|
+
crval_init: Quantity,
|
|
701
|
+
wavelength_range: Quantity,
|
|
702
|
+
atlas: Atlas,
|
|
703
|
+
representative_spectrum: np.ndarray,
|
|
704
|
+
) -> float:
|
|
705
|
+
"""
|
|
706
|
+
Estimate the multiplicative scaling between the representative spectrum and atlas solar transmission.
|
|
707
|
+
|
|
708
|
+
This scaling is used to set the initial guess of 0th-order polynomial fit coefficient. We estimate the scaling
|
|
709
|
+
factor by comparing the values of the two spectra at a given percent of the CDF. This percent is taken from
|
|
710
|
+
the `~dkist_processing_visp.models.parameters.VispParameters.wavecal_init_crval_guess_normalization_percentile`
|
|
711
|
+
pipeline parameter.
|
|
712
|
+
"""
|
|
713
|
+
wave_min = crval_init - wavelength_range / 2
|
|
714
|
+
wave_max = crval_init + wavelength_range / 2
|
|
715
|
+
|
|
716
|
+
atlas_idx = np.where(
|
|
717
|
+
(atlas.solar_atlas_wavelength >= wave_min) & (atlas.solar_atlas_wavelength <= wave_max)
|
|
718
|
+
)
|
|
719
|
+
atlas_norm = np.nanpercentile(
|
|
720
|
+
atlas.solar_atlas_transmission[atlas_idx],
|
|
721
|
+
self.parameters.wavecal_init_crval_guess_normalization_percentile,
|
|
722
|
+
)
|
|
723
|
+
spec_norm = np.nanpercentile(
|
|
724
|
+
representative_spectrum,
|
|
725
|
+
self.parameters.wavecal_init_crval_guess_normalization_percentile,
|
|
726
|
+
)
|
|
727
|
+
|
|
728
|
+
return spec_norm / atlas_norm
|
|
729
|
+
|
|
671
730
|
def compute_final_vignette_estimate(self, init_vignette_correction: np.ndarray) -> np.ndarray:
|
|
672
731
|
"""
|
|
673
732
|
Fit the spectral shape of continuum residuals for each spatial pixel.
|
|
@@ -149,6 +149,8 @@ class VispInputDatasetParameterValues:
|
|
|
149
149
|
)
|
|
150
150
|
visp_solar_characteristic_spatial_normalization_percentile: float = 90.0
|
|
151
151
|
visp_solar_vignette_initial_continuum_poly_fit_order: int = 6
|
|
152
|
+
visp_solar_vignette_crval_bounds_px: float = 7
|
|
153
|
+
visp_solar_vignette_dispersion_bounds_fraction: float = 0.02
|
|
152
154
|
visp_solar_vignette_wavecal_fit_kwargs: dict[str, Any] = field(
|
|
153
155
|
default_factory=lambda: {
|
|
154
156
|
"method": "differential_evolution",
|
|
@@ -184,6 +186,7 @@ class VispInputDatasetParameterValues:
|
|
|
184
186
|
"solar_reference_atlas_hash_id": "md5:84ab4c50689ef235fe5ed4f7ee905ca0",
|
|
185
187
|
}
|
|
186
188
|
)
|
|
189
|
+
visp_wavecal_init_crval_guess_normalization_percentile: float = 95
|
|
187
190
|
visp_wavecal_init_resolving_power: int = 150000
|
|
188
191
|
visp_wavecal_init_straylight_fraction: float = 0.2
|
|
189
192
|
visp_wavecal_init_opacity_factor: float = 5.0
|
|
@@ -86,19 +86,27 @@ def test_vignette_metrics_built(visp_assemble_quality_data_task):
|
|
|
86
86
|
filter(lambda i: i["name"].startswith("Initial Vignette Estimation"), final_report)
|
|
87
87
|
)
|
|
88
88
|
assert len(initial_vignette_metrics) == 2
|
|
89
|
+
facet_set = set()
|
|
89
90
|
for m in initial_vignette_metrics:
|
|
90
91
|
assert m["metric_code"] == VispMetricCode.solar_first_vignette.value
|
|
91
92
|
assert m["description"]
|
|
92
93
|
assert m["multi_plot_data"]
|
|
94
|
+
facet_set.add(m["facet"])
|
|
95
|
+
|
|
96
|
+
assert facet_set == {"BEAM_1", "BEAM_2"}
|
|
93
97
|
|
|
94
98
|
final_vignette_metrics = list(
|
|
95
99
|
filter(lambda i: i["name"].startswith("Final Vignette Estimation"), final_report)
|
|
96
100
|
)
|
|
97
101
|
assert len(final_vignette_metrics) == 2
|
|
102
|
+
facet_set = set()
|
|
98
103
|
for m in final_vignette_metrics:
|
|
99
104
|
assert m["metric_code"] == VispMetricCode.solar_final_vignette.value
|
|
100
105
|
assert m["description"]
|
|
101
106
|
assert m["multi_plot_data"]
|
|
107
|
+
facet_set.add(m["facet"])
|
|
108
|
+
|
|
109
|
+
assert facet_set == {"BEAM_1", "BEAM_2"}
|
|
102
110
|
|
|
103
111
|
|
|
104
112
|
def test_correct_polcal_label_list(
|
|
@@ -34,6 +34,7 @@ def arm_parameter_names() -> list[str]:
|
|
|
34
34
|
@pytest.fixture(scope="session")
|
|
35
35
|
def unit_parameter_names_and_units() -> dict[str, u.Unit | list[u.Unit]]:
|
|
36
36
|
return {
|
|
37
|
+
"solar_vignette_crval_bounds_px": u.pix,
|
|
37
38
|
"wavecal_camera_lens_parameters": [u.m, u.m / u.nm, u.m / u.nm**2],
|
|
38
39
|
"wavecal_pixel_pitch_micron_per_pix": u.um / u.pix,
|
|
39
40
|
}
|
|
@@ -310,8 +310,17 @@ def solar_gain_task(
|
|
|
310
310
|
|
|
311
311
|
|
|
312
312
|
@pytest.mark.parametrize(
|
|
313
|
-
"background_on",
|
|
314
|
-
[
|
|
313
|
+
"background_on, fit_kwargs",
|
|
314
|
+
[
|
|
315
|
+
pytest.param(True, {"method": "nelder"}, id="background_on-non_rng_method"),
|
|
316
|
+
pytest.param(False, "conftest", id="background_off-conftest_fit_kwargs"),
|
|
317
|
+
pytest.param(
|
|
318
|
+
False,
|
|
319
|
+
{"method": "differential_evolution", "rng": 6.28},
|
|
320
|
+
id="background_off-override_rng",
|
|
321
|
+
),
|
|
322
|
+
pytest.param(False, dict(), id="background_off-no_fit_kwargs"),
|
|
323
|
+
],
|
|
315
324
|
)
|
|
316
325
|
def test_solar_gain_task(
|
|
317
326
|
solar_gain_task,
|
|
@@ -326,6 +335,7 @@ def test_solar_gain_task(
|
|
|
326
335
|
assign_input_dataset_doc_to_task,
|
|
327
336
|
mocker,
|
|
328
337
|
fake_gql_client,
|
|
338
|
+
fit_kwargs,
|
|
329
339
|
):
|
|
330
340
|
"""
|
|
331
341
|
Given: A set of raw solar gain images and necessary intermediate calibrations
|
|
@@ -341,6 +351,7 @@ def test_solar_gain_task(
|
|
|
341
351
|
input_shape = (num_wave_pix * 2, 100)
|
|
342
352
|
intermediate_shape = (num_wave_pix, 100)
|
|
343
353
|
beam_border = input_shape[0] // 2
|
|
354
|
+
conftest_fit_kwargs = VispInputDatasetParameterValues().visp_solar_vignette_wavecal_fit_kwargs
|
|
344
355
|
assign_input_dataset_doc_to_task(
|
|
345
356
|
task,
|
|
346
357
|
VispInputDatasetParameterValues(
|
|
@@ -350,6 +361,9 @@ def test_solar_gain_task(
|
|
|
350
361
|
visp_wavecal_init_resolving_power=resolving_power,
|
|
351
362
|
visp_wavecal_camera_lens_parameters_1=lens_parameters_no_units,
|
|
352
363
|
visp_solar_vignette_initial_continuum_poly_fit_order=1,
|
|
364
|
+
visp_solar_vignette_wavecal_fit_kwargs=(
|
|
365
|
+
conftest_fit_kwargs if fit_kwargs == "conftest" else fit_kwargs
|
|
366
|
+
),
|
|
353
367
|
),
|
|
354
368
|
arm_id=1,
|
|
355
369
|
)
|
|
@@ -447,8 +461,10 @@ def test_continuum_wavecal_parameters():
|
|
|
447
461
|
Then: The polynomial coefficients are present
|
|
448
462
|
"""
|
|
449
463
|
order = 3
|
|
464
|
+
zeroth_order = 6.28
|
|
450
465
|
param_object = WavelengthCalibrationParametersWithContinuum(
|
|
451
466
|
continuum_poly_fit_order=order,
|
|
467
|
+
zeroth_order_continuum_coefficient=zeroth_order,
|
|
452
468
|
crval=400 * u.nm,
|
|
453
469
|
dispersion=3 * u.nm / u.pix,
|
|
454
470
|
incident_light_angle=4 * u.deg,
|
|
@@ -456,6 +472,7 @@ def test_continuum_wavecal_parameters():
|
|
|
456
472
|
doppler_velocity=0 * u.km / u.s,
|
|
457
473
|
order=1,
|
|
458
474
|
normalized_abscissa=np.arange(10),
|
|
475
|
+
continuum_level=99999.9,
|
|
459
476
|
)
|
|
460
477
|
lmfit_params = param_object.lmfit_parameters
|
|
461
478
|
|
|
@@ -464,13 +481,13 @@ def test_continuum_wavecal_parameters():
|
|
|
464
481
|
assert "poly_coeff_01" in lmfit_params
|
|
465
482
|
assert "poly_coeff_00" in lmfit_params
|
|
466
483
|
|
|
467
|
-
assert lmfit_params["poly_coeff_03"].
|
|
468
|
-
assert lmfit_params["poly_coeff_02"].
|
|
469
|
-
assert lmfit_params["poly_coeff_01"].
|
|
470
|
-
assert lmfit_params["poly_coeff_00"].
|
|
484
|
+
assert lmfit_params["poly_coeff_03"].init_value == zeroth_order
|
|
485
|
+
assert lmfit_params["poly_coeff_02"].init_value == 0
|
|
486
|
+
assert lmfit_params["poly_coeff_01"].init_value == 0
|
|
487
|
+
assert lmfit_params["poly_coeff_00"].init_value == 0
|
|
471
488
|
|
|
472
|
-
assert lmfit_params["poly_coeff_03"].min == 0.
|
|
473
|
-
assert lmfit_params["poly_coeff_03"].max == 1.
|
|
489
|
+
assert lmfit_params["poly_coeff_03"].min == zeroth_order * 0.5
|
|
490
|
+
assert lmfit_params["poly_coeff_03"].max == zeroth_order * 1.5
|
|
474
491
|
assert lmfit_params["poly_coeff_02"].min == -1
|
|
475
492
|
assert lmfit_params["poly_coeff_02"].max == 1
|
|
476
493
|
assert lmfit_params["poly_coeff_01"].min == -1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-visp
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.0rc3
|
|
4
4
|
Summary: Science processing code for the ViSP instrument on DKIST
|
|
5
5
|
Author-email: NSO / AURA <dkistdc@nso.edu>
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -13,14 +13,14 @@ Classifier: Programming Language :: Python :: 3
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
14
|
Requires-Python: >=3.12
|
|
15
15
|
Description-Content-Type: text/x-rst
|
|
16
|
-
Requires-Dist: dkist-processing-common==11.8.
|
|
16
|
+
Requires-Dist: dkist-processing-common==11.8.1rc3
|
|
17
17
|
Requires-Dist: dkist-processing-math==2.2.1
|
|
18
18
|
Requires-Dist: dkist-processing-pac==3.1.1
|
|
19
19
|
Requires-Dist: dkist-header-validator==5.2.1
|
|
20
20
|
Requires-Dist: dkist-fits-specifications==4.17.0
|
|
21
21
|
Requires-Dist: dkist-service-configuration==4.1.7
|
|
22
22
|
Requires-Dist: dkist-spectral-lines==3.0.0
|
|
23
|
-
Requires-Dist: solar-wavelength-calibration==2.0.
|
|
23
|
+
Requires-Dist: solar-wavelength-calibration==2.0.0rc4
|
|
24
24
|
Requires-Dist: astropy==7.0.2
|
|
25
25
|
Requires-Dist: numpy==2.2.5
|
|
26
26
|
Requires-Dist: sunpy==6.1.1
|
|
@@ -95,44 +95,44 @@ Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
|
|
|
95
95
|
Requires-Dist: aiohttp==3.13.2; extra == "frozen"
|
|
96
96
|
Requires-Dist: aiosignal==1.4.0; extra == "frozen"
|
|
97
97
|
Requires-Dist: aiosmtplib==5.0.0; extra == "frozen"
|
|
98
|
-
Requires-Dist: alembic==1.17.
|
|
98
|
+
Requires-Dist: alembic==1.17.2; extra == "frozen"
|
|
99
99
|
Requires-Dist: amqp==5.3.1; extra == "frozen"
|
|
100
100
|
Requires-Dist: annotated-types==0.7.0; extra == "frozen"
|
|
101
101
|
Requires-Dist: anyio==4.11.0; extra == "frozen"
|
|
102
102
|
Requires-Dist: apache-airflow==2.11.0; extra == "frozen"
|
|
103
103
|
Requires-Dist: apache-airflow-providers-celery==3.10.0; extra == "frozen"
|
|
104
|
-
Requires-Dist: apache-airflow-providers-common-compat==1.
|
|
105
|
-
Requires-Dist: apache-airflow-providers-common-io==1.6.
|
|
106
|
-
Requires-Dist: apache-airflow-providers-common-sql==1.
|
|
104
|
+
Requires-Dist: apache-airflow-providers-common-compat==1.9.0; extra == "frozen"
|
|
105
|
+
Requires-Dist: apache-airflow-providers-common-io==1.6.5; extra == "frozen"
|
|
106
|
+
Requires-Dist: apache-airflow-providers-common-sql==1.29.0; extra == "frozen"
|
|
107
107
|
Requires-Dist: apache-airflow-providers-fab==1.5.3; extra == "frozen"
|
|
108
|
-
Requires-Dist: apache-airflow-providers-ftp==3.13.
|
|
109
|
-
Requires-Dist: apache-airflow-providers-http==5.
|
|
110
|
-
Requires-Dist: apache-airflow-providers-imap==3.9.
|
|
111
|
-
Requires-Dist: apache-airflow-providers-postgres==6.4.
|
|
112
|
-
Requires-Dist: apache-airflow-providers-smtp==2.3.
|
|
113
|
-
Requires-Dist: apache-airflow-providers-sqlite==4.1.
|
|
108
|
+
Requires-Dist: apache-airflow-providers-ftp==3.13.3; extra == "frozen"
|
|
109
|
+
Requires-Dist: apache-airflow-providers-http==5.5.0; extra == "frozen"
|
|
110
|
+
Requires-Dist: apache-airflow-providers-imap==3.9.4; extra == "frozen"
|
|
111
|
+
Requires-Dist: apache-airflow-providers-postgres==6.4.1; extra == "frozen"
|
|
112
|
+
Requires-Dist: apache-airflow-providers-smtp==2.3.2; extra == "frozen"
|
|
113
|
+
Requires-Dist: apache-airflow-providers-sqlite==4.1.3; extra == "frozen"
|
|
114
114
|
Requires-Dist: apispec==6.8.4; extra == "frozen"
|
|
115
115
|
Requires-Dist: argcomplete==3.6.3; extra == "frozen"
|
|
116
116
|
Requires-Dist: asdf==3.5.0; extra == "frozen"
|
|
117
117
|
Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
|
|
118
118
|
Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
|
|
119
|
-
Requires-Dist: asgiref==3.
|
|
119
|
+
Requires-Dist: asgiref==3.11.0; extra == "frozen"
|
|
120
120
|
Requires-Dist: asteval==1.0.7; extra == "frozen"
|
|
121
121
|
Requires-Dist: astropy==7.0.2; extra == "frozen"
|
|
122
122
|
Requires-Dist: astropy-iers-data==0.2025.11.10.0.38.31; extra == "frozen"
|
|
123
123
|
Requires-Dist: asyncpg==0.30.0; extra == "frozen"
|
|
124
124
|
Requires-Dist: attrs==25.4.0; extra == "frozen"
|
|
125
125
|
Requires-Dist: babel==2.17.0; extra == "frozen"
|
|
126
|
-
Requires-Dist: billiard==4.2.
|
|
126
|
+
Requires-Dist: billiard==4.2.3; extra == "frozen"
|
|
127
127
|
Requires-Dist: blinker==1.9.0; extra == "frozen"
|
|
128
|
-
Requires-Dist: boto3==1.
|
|
129
|
-
Requires-Dist: botocore==1.
|
|
128
|
+
Requires-Dist: boto3==1.41.1; extra == "frozen"
|
|
129
|
+
Requires-Dist: botocore==1.41.1; extra == "frozen"
|
|
130
130
|
Requires-Dist: cachelib==0.13.0; extra == "frozen"
|
|
131
131
|
Requires-Dist: celery==5.3.1; extra == "frozen"
|
|
132
132
|
Requires-Dist: certifi==2025.11.12; extra == "frozen"
|
|
133
133
|
Requires-Dist: cffi==2.0.0; extra == "frozen"
|
|
134
134
|
Requires-Dist: charset-normalizer==3.4.4; extra == "frozen"
|
|
135
|
-
Requires-Dist: click==8.3.
|
|
135
|
+
Requires-Dist: click==8.3.1; extra == "frozen"
|
|
136
136
|
Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
|
|
137
137
|
Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
|
|
138
138
|
Requires-Dist: click-repl==0.3.0; extra == "frozen"
|
|
@@ -149,11 +149,11 @@ Requires-Dist: dacite==1.9.2; extra == "frozen"
|
|
|
149
149
|
Requires-Dist: decorator==5.2.1; extra == "frozen"
|
|
150
150
|
Requires-Dist: dill==0.4.0; extra == "frozen"
|
|
151
151
|
Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
|
|
152
|
-
Requires-Dist: dkist-processing-common==11.8.
|
|
152
|
+
Requires-Dist: dkist-processing-common==11.8.1rc3; extra == "frozen"
|
|
153
153
|
Requires-Dist: dkist-processing-core==6.0.0; extra == "frozen"
|
|
154
154
|
Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
|
|
155
155
|
Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
|
|
156
|
-
Requires-Dist: dkist-processing-visp==5.0.
|
|
156
|
+
Requires-Dist: dkist-processing-visp==5.0.0rc3; extra == "frozen"
|
|
157
157
|
Requires-Dist: dkist-service-configuration==4.1.7; extra == "frozen"
|
|
158
158
|
Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
|
|
159
159
|
Requires-Dist: dkist_fits_specifications==4.17.0; extra == "frozen"
|
|
@@ -251,7 +251,7 @@ Requires-Dist: proglog==0.1.12; extra == "frozen"
|
|
|
251
251
|
Requires-Dist: prometheus_client==0.23.1; extra == "frozen"
|
|
252
252
|
Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
|
|
253
253
|
Requires-Dist: propcache==0.4.1; extra == "frozen"
|
|
254
|
-
Requires-Dist: protobuf==6.33.
|
|
254
|
+
Requires-Dist: protobuf==6.33.1; extra == "frozen"
|
|
255
255
|
Requires-Dist: psutil==7.1.3; extra == "frozen"
|
|
256
256
|
Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
|
|
257
257
|
Requires-Dist: pycparser==2.23; extra == "frozen"
|
|
@@ -273,8 +273,8 @@ Requires-Dist: requests-toolbelt==1.0.0; extra == "frozen"
|
|
|
273
273
|
Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
|
|
274
274
|
Requires-Dist: rich==13.9.4; extra == "frozen"
|
|
275
275
|
Requires-Dist: rich-argparse==1.7.2; extra == "frozen"
|
|
276
|
-
Requires-Dist: rpds-py==0.
|
|
277
|
-
Requires-Dist: s3transfer==0.
|
|
276
|
+
Requires-Dist: rpds-py==0.29.0; extra == "frozen"
|
|
277
|
+
Requires-Dist: s3transfer==0.15.0; extra == "frozen"
|
|
278
278
|
Requires-Dist: scikit-image==0.25.2; extra == "frozen"
|
|
279
279
|
Requires-Dist: scikit-learn==1.6.1; extra == "frozen"
|
|
280
280
|
Requires-Dist: scipy==1.15.3; extra == "frozen"
|
|
@@ -282,7 +282,7 @@ Requires-Dist: semantic-version==2.10.0; extra == "frozen"
|
|
|
282
282
|
Requires-Dist: setproctitle==1.3.7; extra == "frozen"
|
|
283
283
|
Requires-Dist: six==1.17.0; extra == "frozen"
|
|
284
284
|
Requires-Dist: sniffio==1.3.1; extra == "frozen"
|
|
285
|
-
Requires-Dist: solar-wavelength-calibration==2.0.
|
|
285
|
+
Requires-Dist: solar-wavelength-calibration==2.0.0rc4; extra == "frozen"
|
|
286
286
|
Requires-Dist: sqids==0.5.1; extra == "frozen"
|
|
287
287
|
Requires-Dist: sqlparse==0.5.3; extra == "frozen"
|
|
288
288
|
Requires-Dist: sunpy==6.1.1; extra == "frozen"
|
|
@@ -301,14 +301,14 @@ Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
|
|
|
301
301
|
Requires-Dist: tzdata==2025.2; extra == "frozen"
|
|
302
302
|
Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
|
|
303
303
|
Requires-Dist: uncertainties==3.2.3; extra == "frozen"
|
|
304
|
-
Requires-Dist: universal_pathlib==0.3.
|
|
304
|
+
Requires-Dist: universal_pathlib==0.3.6; extra == "frozen"
|
|
305
305
|
Requires-Dist: urllib3==2.5.0; extra == "frozen"
|
|
306
306
|
Requires-Dist: vine==5.1.0; extra == "frozen"
|
|
307
307
|
Requires-Dist: voluptuous==0.15.2; extra == "frozen"
|
|
308
308
|
Requires-Dist: wcwidth==0.2.14; extra == "frozen"
|
|
309
309
|
Requires-Dist: wirerope==1.0.0; extra == "frozen"
|
|
310
310
|
Requires-Dist: wrapt==1.17.3; extra == "frozen"
|
|
311
|
-
Requires-Dist: yamale==6.
|
|
311
|
+
Requires-Dist: yamale==6.1.0; extra == "frozen"
|
|
312
312
|
Requires-Dist: yarl==1.22.0; extra == "frozen"
|
|
313
313
|
Requires-Dist: zipp==3.23.0; extra == "frozen"
|
|
314
314
|
|