dkist-processing-vbi 2.0.0__tar.gz → 2.0.1__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.
Files changed (92) hide show
  1. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/CHANGELOG.rst +23 -0
  2. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/PKG-INFO +75 -76
  3. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/models/filter.py +1 -1
  4. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/conftest.py +12 -15
  5. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/local_trial_workflows/l0_to_l1.py +7 -4
  6. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_assemble_movie.py +1 -1
  7. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_fits_access.py +1 -8
  8. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_gain.py +1 -1
  9. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_make_movie_frames.py +2 -2
  10. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_parse_l0.py +5 -5
  11. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_parse_summit.py +2 -2
  12. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_process_summit.py +2 -2
  13. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_science.py +1 -1
  14. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_write_l1.py +2 -9
  15. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi.egg-info/PKG-INFO +75 -76
  16. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi.egg-info/requires.txt +74 -75
  17. dkist_processing_vbi-2.0.1/dkist_processing_vbi.egg-info/scm_version.json +8 -0
  18. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/pyproject.toml +76 -77
  19. dkist_processing_vbi-2.0.0/dkist_processing_vbi.egg-info/scm_version.json +0 -8
  20. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/.gitignore +0 -0
  21. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/.pre-commit-config.yaml +0 -0
  22. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/.readthedocs.yml +0 -0
  23. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/.rovodev/.review-agent.md +0 -0
  24. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/.snyk +0 -0
  25. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/README.rst +0 -0
  26. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/SCIENCE_CHANGELOG.rst +0 -0
  27. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/bitbucket-pipelines.yml +0 -0
  28. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/changelog/.gitempty +0 -0
  29. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/__init__.py +0 -0
  30. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/config.py +0 -0
  31. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/models/__init__.py +0 -0
  32. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/models/burst.py +0 -0
  33. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/models/constants.py +0 -0
  34. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/models/dataset_extras.py +0 -0
  35. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/models/fits_access.py +0 -0
  36. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/models/parameters.py +0 -0
  37. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/models/tags.py +0 -0
  38. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/models/task_name.py +0 -0
  39. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/parsers/__init__.py +0 -0
  40. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/parsers/burst.py +0 -0
  41. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/parsers/mosaic_repeats.py +0 -0
  42. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/parsers/spatial_step_pattern.py +0 -0
  43. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/parsers/time.py +0 -0
  44. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/parsers/vbi_l0_fits_access.py +0 -0
  45. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/parsers/vbi_l1_fits_access.py +0 -0
  46. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/__init__.py +0 -0
  47. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/assemble_movie.py +0 -0
  48. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/dark.py +0 -0
  49. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/gain.py +0 -0
  50. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/make_movie_frames.py +0 -0
  51. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/parse.py +0 -0
  52. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/process_summit_processed.py +0 -0
  53. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/quality_metrics.py +0 -0
  54. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/science.py +0 -0
  55. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/vbi_base.py +0 -0
  56. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/write_dataset_extras.py +0 -0
  57. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tasks/write_l1.py +0 -0
  58. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/__init__.py +0 -0
  59. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/local_trial_workflows/__init__.py +0 -0
  60. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_dark.py +0 -0
  61. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_dataset_extras.py +0 -0
  62. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_quality_metrics.py +0 -0
  63. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_spatial_step_pattern.py +0 -0
  64. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_vbi_base.py +0 -0
  65. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_vbi_constants.py +0 -0
  66. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/tests/test_workflows.py +0 -0
  67. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/workflows/__init__.py +0 -0
  68. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/workflows/l0_processing.py +0 -0
  69. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/workflows/summit_data_processing.py +0 -0
  70. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi/workflows/trial_workflows.py +0 -0
  71. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi.egg-info/SOURCES.txt +0 -0
  72. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi.egg-info/dependency_links.txt +0 -0
  73. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi.egg-info/scm_file_list.json +0 -0
  74. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/dkist_processing_vbi.egg-info/top_level.txt +0 -0
  75. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/Makefile +0 -0
  76. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/changelog.rst +0 -0
  77. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/conf.py +0 -0
  78. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/dataset_extras.rst +0 -0
  79. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/index.rst +0 -0
  80. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/l0_to_l1_vbi_no-speckle-full-trial.rst +0 -0
  81. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/l0_to_l1_vbi_no-speckle.rst +0 -0
  82. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/l0_to_l1_vbi_summit-calibrated-full-trial.rst +0 -0
  83. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/l0_to_l1_vbi_summit-calibrated.rst +0 -0
  84. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/landing_page.rst +0 -0
  85. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/make.bat +0 -0
  86. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/requirements.txt +0 -0
  87. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/requirements_table.rst +0 -0
  88. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/docs/scientific_changelog.rst +0 -0
  89. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/licenses/LICENSE.rst +0 -0
  90. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/science_towncrier.sh +0 -0
  91. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/setup.cfg +0 -0
  92. {dkist_processing_vbi-2.0.0 → dkist_processing_vbi-2.0.1}/towncrier_science.toml +0 -0
@@ -1,3 +1,26 @@
1
+ v2.0.1 (2026-09-24)
2
+ ===================
3
+
4
+ Bugfixes
5
+ --------
6
+
7
+ - Fix the typo in the name for the "VBI-Red Fe XI" filter. (`#235 <https://bitbucket.org/dkistdc/dkist-processing-vbi/pull-requests/235>`__)
8
+
9
+
10
+ Misc
11
+ ----
12
+
13
+ - Use the "level0_spec214" file schema keyword argument in test Datasets.
14
+ With this keyword, subsequent translation of the resulting headers to
15
+ Spec 214 is not necessary. (`#223 <https://bitbucket.org/dkistdc/dkist-processing-vbi/pull-requests/223>`__)
16
+ - Use dkist-fits-specifications v4.29.0, which includes the Trend FITS specification.
17
+ Use dkist-header-validator v6.0.0, a significant refactor that allows multi-HDU objects to be validated.
18
+ Use dkist-processing-common v14.5.0, which accommodates the changes to the header validator. (`#223 <https://bitbucket.org/dkistdc/dkist-processing-vbi/pull-requests/223>`__)
19
+ - Validators no longer have validate-and-translate methods.
20
+ Where still necessary, replace validate-and-translate calls with a call to
21
+ validate and then a call to translate. (`#223 <https://bitbucket.org/dkistdc/dkist-processing-vbi/pull-requests/223>`__)
22
+
23
+
1
24
  v2.0.0 (2026-09-03)
2
25
  ===================
3
26
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-vbi
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: Processing code for the VBI instrument on DKIST
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -13,10 +13,10 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/x-rst
16
- Requires-Dist: dkist-processing-common==14.4.0
16
+ Requires-Dist: dkist-processing-common==14.5.0
17
17
  Requires-Dist: dkist-processing-math==2.2.3
18
- Requires-Dist: dkist-header-validator==5.4.0
19
- Requires-Dist: dkist-fits-specifications==4.28.1
18
+ Requires-Dist: dkist-header-validator==6.0.0
19
+ Requires-Dist: dkist-fits-specifications==4.29.0
20
20
  Requires-Dist: astropy==7.0.2
21
21
  Requires-Dist: numpy==2.2.5
22
22
  Requires-Dist: sunpy==6.1.1
@@ -31,7 +31,7 @@ Requires-Dist: pytest; extra == "test"
31
31
  Requires-Dist: pytest-cov; extra == "test"
32
32
  Requires-Dist: pytest-mock; extra == "test"
33
33
  Requires-Dist: pytest-xdist; extra == "test"
34
- Requires-Dist: dkist-data-simulator>=5.2.6; extra == "test"
34
+ Requires-Dist: dkist-data-simulator; extra == "test"
35
35
  Requires-Dist: dkist-processing-vbi[inventory]; extra == "test"
36
36
  Requires-Dist: dkist-processing-vbi[asdf]; extra == "test"
37
37
  Requires-Dist: dkist-processing-vbi[quality]; extra == "test"
@@ -58,50 +58,49 @@ Provides-Extra: frozen
58
58
  Requires-Dist: Deprecated==1.3.1; extra == "frozen"
59
59
  Requires-Dist: ImageIO==2.37.4; extra == "frozen"
60
60
  Requires-Dist: Jinja2==3.1.6; extra == "frozen"
61
- Requires-Dist: Mako==1.4.1; extra == "frozen"
61
+ Requires-Dist: Mako==1.4.3; extra == "frozen"
62
62
  Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
63
63
  Requires-Dist: PIMS==0.7; extra == "frozen"
64
64
  Requires-Dist: PeakUtils==1.3.5; extra == "frozen"
65
65
  Requires-Dist: PyAVM==0.9.9; extra == "frozen"
66
- Requires-Dist: PyJWT==2.13.0; extra == "frozen"
66
+ Requires-Dist: PyJWT==2.15.0; extra == "frozen"
67
67
  Requires-Dist: PyYAML==6.0.3; extra == "frozen"
68
68
  Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
69
69
  Requires-Dist: Pygments==2.21.0; extra == "frozen"
70
- Requires-Dist: SQLAlchemy==2.0.52; extra == "frozen"
70
+ Requires-Dist: SQLAlchemy==2.0.54; extra == "frozen"
71
71
  Requires-Dist: Send2Trash==2.1.0; extra == "frozen"
72
72
  Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
73
- Requires-Dist: aioftp==0.28.0; extra == "frozen"
73
+ Requires-Dist: aioftp==0.28.3; extra == "frozen"
74
74
  Requires-Dist: aiohappyeyeballs==2.7.1; extra == "frozen"
75
75
  Requires-Dist: aiohttp==3.14.3; extra == "frozen"
76
76
  Requires-Dist: aiosignal==1.4.0; extra == "frozen"
77
- Requires-Dist: aiosmtplib==5.1.2; extra == "frozen"
77
+ Requires-Dist: aiosmtplib==5.1.3; extra == "frozen"
78
78
  Requires-Dist: aiosqlite==0.22.1; extra == "frozen"
79
- Requires-Dist: alembic==1.19.1; extra == "frozen"
80
- Requires-Dist: amqp==5.3.1; extra == "frozen"
79
+ Requires-Dist: alembic==1.20.0; extra == "frozen"
80
+ Requires-Dist: amqp==5.4.0; extra == "frozen"
81
81
  Requires-Dist: annotated-doc==0.0.5; extra == "frozen"
82
82
  Requires-Dist: annotated-types==0.8.0; extra == "frozen"
83
- Requires-Dist: anyio==4.15.0; extra == "frozen"
83
+ Requires-Dist: anyio==4.15.1; extra == "frozen"
84
84
  Requires-Dist: apache-airflow==3.3.1; extra == "frozen"
85
85
  Requires-Dist: apache-airflow-core==3.3.1; extra == "frozen"
86
- Requires-Dist: apache-airflow-providers-celery==3.23.1; extra == "frozen"
87
- Requires-Dist: apache-airflow-providers-common-compat==1.18.0; extra == "frozen"
88
- Requires-Dist: apache-airflow-providers-common-io==1.8.0; extra == "frozen"
86
+ Requires-Dist: apache-airflow-providers-celery==3.24.0; extra == "frozen"
87
+ Requires-Dist: apache-airflow-providers-common-compat==1.19.0; extra == "frozen"
88
+ Requires-Dist: apache-airflow-providers-common-io==1.9.0; extra == "frozen"
89
89
  Requires-Dist: apache-airflow-providers-common-sql==2.1.1; extra == "frozen"
90
90
  Requires-Dist: apache-airflow-providers-postgres==7.0.2; extra == "frozen"
91
- Requires-Dist: apache-airflow-providers-smtp==3.0.3; extra == "frozen"
92
- Requires-Dist: apache-airflow-providers-standard==1.18.0; extra == "frozen"
91
+ Requires-Dist: apache-airflow-providers-smtp==3.0.4; extra == "frozen"
92
+ Requires-Dist: apache-airflow-providers-standard==1.19.0; extra == "frozen"
93
93
  Requires-Dist: apache-airflow-task-sdk==1.3.1; extra == "frozen"
94
- Requires-Dist: appnope==1.0.0; extra == "frozen"
95
94
  Requires-Dist: argcomplete==3.7.2; extra == "frozen"
96
95
  Requires-Dist: argon2-cffi==25.1.0; extra == "frozen"
97
96
  Requires-Dist: argon2-cffi-bindings==26.1.0; extra == "frozen"
98
97
  Requires-Dist: arrow==1.4.0; extra == "frozen"
99
- Requires-Dist: asdf==5.3.1; extra == "frozen"
98
+ Requires-Dist: asdf==5.4.0; extra == "frozen"
100
99
  Requires-Dist: asdf_standard==1.5.0; extra == "frozen"
101
100
  Requires-Dist: asgiref==3.12.1; extra == "frozen"
102
101
  Requires-Dist: asteval==1.0.10; extra == "frozen"
103
102
  Requires-Dist: astropy==7.0.2; extra == "frozen"
104
- Requires-Dist: astropy-iers-data==0.2026.8.31.0.57.9; extra == "frozen"
103
+ Requires-Dist: astropy-iers-data==0.2026.9.21.0.56.25; extra == "frozen"
105
104
  Requires-Dist: astropy_healpix==2.0.1; extra == "frozen"
106
105
  Requires-Dist: asttokens==3.0.2; extra == "frozen"
107
106
  Requires-Dist: async-lru==2.3.0; extra == "frozen"
@@ -109,11 +108,11 @@ Requires-Dist: asyncpg==0.31.0; extra == "frozen"
109
108
  Requires-Dist: attrs==26.1.0; extra == "frozen"
110
109
  Requires-Dist: babel==2.18.0; extra == "frozen"
111
110
  Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
112
- Requires-Dist: billiard==4.2.4; extra == "frozen"
111
+ Requires-Dist: billiard==4.3.0; extra == "frozen"
113
112
  Requires-Dist: bleach==6.4.0; extra == "frozen"
114
- Requires-Dist: boto3==1.43.88; extra == "frozen"
115
- Requires-Dist: botocore==1.43.88; extra == "frozen"
116
- Requires-Dist: cachetools==7.1.8; extra == "frozen"
113
+ Requires-Dist: boto3==1.43.101; extra == "frozen"
114
+ Requires-Dist: botocore==1.43.101; extra == "frozen"
115
+ Requires-Dist: cachetools==7.2.0; extra == "frozen"
117
116
  Requires-Dist: cadwyn==7.0.0; extra == "frozen"
118
117
  Requires-Dist: celery==5.6.3; extra == "frozen"
119
118
  Requires-Dist: certifi==2026.7.22; extra == "frozen"
@@ -122,30 +121,30 @@ Requires-Dist: charset-normalizer==3.5.1; extra == "frozen"
122
121
  Requires-Dist: click==8.5.0; extra == "frozen"
123
122
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
124
123
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
125
- Requires-Dist: click-repl==0.3.0; extra == "frozen"
124
+ Requires-Dist: click-repl==0.4.0; extra == "frozen"
126
125
  Requires-Dist: cloudpickle==3.1.2; extra == "frozen"
127
126
  Requires-Dist: colorlog==6.12.0; extra == "frozen"
128
127
  Requires-Dist: comm==0.2.3; extra == "frozen"
129
- Requires-Dist: contourpy==1.3.3; extra == "frozen"
128
+ Requires-Dist: contourpy==1.4.0; extra == "frozen"
130
129
  Requires-Dist: cron_descriptor==2.1.0; extra == "frozen"
131
130
  Requires-Dist: croniter==6.2.4; extra == "frozen"
132
131
  Requires-Dist: cryptography==50.0.1; extra == "frozen"
133
132
  Requires-Dist: cycler==0.12.1; extra == "frozen"
134
133
  Requires-Dist: dask==2026.8.0; extra == "frozen"
135
134
  Requires-Dist: dask-image==2026.5.0; extra == "frozen"
136
- Requires-Dist: debugpy==1.8.21; extra == "frozen"
135
+ Requires-Dist: debugpy==1.8.22; extra == "frozen"
137
136
  Requires-Dist: decorator==5.3.1; extra == "frozen"
138
137
  Requires-Dist: defusedxml==0.7.1; extra == "frozen"
139
138
  Requires-Dist: dill==0.4.1; extra == "frozen"
140
- Requires-Dist: dkist-header-validator==5.4.0; extra == "frozen"
141
- Requires-Dist: dkist-processing-common==14.4.0; extra == "frozen"
139
+ Requires-Dist: dkist-header-validator==6.0.0; extra == "frozen"
140
+ Requires-Dist: dkist-processing-common==14.5.0; extra == "frozen"
142
141
  Requires-Dist: dkist-processing-core==7.5.0; extra == "frozen"
143
142
  Requires-Dist: dkist-processing-math==2.2.3; extra == "frozen"
144
143
  Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
145
- Requires-Dist: dkist-processing-vbi==2.0.0; extra == "frozen"
144
+ Requires-Dist: dkist-processing-vbi==2.0.1; extra == "frozen"
146
145
  Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
147
146
  Requires-Dist: dkist-spectral-lines==3.0.1; extra == "frozen"
148
- Requires-Dist: dkist_fits_specifications==4.28.1; extra == "frozen"
147
+ Requires-Dist: dkist_fits_specifications==4.29.0; extra == "frozen"
149
148
  Requires-Dist: dnspython==2.8.0; extra == "frozen"
150
149
  Requires-Dist: donfig==0.8.1.post1; extra == "frozen"
151
150
  Requires-Dist: email-validator==2.3.0; extra == "frozen"
@@ -153,24 +152,24 @@ Requires-Dist: executing==2.2.1; extra == "frozen"
153
152
  Requires-Dist: fastapi==0.136.3; extra == "frozen"
154
153
  Requires-Dist: fastapi-cli==0.0.32; extra == "frozen"
155
154
  Requires-Dist: fastjsonschema==2.22.2; extra == "frozen"
156
- Requires-Dist: flower==2.1.0; extra == "frozen"
157
- Requires-Dist: fonttools==4.64.0; extra == "frozen"
155
+ Requires-Dist: flower==2.2.0; extra == "frozen"
156
+ Requires-Dist: fonttools==4.66.0; extra == "frozen"
158
157
  Requires-Dist: fqdn==1.5.1; extra == "frozen"
159
158
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
160
- Requires-Dist: fsspec==2026.7.0; extra == "frozen"
159
+ Requires-Dist: fsspec==2026.9.0; extra == "frozen"
161
160
  Requires-Dist: globus-sdk==4.9.0; extra == "frozen"
162
161
  Requires-Dist: google-crc32c==1.8.0; extra == "frozen"
163
- Requires-Dist: googleapis-common-protos==1.75.2; extra == "frozen"
162
+ Requires-Dist: googleapis-common-protos==1.75.3; extra == "frozen"
164
163
  Requires-Dist: gqlclient==2.0.0; extra == "frozen"
165
164
  Requires-Dist: greenback==1.3.0; extra == "frozen"
166
- Requires-Dist: greenlet==3.5.5; extra == "frozen"
167
- Requires-Dist: grpcio==1.83.1; extra == "frozen"
165
+ Requires-Dist: greenlet==3.5.6; extra == "frozen"
166
+ Requires-Dist: grpcio==1.84.0; extra == "frozen"
168
167
  Requires-Dist: h11==0.16.0; extra == "frozen"
169
168
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
170
169
  Requires-Dist: httptools==0.8.0; extra == "frozen"
171
170
  Requires-Dist: httpx==0.28.1; extra == "frozen"
172
171
  Requires-Dist: humanize==4.16.0; extra == "frozen"
173
- Requires-Dist: idna==3.19; extra == "frozen"
172
+ Requires-Dist: idna==3.20; extra == "frozen"
174
173
  Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
175
174
  Requires-Dist: importlib_metadata==9.0.1; extra == "frozen"
176
175
  Requires-Dist: ipykernel==7.3.0; extra == "frozen"
@@ -186,18 +185,18 @@ Requires-Dist: jsonschema==4.26.0; extra == "frozen"
186
185
  Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
187
186
  Requires-Dist: jupyter-events==0.12.1; extra == "frozen"
188
187
  Requires-Dist: jupyter-lsp==2.3.1; extra == "frozen"
189
- Requires-Dist: jupyter_builder==1.2.2; extra == "frozen"
188
+ Requires-Dist: jupyter_builder==1.2.3; extra == "frozen"
190
189
  Requires-Dist: jupyter_client==8.10.0; extra == "frozen"
191
190
  Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
192
- Requires-Dist: jupyter_server==2.21.0; extra == "frozen"
191
+ Requires-Dist: jupyter_server==2.21.1; extra == "frozen"
193
192
  Requires-Dist: jupyter_server_terminals==0.5.4; extra == "frozen"
194
- Requires-Dist: jupyterlab==4.6.3; extra == "frozen"
193
+ Requires-Dist: jupyterlab==4.6.4; extra == "frozen"
195
194
  Requires-Dist: jupyterlab_pygments==0.3.0; extra == "frozen"
196
- Requires-Dist: jupyterlab_server==2.28.0; extra == "frozen"
195
+ Requires-Dist: jupyterlab_server==2.28.1; extra == "frozen"
197
196
  Requires-Dist: kiwisolver==1.5.1; extra == "frozen"
198
197
  Requires-Dist: kombu==5.6.2; extra == "frozen"
199
198
  Requires-Dist: lark==1.3.1; extra == "frozen"
200
- Requires-Dist: lazy-loader==0.5; extra == "frozen"
199
+ Requires-Dist: lazy-loader==0.6; extra == "frozen"
201
200
  Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
202
201
  Requires-Dist: libcst==1.9.0; extra == "frozen"
203
202
  Requires-Dist: linkify-it-py==2.2.0; extra == "frozen"
@@ -206,7 +205,7 @@ Requires-Dist: locket==1.0.0; extra == "frozen"
206
205
  Requires-Dist: lockfile==0.12.2; extra == "frozen"
207
206
  Requires-Dist: loguru==0.7.3; extra == "frozen"
208
207
  Requires-Dist: markdown-it-py==4.2.0; extra == "frozen"
209
- Requires-Dist: matplotlib==3.11.1; extra == "frozen"
208
+ Requires-Dist: matplotlib==3.11.2; extra == "frozen"
210
209
  Requires-Dist: matplotlib-inline==0.2.2; extra == "frozen"
211
210
  Requires-Dist: mdurl==0.1.2; extra == "frozen"
212
211
  Requires-Dist: methodtools==0.4.7; extra == "frozen"
@@ -214,16 +213,16 @@ Requires-Dist: mistune==3.3.4; extra == "frozen"
214
213
  Requires-Dist: more-itertools==11.1.0; extra == "frozen"
215
214
  Requires-Dist: moviepy==2.2.1; extra == "frozen"
216
215
  Requires-Dist: msgspec==0.21.1; extra == "frozen"
217
- Requires-Dist: multidict==6.7.1; extra == "frozen"
216
+ Requires-Dist: multidict==6.9.1; extra == "frozen"
218
217
  Requires-Dist: natsort==8.4.0; extra == "frozen"
219
218
  Requires-Dist: nbclient==0.11.0; extra == "frozen"
220
219
  Requires-Dist: nbconvert==7.17.1; extra == "frozen"
221
220
  Requires-Dist: nbformat==5.11.1; extra == "frozen"
222
- Requires-Dist: nest-asyncio2==1.7.2; extra == "frozen"
223
- Requires-Dist: networkx==3.6.1; extra == "frozen"
224
- Requires-Dist: notebook==7.6.2; extra == "frozen"
221
+ Requires-Dist: nest-asyncio2==1.7.3; extra == "frozen"
222
+ Requires-Dist: networkx==3.7; extra == "frozen"
223
+ Requires-Dist: notebook==7.6.3; extra == "frozen"
225
224
  Requires-Dist: notebook_shim==0.2.4; extra == "frozen"
226
- Requires-Dist: numcodecs==0.16.5; extra == "frozen"
225
+ Requires-Dist: numcodecs==0.17.0; extra == "frozen"
227
226
  Requires-Dist: numpy==2.2.5; extra == "frozen"
228
227
  Requires-Dist: object-clerk==1.0.0; extra == "frozen"
229
228
  Requires-Dist: opentelemetry-api==1.44.0; extra == "frozen"
@@ -252,7 +251,7 @@ Requires-Dist: opentelemetry-semantic-conventions==0.65b0; extra == "frozen"
252
251
  Requires-Dist: opentelemetry-util-http==0.65b0; extra == "frozen"
253
252
  Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
254
253
  Requires-Dist: packaging==26.3; extra == "frozen"
255
- Requires-Dist: pandas==3.0.5; extra == "frozen"
254
+ Requires-Dist: pandas==3.0.6; extra == "frozen"
256
255
  Requires-Dist: pandocfilters==1.5.1; extra == "frozen"
257
256
  Requires-Dist: parfive==2.3.1; extra == "frozen"
258
257
  Requires-Dist: parso==0.8.7; extra == "frozen"
@@ -264,35 +263,35 @@ Requires-Dist: pexpect==4.9.0; extra == "frozen"
264
263
  Requires-Dist: pika==1.4.4; extra == "frozen"
265
264
  Requires-Dist: pillow==10.4.0; extra == "frozen"
266
265
  Requires-Dist: pip==26.2.1; extra == "frozen"
267
- Requires-Dist: platformdirs==4.11.7; extra == "frozen"
266
+ Requires-Dist: platformdirs==4.11.12; extra == "frozen"
268
267
  Requires-Dist: pluggy==1.6.0; extra == "frozen"
269
268
  Requires-Dist: pooch==1.9.0; extra == "frozen"
270
269
  Requires-Dist: proglog==0.1.12; extra == "frozen"
271
270
  Requires-Dist: prometheus_client==0.26.0; extra == "frozen"
272
271
  Requires-Dist: prompt_toolkit==3.0.53; extra == "frozen"
273
- Requires-Dist: propcache==0.5.2; extra == "frozen"
274
- Requires-Dist: protobuf==7.36.1; extra == "frozen"
272
+ Requires-Dist: propcache==0.5.4; extra == "frozen"
273
+ Requires-Dist: protobuf==7.36.2; extra == "frozen"
275
274
  Requires-Dist: psutil==7.2.2; extra == "frozen"
276
- Requires-Dist: psycopg==3.3.5; extra == "frozen"
277
- Requires-Dist: psycopg-binary==3.3.5; extra == "frozen"
278
- Requires-Dist: psycopg2-binary==2.9.12; extra == "frozen"
275
+ Requires-Dist: psycopg==3.3.6; extra == "frozen"
276
+ Requires-Dist: psycopg-binary==3.3.6; extra == "frozen"
277
+ Requires-Dist: psycopg2-binary==2.9.13; extra == "frozen"
279
278
  Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
280
- Requires-Dist: pure_eval==0.2.3; extra == "frozen"
279
+ Requires-Dist: pure_eval==0.2.4; extra == "frozen"
281
280
  Requires-Dist: pycparser==3.0; extra == "frozen"
282
281
  Requires-Dist: pydantic==2.13.5; extra == "frozen"
283
282
  Requires-Dist: pydantic-extra-types==2.11.1; extra == "frozen"
284
283
  Requires-Dist: pydantic-settings==2.15.0; extra == "frozen"
285
284
  Requires-Dist: pydantic_core==2.46.5; extra == "frozen"
286
285
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
287
- Requires-Dist: pygtrie==2.6.1; extra == "frozen"
288
- Requires-Dist: pyparsing==3.3.2; extra == "frozen"
286
+ Requires-Dist: pygtrie==2.6.2; extra == "frozen"
287
+ Requires-Dist: pyparsing==3.3.3; extra == "frozen"
289
288
  Requires-Dist: python-daemon==3.1.2; extra == "frozen"
290
289
  Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
291
290
  Requires-Dist: python-dotenv==1.2.3; extra == "frozen"
292
291
  Requires-Dist: python-json-logger==4.2.0; extra == "frozen"
293
292
  Requires-Dist: python-multipart==0.0.32; extra == "frozen"
294
- Requires-Dist: python-slugify==8.0.4; extra == "frozen"
295
- Requires-Dist: pytz==2026.3.post1; extra == "frozen"
293
+ Requires-Dist: python-slugify==9.1.1; extra == "frozen"
294
+ Requires-Dist: pytz==2026.4; extra == "frozen"
296
295
  Requires-Dist: pyzmq==27.2.0; extra == "frozen"
297
296
  Requires-Dist: redis==6.4.0; extra == "frozen"
298
297
  Requires-Dist: referencing==0.37.0; extra == "frozen"
@@ -303,7 +302,7 @@ Requires-Dist: rfc3986-validator==0.1.1; extra == "frozen"
303
302
  Requires-Dist: rfc3987-syntax==1.1.0; extra == "frozen"
304
303
  Requires-Dist: rich==15.0.0; extra == "frozen"
305
304
  Requires-Dist: rich-argparse==1.8.0; extra == "frozen"
306
- Requires-Dist: rich-toolkit==0.20.3; extra == "frozen"
305
+ Requires-Dist: rich-toolkit==0.20.5; extra == "frozen"
307
306
  Requires-Dist: rpds-py==2026.6.3; extra == "frozen"
308
307
  Requires-Dist: s3transfer==0.19.2; extra == "frozen"
309
308
  Requires-Dist: scikit-image==0.26.0; extra == "frozen"
@@ -315,11 +314,11 @@ Requires-Dist: six==1.17.0; extra == "frozen"
315
314
  Requires-Dist: slicerator==1.1.0; extra == "frozen"
316
315
  Requires-Dist: sniffio==1.3.1; extra == "frozen"
317
316
  Requires-Dist: solar-wavelength-calibration==2.0.3; extra == "frozen"
318
- Requires-Dist: soupsieve==2.9.2; extra == "frozen"
317
+ Requires-Dist: soupsieve==2.10; extra == "frozen"
319
318
  Requires-Dist: sqids==0.5.1; extra == "frozen"
320
319
  Requires-Dist: sqlparse==0.6.0; extra == "frozen"
321
320
  Requires-Dist: stack-data==0.6.3; extra == "frozen"
322
- Requires-Dist: starlette==1.6.0; extra == "frozen"
321
+ Requires-Dist: starlette==1.7.0; extra == "frozen"
323
322
  Requires-Dist: structlog==26.1.0; extra == "frozen"
324
323
  Requires-Dist: sunpy==6.1.1; extra == "frozen"
325
324
  Requires-Dist: svcs==26.2.0; extra == "frozen"
@@ -329,37 +328,37 @@ Requires-Dist: tenacity==8.5.0; extra == "frozen"
329
328
  Requires-Dist: termcolor==3.3.0; extra == "frozen"
330
329
  Requires-Dist: terminado==0.18.1; extra == "frozen"
331
330
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
332
- Requires-Dist: tifffile==2026.8.23; extra == "frozen"
331
+ Requires-Dist: tifffile==2026.9.20; extra == "frozen"
333
332
  Requires-Dist: tinycss2==1.5.1; extra == "frozen"
334
333
  Requires-Dist: toolz==1.1.0; extra == "frozen"
335
- Requires-Dist: tornado==6.5.8; extra == "frozen"
336
- Requires-Dist: tqdm==4.70.0; extra == "frozen"
334
+ Requires-Dist: tornado==6.5.10; extra == "frozen"
335
+ Requires-Dist: tqdm==4.70.1; extra == "frozen"
337
336
  Requires-Dist: traitlets==5.16.1; extra == "frozen"
338
337
  Requires-Dist: typer==0.27.2; extra == "frozen"
339
338
  Requires-Dist: typing-inspection==0.4.4; extra == "frozen"
340
339
  Requires-Dist: typing_extensions==4.16.0; extra == "frozen"
341
- Requires-Dist: tzdata==2026.3; extra == "frozen"
340
+ Requires-Dist: tzdata==2026.4; extra == "frozen"
342
341
  Requires-Dist: tzlocal==5.4.4; extra == "frozen"
343
342
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
344
343
  Requires-Dist: universal_pathlib==0.3.10; extra == "frozen"
345
344
  Requires-Dist: uri-template==1.3.0; extra == "frozen"
346
- Requires-Dist: urllib3==2.7.0; extra == "frozen"
345
+ Requires-Dist: urllib3==2.8.0; extra == "frozen"
347
346
  Requires-Dist: uuid6==2025.0.1; extra == "frozen"
348
- Requires-Dist: uvicorn==0.52.4; extra == "frozen"
347
+ Requires-Dist: uvicorn==0.53.0; extra == "frozen"
349
348
  Requires-Dist: uvloop==0.22.1; extra == "frozen"
350
349
  Requires-Dist: vine==5.1.0; extra == "frozen"
351
350
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
352
- Requires-Dist: watchfiles==1.2.0; extra == "frozen"
353
- Requires-Dist: wcwidth==0.8.3; extra == "frozen"
351
+ Requires-Dist: watchfiles==1.3.0; extra == "frozen"
352
+ Requires-Dist: wcwidth==0.9.1; extra == "frozen"
354
353
  Requires-Dist: webcolors==25.10.0; extra == "frozen"
355
354
  Requires-Dist: webencodings==0.6.1; extra == "frozen"
356
355
  Requires-Dist: websocket-client==1.9.2; extra == "frozen"
357
356
  Requires-Dist: websockets==17.1; extra == "frozen"
358
357
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
359
- Requires-Dist: wrapt==2.4.0; extra == "frozen"
358
+ Requires-Dist: wrapt==2.4.1; extra == "frozen"
360
359
  Requires-Dist: yamale==6.1.0; extra == "frozen"
361
- Requires-Dist: yarl==1.24.5; extra == "frozen"
362
- Requires-Dist: zarr==3.3.0; extra == "frozen"
360
+ Requires-Dist: yarl==1.25.1; extra == "frozen"
361
+ Requires-Dist: zarr==3.4.0; extra == "frozen"
363
362
  Requires-Dist: zipp==4.1.0; extra == "frozen"
364
363
 
365
364
  dkist-processing-vbi
@@ -25,7 +25,7 @@ VBI_FILTERS = [
25
25
  Filter(name="VBI-Red H-alpha", min=656.258 * u.nm, max=656.306 * u.nm),
26
26
  Filter(name="VBI-Red Continuum", min=668.202 * u.nm, max=668.644 * u.nm),
27
27
  Filter(name="VBI-Red Ti O", min=705.545 * u.nm, max=706.133 * u.nm),
28
- Filter(name="VBI-Red Fe IX", min=789.168 * u.nm, max=789.204 * u.nm),
28
+ Filter(name="VBI-Red Fe XI", min=789.168 * u.nm, max=789.204 * u.nm),
29
29
  ]
30
30
 
31
31
 
@@ -13,7 +13,6 @@ from astropy.io import fits
13
13
  from dkist_data_simulator.dataset import key_function
14
14
  from dkist_data_simulator.spec122 import Spec122Dataset
15
15
  from dkist_header_validator.translator import sanitize_to_spec214_level1
16
- from dkist_header_validator.translator import translate_spec122_to_spec214_l0
17
16
  from dkist_processing_common.codecs.basemodel import basemodel_encoder
18
17
  from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
19
18
  from dkist_processing_common.models.task_name import TaskName
@@ -40,6 +39,7 @@ class VbiS122Headers(Spec122Dataset):
40
39
  time_delta: float = 10.0,
41
40
  instrument: str = "vbi",
42
41
  DKIST009_offset_value: int = 0,
42
+ file_schema: str = "level0_spec214",
43
43
  ):
44
44
  dataset_shape = (
45
45
  num_exp_per_step * num_steps * num_dsps_repeats * num_mosaics_per_dsps_repeat,
@@ -49,6 +49,7 @@ class VbiS122Headers(Spec122Dataset):
49
49
  array_shape=array_shape,
50
50
  time_delta=time_delta,
51
51
  instrument=instrument,
52
+ file_schema=file_schema,
52
53
  )
53
54
  self.num_steps = num_steps
54
55
  self.num_exp_per_step = num_exp_per_step
@@ -197,44 +198,40 @@ class Vbi122SummitObserveFrames(Vbi122ObserveFrames):
197
198
 
198
199
 
199
200
  def generate_214_l0_fits_frame(
200
- s122_header: fits.Header, data: np.ndarray | None = None
201
+ s214l0_header: dict | fits.Header, data: np.ndarray | None = None
201
202
  ) -> fits.HDUList:
202
- """Convert S122 header into 214 L0"""
203
+ """Package a S214 L0 header an optional data into a HDUList"""
203
204
  if data is None:
204
205
  data = np.ones((1, 10, 10))
205
- translated_header = translate_spec122_to_spec214_l0(s122_header)
206
- del translated_header["COMMENT"]
207
- hdu = fits.PrimaryHDU(data=data, header=fits.Header(translated_header))
206
+ hdu = fits.PrimaryHDU(data=data, header=fits.Header(s214l0_header))
208
207
  return fits.HDUList([hdu])
209
208
 
210
209
 
211
210
  def generate_compressed_214_l0_fits_frame(
212
- s122_header: fits.Header, data: np.ndarray | None = None
211
+ s214l0_header: dict | fits.Header, data: np.ndarray | None = None
213
212
  ) -> fits.HDUList:
214
- """Convert S122 header into 214 L0"""
213
+ """Package a S214 L0 header and optional data into a compressed HDUList"""
215
214
  if data is None:
216
215
  data = np.ones((1, 10, 10))
217
- translated_header = translate_spec122_to_spec214_l0(s122_header)
218
- del translated_header["COMMENT"]
219
- hdu = fits.CompImageHDU(data=data, header=fits.Header(translated_header))
216
+ hdu = fits.CompImageHDU(data=data, header=fits.Header(s214l0_header))
220
217
  return fits.HDUList([fits.PrimaryHDU(), hdu])
221
218
 
222
219
 
223
220
  def generate_214_l1_fits_frame(
224
- s122_header: fits.Header, data: np.ndarray | None = None
221
+ s214l0_header: dict | fits.Header, data: np.ndarray | None = None
225
222
  ) -> fits.HDUList:
226
- """Convert S122 header into 214 L1 only.
223
+ """Convert S214 L0 header and optional data into a S214 L1 HDUList.
227
224
 
228
225
  This does NOT include populating all L1 headers, just removing 214 L0 only headers
229
226
 
230
227
  NOTE: The stuff you care about will be in hdulist[1]
231
228
  """
232
- l0_s214_hdul = generate_214_l0_fits_frame(s122_header, data)
229
+ l0_s214_hdul = generate_214_l0_fits_frame(s214l0_header, data)
233
230
  l0_header = l0_s214_hdul[0].header
234
231
  l0_header["DNAXIS"] = 3
235
232
  l0_header["DAAXES"] = 2
236
233
  l0_header["DEAXES"] = 1
237
- l1_header = sanitize_to_spec214_level1(input_headers=l0_header)
234
+ l1_header = sanitize_to_spec214_level1(l0_header)
238
235
  hdu = fits.CompImageHDU(header=l1_header, data=l0_s214_hdul[0].data)
239
236
 
240
237
  return fits.HDUList([fits.PrimaryHDU(), hdu])
@@ -10,6 +10,7 @@ import numpy as np
10
10
  from astropy.io import fits
11
11
  from dkist_header_validator import spec122_validator
12
12
  from dkist_header_validator import spec214_validator
13
+ from dkist_header_validator.translator import translate_spec122_to_spec214_l0
13
14
  from dkist_processing_common.codecs.basemodel import basemodel_encoder
14
15
  from dkist_processing_common.manual import ManualProcessing
15
16
  from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
@@ -80,12 +81,14 @@ def translate_task(summit_processed: bool = False, suffix: str = "FITS"):
80
81
  translated_file_name = Path(self.scratch.workflow_base_path) / os.path.basename(
81
82
  file
82
83
  )
83
- logger.info(f"Translating and compressing {file} -> {translated_file_name}")
84
+ logger.info(
85
+ f"Validating, translating, and compressing {file} -> {translated_file_name}"
86
+ )
84
87
  with fits.open(file, memmap=False) as hdl:
85
88
  data = hdl[0].data
86
- header = spec122_validator.validate_and_translate_to_214_l0(
87
- hdl[0].header, return_type=fits.HDUList
88
- )[0].header
89
+ original_header = fits.Header(hdl[0].header)
90
+ spec122_validator.validate(original_header)
91
+ header = translate_spec122_to_spec214_l0(original_header)
89
92
 
90
93
  if summit_processed:
91
94
  data = data.astype(np.float32)
@@ -54,7 +54,7 @@ def assemble_task_with_tagged_movie_frames(
54
54
  for m, header in enumerate(header_generator):
55
55
  data = np.ones((100, 100))
56
56
  data[: m * 10, :] = 0.0
57
- hdl = generate_214_l1_fits_frame(data=data, s122_header=header)
57
+ hdl = generate_214_l1_fits_frame(data=data, s214l0_header=header)
58
58
  task.write(
59
59
  data=hdl,
60
60
  tags=[
@@ -1,6 +1,5 @@
1
1
  import pytest
2
2
  from astropy.io import fits
3
- from dkist_header_validator import spec122_validator
4
3
 
5
4
  from dkist_processing_vbi.models.fits_access import VbiMetadataKey
6
5
  from dkist_processing_vbi.parsers.vbi_l0_fits_access import VbiL0FitsAccess
@@ -11,13 +10,7 @@ from dkist_processing_vbi.tests.conftest import Vbi122ObserveFrames
11
10
  @pytest.fixture(scope="function")
12
11
  def header():
13
12
  ds = Vbi122ObserveFrames(array_shape=(1, 2, 2), num_steps=1)
14
- header_list = [
15
- spec122_validator.validate_and_translate_to_214_l0(d.header(), return_type=fits.HDUList)[
16
- 0
17
- ].header
18
- for d in ds
19
- ]
20
- return header_list[0]
13
+ return fits.Header(ds.header())
21
14
 
22
15
 
23
16
  def test_metadata_keys_in_access_bases(header):
@@ -50,7 +50,7 @@ def gain_calibration_task(
50
50
  header = next(header_generator)
51
51
  data = (np.ones((1, 10, 10)) * (e + 1)) + s + (s * 10)
52
52
  data[0, 5, 5] = s * 10
53
- hdul = generate_214_l0_fits_frame(s122_header=header, data=data)
53
+ hdul = generate_214_l0_fits_frame(s214l0_header=header, data=data)
54
54
  task.write(
55
55
  data=hdul,
56
56
  tags=[
@@ -54,7 +54,7 @@ def raw_make_movie_frames_task(tmp_path, recipe_run_id, init_vbi_constants_db):
54
54
  value = (s - 1) + (e - 1) * 2 + (m - 1)
55
55
  data = np.ones((10, 10)) * value
56
56
  header = next(header_generator)
57
- hdl = generate_214_l1_fits_frame(data=data, s122_header=header)
57
+ hdl = generate_214_l1_fits_frame(data=data, s214l0_header=header)
58
58
  hdl[1].header["CRVAL1"] = 0.0
59
59
  hdl[1].header["CRVAL2"] = 0.0
60
60
  hdl[1].header["CDELT1"] = 1.0
@@ -113,7 +113,7 @@ def make_movie_frames_task_with_averages(tmp_path_factory):
113
113
  header = next(header_generator)
114
114
  value = s - 1 + m - 1
115
115
  data = np.ones((10, 10)) * value
116
- hdl = generate_214_l1_fits_frame(s122_header=header, data=data)
116
+ hdl = generate_214_l1_fits_frame(s214l0_header=header, data=data)
117
117
  hdl[1].header["CRVAL1"] = 0.0
118
118
  hdl[1].header["CRVAL2"] = 0.0
119
119
  hdl[1].header["CDELT1"] = 1.0
@@ -49,7 +49,7 @@ def parse_inputs_task(tmp_path, recipe_run_id):
49
49
  ds = chain(ds1, ds2, ds3)
50
50
  header_generator = (d.header() for d in ds)
51
51
  for header in header_generator:
52
- hdul = generate_214_l0_fits_frame(s122_header=header)
52
+ hdul = generate_214_l0_fits_frame(s214l0_header=header)
53
53
  task.write(
54
54
  data=hdul, tags=[VbiTag.input(), VbiTag.frame()], encoder=fits_hdulist_encoder
55
55
  )
@@ -82,7 +82,7 @@ def parse_inputs_task_with_only_observe(tmp_path, recipe_run_id, request):
82
82
  )
83
83
  header_generator = (d.header() for d in ds)
84
84
  for header in header_generator:
85
- hdul = generate_214_l0_fits_frame(s122_header=header)
85
+ hdul = generate_214_l0_fits_frame(s214l0_header=header)
86
86
  task.write(
87
87
  data=hdul, tags=[VbiTag.input(), VbiTag.frame()], encoder=fits_hdulist_encoder
88
88
  )
@@ -112,7 +112,7 @@ def parse_inputs_task_with_subrepeats(tmp_path, recipe_run_id):
112
112
  )
113
113
  header_generator = (d.header() for d in ds)
114
114
  for header in header_generator:
115
- hdul = generate_214_l0_fits_frame(s122_header=header)
115
+ hdul = generate_214_l0_fits_frame(s214l0_header=header)
116
116
  task.write(
117
117
  data=hdul, tags=[VbiTag.input(), VbiTag.frame()], encoder=fits_hdulist_encoder
118
118
  )
@@ -143,7 +143,7 @@ def parse_inputs_task_with_out_of_sequence_DSPSNUMS(tmp_path, recipe_run_id):
143
143
  if header["DKIST009"] == 1003:
144
144
  # Skip the 3rd frame (this needs to not be the last one; that would be an aborted last mosaic)
145
145
  continue
146
- hdul = generate_214_l0_fits_frame(s122_header=header)
146
+ hdul = generate_214_l0_fits_frame(s214l0_header=header)
147
147
  task.write(
148
148
  data=hdul, tags=[VbiTag.input(), VbiTag.frame()], encoder=fits_hdulist_encoder
149
149
  )
@@ -188,7 +188,7 @@ def parse_inputs_task_with_aborted_last_mosaic(tmp_path, recipe_run_id, request)
188
188
  ):
189
189
  # Skip the last 2 exposures of the last spatial step and repeat
190
190
  continue
191
- hdul = generate_214_l0_fits_frame(s122_header=header)
191
+ hdul = generate_214_l0_fits_frame(s214l0_header=header)
192
192
  task.write(
193
193
  data=hdul, tags=[VbiTag.input(), VbiTag.frame()], encoder=fits_hdulist_encoder
194
194
  )
@@ -42,7 +42,7 @@ def parse_summit_processed_task(tmp_path, recipe_run_id):
42
42
  ds = chain(ds0, ds1)
43
43
  header_generator = (d.header() for d in ds)
44
44
  for header in header_generator:
45
- hdul = generate_214_l0_fits_frame(s122_header=header)
45
+ hdul = generate_214_l0_fits_frame(s214l0_header=header)
46
46
  task.write(
47
47
  data=hdul, tags=[VbiTag.input(), VbiTag.frame()], encoder=fits_hdulist_encoder
48
48
  )
@@ -72,7 +72,7 @@ def parse_summit_task_with_subrepeats(tmp_path, recipe_run_id):
72
72
  )
73
73
  header_generator = (d.header() for d in ds)
74
74
  for header in header_generator:
75
- hdul = generate_214_l0_fits_frame(s122_header=header)
75
+ hdul = generate_214_l0_fits_frame(s214l0_header=header)
76
76
  task.write(
77
77
  data=hdul, tags=[VbiTag.input(), VbiTag.frame()], encoder=fits_hdulist_encoder
78
78
  )