dkist-processing-trend 0.1.0__py3-none-any.whl
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.
- changelog/.gitempty +0 -0
- dkist_processing_trend/__init__.py +10 -0
- dkist_processing_trend/config.py +11 -0
- dkist_processing_trend/models/__init__.py +1 -0
- dkist_processing_trend/models/constants.py +143 -0
- dkist_processing_trend/models/fit_options.py +15 -0
- dkist_processing_trend/models/fits_access.py +65 -0
- dkist_processing_trend/models/instrument.py +35 -0
- dkist_processing_trend/models/instrument_options.py +35 -0
- dkist_processing_trend/models/parameters.py +134 -0
- dkist_processing_trend/models/tags.py +117 -0
- dkist_processing_trend/models/task_name.py +20 -0
- dkist_processing_trend/parsers/__init__.py +1 -0
- dkist_processing_trend/parsers/arm_id.py +103 -0
- dkist_processing_trend/parsers/instrument_unique_bud.py +40 -0
- dkist_processing_trend/parsers/time.py +27 -0
- dkist_processing_trend/parsers/trend_l0_fits_access.py +123 -0
- dkist_processing_trend/tasks/__init__.py +27 -0
- dkist_processing_trend/tasks/arm_task_factory.py +57 -0
- dkist_processing_trend/tasks/dark.py +56 -0
- dkist_processing_trend/tasks/gain.py +74 -0
- dkist_processing_trend/tasks/initialize_arm_tasks.py +50 -0
- dkist_processing_trend/tasks/parse.py +169 -0
- dkist_processing_trend/tasks/prepare_fit_data_base.py +257 -0
- dkist_processing_trend/tasks/run_pac_fitter.py +392 -0
- dkist_processing_trend/tasks/trend_base.py +97 -0
- dkist_processing_trend/tasks/trend_output_data.py +167 -0
- dkist_processing_trend/tasks/visp/__init__.py +6 -0
- dkist_processing_trend/tasks/visp/visp_dmpd.py +410 -0
- dkist_processing_trend/tasks/visp/visp_extract_beam.py +14 -0
- dkist_processing_trend/tasks/visp/visp_geometric.py +260 -0
- dkist_processing_trend/tasks/visp/visp_prep_fit_data.py +162 -0
- dkist_processing_trend/tasks/visp/visp_process_demod.py +236 -0
- dkist_processing_trend/tasks/write_trend.py +663 -0
- dkist_processing_trend/tests/__init__.py +1 -0
- dkist_processing_trend/tests/conftest.py +718 -0
- dkist_processing_trend/tests/local_trial_workflows/__init__.py +0 -0
- dkist_processing_trend/tests/local_trial_workflows/l0_to_trend_visp_polcal.py +294 -0
- dkist_processing_trend/tests/local_trial_workflows/local_trial_helpers.py +488 -0
- dkist_processing_trend/tests/test_arm_task_factory.py +82 -0
- dkist_processing_trend/tests/test_base_tasks.py +86 -0
- dkist_processing_trend/tests/test_constants.py +120 -0
- dkist_processing_trend/tests/test_dark.py +97 -0
- dkist_processing_trend/tests/test_gain.py +135 -0
- dkist_processing_trend/tests/test_parameters.py +149 -0
- dkist_processing_trend/tests/test_parse.py +276 -0
- dkist_processing_trend/tests/test_prep_fit_data_base.py +233 -0
- dkist_processing_trend/tests/test_publish_catalog_messages.py +45 -0
- dkist_processing_trend/tests/test_run_pac_fitter.py +371 -0
- dkist_processing_trend/tests/test_stems.py +75 -0
- dkist_processing_trend/tests/test_transfer_output_data.py +76 -0
- dkist_processing_trend/tests/test_trend_fits_access.py +173 -0
- dkist_processing_trend/tests/test_visp.py +874 -0
- dkist_processing_trend/tests/test_workflows.py +10 -0
- dkist_processing_trend/tests/test_write_trend.py +460 -0
- dkist_processing_trend/workflows/__init__.py +3 -0
- dkist_processing_trend/workflows/visp.py +58 -0
- dkist_processing_trend-0.1.0.dist-info/METADATA +549 -0
- dkist_processing_trend-0.1.0.dist-info/RECORD +66 -0
- dkist_processing_trend-0.1.0.dist-info/WHEEL +5 -0
- dkist_processing_trend-0.1.0.dist-info/top_level.txt +3 -0
- docs/conf.py +57 -0
- docs/index.rst +10 -0
- docs/l0_to_trend_visp_polcal.rst +4 -0
- docs/landing_page.rst +11 -0
- docs/requirements_table.rst +8 -0
|
File without changes
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import sys
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
from dkist_processing_common.manual import ManualProcessing
|
|
6
|
+
from dkist_service_configuration.logging import logger
|
|
7
|
+
|
|
8
|
+
from dkist_processing_trend.models.tags import TrendTag
|
|
9
|
+
from dkist_processing_trend.tasks import DarkCalibration
|
|
10
|
+
from dkist_processing_trend.tasks import GainCalibration
|
|
11
|
+
from dkist_processing_trend.tasks import ParseL0TrendInputData
|
|
12
|
+
from dkist_processing_trend.tasks import RunPacFitter
|
|
13
|
+
from dkist_processing_trend.tasks.visp import VispDemodulatedPolcalData
|
|
14
|
+
from dkist_processing_trend.tasks.visp import VispGeometricCalibration
|
|
15
|
+
from dkist_processing_trend.tasks.visp import VispPrepareFitData
|
|
16
|
+
from dkist_processing_trend.tasks.visp import VispProcessDemodulationMatrices
|
|
17
|
+
from dkist_processing_trend.tasks.write_trend import WriteTrendOutputs
|
|
18
|
+
from dkist_processing_trend.tests.conftest import TrendInputDatasetParameterValues
|
|
19
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import get_arm_id_list
|
|
20
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
21
|
+
input_dataset_parameter_task,
|
|
22
|
+
)
|
|
23
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
24
|
+
load_dark_cal_task,
|
|
25
|
+
)
|
|
26
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import load_dmpd_task
|
|
27
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
28
|
+
load_gain_cal_task,
|
|
29
|
+
)
|
|
30
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import load_pac_fit_task
|
|
31
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import load_parsing_task
|
|
32
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
33
|
+
load_prepped_cal_task,
|
|
34
|
+
)
|
|
35
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
36
|
+
load_processed_demod_cal_task,
|
|
37
|
+
)
|
|
38
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
39
|
+
load_visp_geo_cal_task,
|
|
40
|
+
)
|
|
41
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
42
|
+
save_dark_cal_task,
|
|
43
|
+
)
|
|
44
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import save_dmpd_task
|
|
45
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
46
|
+
save_gain_cal_task,
|
|
47
|
+
)
|
|
48
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import save_pac_fit_task
|
|
49
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import save_parsing_task
|
|
50
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
51
|
+
save_prepped_cal_task,
|
|
52
|
+
)
|
|
53
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
54
|
+
save_processed_demod_cal_task,
|
|
55
|
+
)
|
|
56
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import (
|
|
57
|
+
save_visp_geo_cal_task,
|
|
58
|
+
)
|
|
59
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import tag_inputs_task
|
|
60
|
+
from dkist_processing_trend.tests.local_trial_workflows.local_trial_helpers import translate_task
|
|
61
|
+
from dkist_processing_trend.workflows.arm_class_factory import arm_class_factory
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def main(
|
|
65
|
+
scratch_path: str,
|
|
66
|
+
suffix: str = "FITS",
|
|
67
|
+
recipe_run_id: int = 2,
|
|
68
|
+
skip_translation: bool = False,
|
|
69
|
+
only_translate: bool = False,
|
|
70
|
+
load_input_parsing: bool = False,
|
|
71
|
+
load_dark: bool = False,
|
|
72
|
+
load_gain: bool = False,
|
|
73
|
+
load_geometric: bool = False,
|
|
74
|
+
load_prepped: bool = False,
|
|
75
|
+
load_pac_fit: bool = False,
|
|
76
|
+
load_processed_demod: bool = False,
|
|
77
|
+
load_dmpd: bool = False,
|
|
78
|
+
):
|
|
79
|
+
with ManualProcessing(
|
|
80
|
+
workflow_path=Path(scratch_path),
|
|
81
|
+
recipe_run_id=recipe_run_id,
|
|
82
|
+
testing=True,
|
|
83
|
+
workflow_name="visp-l0-to-trend-polcal",
|
|
84
|
+
workflow_version="GROGU",
|
|
85
|
+
) as manual_processing_run:
|
|
86
|
+
if not skip_translation:
|
|
87
|
+
manual_processing_run.run_task(task=translate_task(instrument="visp", suffix=suffix))
|
|
88
|
+
if only_translate:
|
|
89
|
+
return
|
|
90
|
+
|
|
91
|
+
manual_processing_run.run_task(task=tag_inputs_task(suffix))
|
|
92
|
+
|
|
93
|
+
parameter_values = TrendInputDatasetParameterValues(
|
|
94
|
+
trend_fit_options_list=[
|
|
95
|
+
{
|
|
96
|
+
"name": "standard",
|
|
97
|
+
"remove_I_trend": True,
|
|
98
|
+
"fit_mode_name": "use_M12_I_sys_per_step",
|
|
99
|
+
"init_set_name": "OCCal_VIS",
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
trend_instrument_processing_options_visp=[
|
|
103
|
+
{
|
|
104
|
+
"name": "full_spatial",
|
|
105
|
+
"num_spatial_px": 256,
|
|
106
|
+
"num_spectral_px": 1,
|
|
107
|
+
"spatial_smoothing_fit_order": 17,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"name": "single_point",
|
|
111
|
+
"num_spatial_px": 1,
|
|
112
|
+
"num_spectral_px": 1,
|
|
113
|
+
"spatial_smoothing_fit_order": 1,
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
)
|
|
117
|
+
manual_processing_run.run_task(task=input_dataset_parameter_task(parameter_values))
|
|
118
|
+
|
|
119
|
+
if load_input_parsing:
|
|
120
|
+
manual_processing_run.run_task(task=load_parsing_task(save_file="input_parsing.asdf"))
|
|
121
|
+
else:
|
|
122
|
+
manual_processing_run.run_task(task=ParseL0TrendInputData)
|
|
123
|
+
manual_processing_run.run_task(
|
|
124
|
+
task=save_parsing_task(
|
|
125
|
+
tag_list=[TrendTag.input()],
|
|
126
|
+
save_file="input_parsing.asdf",
|
|
127
|
+
)
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
arm_id_list = get_arm_id_list(
|
|
131
|
+
workflow_base_path=Path(scratch_path) / str(recipe_run_id),
|
|
132
|
+
parsing_file_name="input_parsing.asdf",
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
logger.info(f"Found {arm_id_list = }")
|
|
136
|
+
|
|
137
|
+
for arm_id in arm_id_list:
|
|
138
|
+
logger.info(f"Working on {arm_id = }")
|
|
139
|
+
dark_task = arm_class_factory(DarkCalibration, arm_id=arm_id)
|
|
140
|
+
gain_task = arm_class_factory(GainCalibration, arm_id=arm_id)
|
|
141
|
+
geo_task = arm_class_factory(VispGeometricCalibration, arm_id=arm_id)
|
|
142
|
+
prep_data_task = arm_class_factory(VispPrepareFitData, arm_id=arm_id)
|
|
143
|
+
run_fit_task = arm_class_factory(RunPacFitter, arm_id=arm_id)
|
|
144
|
+
process_demod_task = arm_class_factory(VispProcessDemodulationMatrices, arm_id=arm_id)
|
|
145
|
+
dmpd_task = arm_class_factory(VispDemodulatedPolcalData, arm_id=arm_id)
|
|
146
|
+
|
|
147
|
+
if load_dark:
|
|
148
|
+
manual_processing_run.run_task(load_dark_cal_task(arm_id=arm_id))
|
|
149
|
+
else:
|
|
150
|
+
manual_processing_run.run_task(dark_task)
|
|
151
|
+
manual_processing_run.run_task(save_dark_cal_task(arm_id=arm_id))
|
|
152
|
+
|
|
153
|
+
if load_gain:
|
|
154
|
+
manual_processing_run.run_task(load_gain_cal_task(arm_id=arm_id))
|
|
155
|
+
else:
|
|
156
|
+
manual_processing_run.run_task(gain_task)
|
|
157
|
+
manual_processing_run.run_task(save_gain_cal_task(arm_id=arm_id))
|
|
158
|
+
|
|
159
|
+
if load_geometric:
|
|
160
|
+
manual_processing_run.run_task(load_visp_geo_cal_task(arm_id=arm_id))
|
|
161
|
+
else:
|
|
162
|
+
manual_processing_run.run_task(geo_task)
|
|
163
|
+
manual_processing_run.run_task(save_visp_geo_cal_task(arm_id=arm_id))
|
|
164
|
+
|
|
165
|
+
if load_prepped:
|
|
166
|
+
manual_processing_run.run_task(load_prepped_cal_task(arm_id=arm_id))
|
|
167
|
+
else:
|
|
168
|
+
manual_processing_run.run_task(prep_data_task)
|
|
169
|
+
manual_processing_run.run_task(save_prepped_cal_task(arm_id=arm_id))
|
|
170
|
+
|
|
171
|
+
if load_pac_fit:
|
|
172
|
+
manual_processing_run.run_task(load_pac_fit_task(arm_id=arm_id))
|
|
173
|
+
else:
|
|
174
|
+
manual_processing_run.run_task(run_fit_task)
|
|
175
|
+
manual_processing_run.run_task(save_pac_fit_task(arm_id=arm_id))
|
|
176
|
+
|
|
177
|
+
if load_processed_demod:
|
|
178
|
+
manual_processing_run.run_task(load_processed_demod_cal_task(arm_id=arm_id))
|
|
179
|
+
else:
|
|
180
|
+
manual_processing_run.run_task(process_demod_task)
|
|
181
|
+
manual_processing_run.run_task(save_processed_demod_cal_task(arm_id=arm_id))
|
|
182
|
+
|
|
183
|
+
if load_dmpd:
|
|
184
|
+
manual_processing_run.run_task(load_dmpd_task(arm_id=arm_id))
|
|
185
|
+
else:
|
|
186
|
+
manual_processing_run.run_task(dmpd_task)
|
|
187
|
+
manual_processing_run.run_task(save_dmpd_task(arm_id=arm_id))
|
|
188
|
+
|
|
189
|
+
manual_processing_run.run_task(WriteTrendOutputs)
|
|
190
|
+
if any(
|
|
191
|
+
[
|
|
192
|
+
load_dark,
|
|
193
|
+
load_gain,
|
|
194
|
+
load_geometric,
|
|
195
|
+
load_prepped,
|
|
196
|
+
load_pac_fit,
|
|
197
|
+
load_processed_demod,
|
|
198
|
+
load_dmpd,
|
|
199
|
+
]
|
|
200
|
+
):
|
|
201
|
+
logger.info("NOT counting provenance records because some tasks were skipped")
|
|
202
|
+
else:
|
|
203
|
+
manual_processing_run.count_provenance()
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
if __name__ == "__main__":
|
|
207
|
+
parser = argparse.ArgumentParser(
|
|
208
|
+
description="Run an end-to-end test of the DLNirsp DC Science pipeline"
|
|
209
|
+
)
|
|
210
|
+
parser.add_argument("scratch_path", help="Location to use as the DC 'scratch' disk")
|
|
211
|
+
parser.add_argument(
|
|
212
|
+
"-i",
|
|
213
|
+
"--run-id",
|
|
214
|
+
help="Which subdir to use. This will become the recipe run id",
|
|
215
|
+
type=int,
|
|
216
|
+
default=4,
|
|
217
|
+
)
|
|
218
|
+
parser.add_argument("--suffix", help="File suffix to treat as INPUT frames", default="FITS")
|
|
219
|
+
parser.add_argument(
|
|
220
|
+
"-T",
|
|
221
|
+
"--skip-translation",
|
|
222
|
+
help="Skip the translation of raw 122 l0 frames to 214 l0",
|
|
223
|
+
action="store_true",
|
|
224
|
+
)
|
|
225
|
+
parser.add_argument(
|
|
226
|
+
"-t", "--only-translate", help="Do ONLY the translation step", action="store_true"
|
|
227
|
+
)
|
|
228
|
+
parser.add_argument(
|
|
229
|
+
"-I",
|
|
230
|
+
"--load-input-parsing",
|
|
231
|
+
help="Load tags and constants on input files",
|
|
232
|
+
action="store_true",
|
|
233
|
+
)
|
|
234
|
+
parser.add_argument(
|
|
235
|
+
"-D",
|
|
236
|
+
"--load-dark",
|
|
237
|
+
help="Load dark calibration from previously saved run",
|
|
238
|
+
action="store_true",
|
|
239
|
+
)
|
|
240
|
+
parser.add_argument(
|
|
241
|
+
"-G",
|
|
242
|
+
"--load-gain",
|
|
243
|
+
help="Load gain calibration from previously saved run",
|
|
244
|
+
action="store_true",
|
|
245
|
+
)
|
|
246
|
+
parser.add_argument(
|
|
247
|
+
"-C",
|
|
248
|
+
"--load-geometric",
|
|
249
|
+
help="Load geometric calibration from previously saved run",
|
|
250
|
+
action="store_true",
|
|
251
|
+
)
|
|
252
|
+
parser.add_argument(
|
|
253
|
+
"-P",
|
|
254
|
+
"--load-prepped",
|
|
255
|
+
help="Load prepped fit data from previously saved run",
|
|
256
|
+
action="store_true",
|
|
257
|
+
)
|
|
258
|
+
parser.add_argument(
|
|
259
|
+
"-F",
|
|
260
|
+
"--load-pac-fit",
|
|
261
|
+
help="Load pac fit data from previously saved run",
|
|
262
|
+
action="store_true",
|
|
263
|
+
)
|
|
264
|
+
parser.add_argument(
|
|
265
|
+
"-E",
|
|
266
|
+
"--load-processed-demod",
|
|
267
|
+
help="Load processed demod data from previously saved run",
|
|
268
|
+
action="store_true",
|
|
269
|
+
)
|
|
270
|
+
parser.add_argument(
|
|
271
|
+
"-M",
|
|
272
|
+
"--load-dmpd",
|
|
273
|
+
help="Load DMPD data from previously saved run",
|
|
274
|
+
action="store_true",
|
|
275
|
+
)
|
|
276
|
+
|
|
277
|
+
args = parser.parse_args()
|
|
278
|
+
sys.exit(
|
|
279
|
+
main(
|
|
280
|
+
scratch_path=args.scratch_path,
|
|
281
|
+
suffix=args.suffix,
|
|
282
|
+
recipe_run_id=args.run_id,
|
|
283
|
+
skip_translation=args.skip_translation,
|
|
284
|
+
only_translate=args.only_translate,
|
|
285
|
+
load_input_parsing=args.load_input_parsing,
|
|
286
|
+
load_dark=args.load_dark,
|
|
287
|
+
load_gain=args.load_gain,
|
|
288
|
+
load_geometric=args.load_geometric,
|
|
289
|
+
load_prepped=args.load_prepped,
|
|
290
|
+
load_pac_fit=args.load_pac_fit,
|
|
291
|
+
load_processed_demod=args.load_processed_demod,
|
|
292
|
+
load_dmpd=args.load_dmpd,
|
|
293
|
+
)
|
|
294
|
+
)
|