dkist-processing-vbi 1.21.1__py3-none-any.whl → 1.25.2__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.
Files changed (45) hide show
  1. dkist_processing_vbi/__init__.py +1 -0
  2. dkist_processing_vbi/config.py +1 -0
  3. dkist_processing_vbi/models/constants.py +1 -0
  4. dkist_processing_vbi/models/filter.py +1 -0
  5. dkist_processing_vbi/models/parameters.py +1 -0
  6. dkist_processing_vbi/models/tags.py +1 -0
  7. dkist_processing_vbi/parsers/mosaic_repeats.py +1 -0
  8. dkist_processing_vbi/parsers/spatial_step_pattern.py +2 -1
  9. dkist_processing_vbi/parsers/vbi_l0_fits_access.py +1 -0
  10. dkist_processing_vbi/parsers/vbi_l1_fits_access.py +1 -0
  11. dkist_processing_vbi/tasks/__init__.py +1 -0
  12. dkist_processing_vbi/tasks/assemble_movie.py +5 -3
  13. dkist_processing_vbi/tasks/dark.py +5 -6
  14. dkist_processing_vbi/tasks/gain.py +5 -4
  15. dkist_processing_vbi/tasks/make_movie_frames.py +5 -6
  16. dkist_processing_vbi/tasks/parse.py +3 -2
  17. dkist_processing_vbi/tasks/process_summit_processed.py +2 -1
  18. dkist_processing_vbi/tasks/quality_metrics.py +3 -2
  19. dkist_processing_vbi/tasks/science.py +5 -4
  20. dkist_processing_vbi/tasks/vbi_base.py +2 -2
  21. dkist_processing_vbi/tasks/write_l1.py +6 -0
  22. dkist_processing_vbi/tests/conftest.py +24 -7
  23. dkist_processing_vbi/tests/local_trial_workflows/l0_to_l1.py +12 -25
  24. dkist_processing_vbi/tests/test_assemble_movie.py +6 -4
  25. dkist_processing_vbi/tests/test_dark.py +3 -4
  26. dkist_processing_vbi/tests/test_gain.py +4 -5
  27. dkist_processing_vbi/tests/test_make_movie_frames.py +4 -5
  28. dkist_processing_vbi/tests/test_parse_l0.py +19 -14
  29. dkist_processing_vbi/tests/test_parse_summit.py +8 -6
  30. dkist_processing_vbi/tests/test_process_summit.py +6 -7
  31. dkist_processing_vbi/tests/test_science.py +4 -5
  32. dkist_processing_vbi/tests/test_vbi_constants.py +1 -2
  33. dkist_processing_vbi/tests/test_workflows.py +1 -0
  34. dkist_processing_vbi/tests/test_write_l1.py +5 -4
  35. dkist_processing_vbi/workflows/__init__.py +1 -0
  36. dkist_processing_vbi/workflows/l0_processing.py +4 -1
  37. dkist_processing_vbi/workflows/summit_data_processing.py +2 -1
  38. dkist_processing_vbi/workflows/trial_workflows.py +1 -0
  39. dkist_processing_vbi-1.25.2.dist-info/METADATA +536 -0
  40. dkist_processing_vbi-1.25.2.dist-info/RECORD +64 -0
  41. {dkist_processing_vbi-1.21.1.dist-info → dkist_processing_vbi-1.25.2.dist-info}/WHEEL +1 -1
  42. docs/conf.py +1 -0
  43. dkist_processing_vbi-1.21.1.dist-info/METADATA +0 -446
  44. dkist_processing_vbi-1.21.1.dist-info/RECORD +0 -64
  45. {dkist_processing_vbi-1.21.1.dist-info → dkist_processing_vbi-1.25.2.dist-info}/top_level.txt +0 -0
@@ -4,15 +4,14 @@ import pytest
4
4
  from dkist_processing_common._util.scratch import WorkflowFileSystem
5
5
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
6
6
  from dkist_processing_common.models.constants import BudName
7
- from dkist_processing_common.tests.conftest import FakeGQLClient
8
7
 
9
8
  from dkist_processing_vbi.models.constants import VbiBudName
10
9
  from dkist_processing_vbi.models.tags import VbiTag
11
10
  from dkist_processing_vbi.tasks.parse import ParseL0VbiInputData
12
- from dkist_processing_vbi.tests.conftest import generate_214_l0_fits_frame
13
11
  from dkist_processing_vbi.tests.conftest import Vbi122DarkFrames
14
12
  from dkist_processing_vbi.tests.conftest import Vbi122GainFrames
15
13
  from dkist_processing_vbi.tests.conftest import Vbi122ObserveFrames
14
+ from dkist_processing_vbi.tests.conftest import generate_214_l0_fits_frame
16
15
 
17
16
 
18
17
  @pytest.fixture(scope="function")
@@ -181,14 +180,14 @@ def parse_inputs_task_with_aborted_last_mosaic(tmp_path, recipe_run_id):
181
180
  task._purge()
182
181
 
183
182
 
184
- def test_parse_l0_input_data_spatial_pos(parse_inputs_task, mocker):
183
+ def test_parse_l0_input_data_spatial_pos(parse_inputs_task, mocker, fake_gql_client):
185
184
  """
186
185
  Given: a set of raw inputs of multiple task types and a ParseL0VbiInputData task
187
186
  When: the task is run
188
187
  Then: the input frames are correctly tagged by spatial position
189
188
  """
190
189
  mocker.patch(
191
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
190
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
192
191
  )
193
192
  parse_inputs_task()
194
193
 
@@ -208,14 +207,14 @@ def test_parse_l0_input_data_spatial_pos(parse_inputs_task, mocker):
208
207
  assert filepath.exists()
209
208
 
210
209
 
211
- def test_parse_l0_input_constants(parse_inputs_task, mocker):
210
+ def test_parse_l0_input_constants(parse_inputs_task, mocker, fake_gql_client):
212
211
  """
213
212
  Given: a set of raw inputs of multiple task types and a ParseL0VbiInputData task
214
213
  When: the task is run
215
214
  Then: pipeline constants are correctly updated from the input headers
216
215
  """
217
216
  mocker.patch(
218
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
217
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
219
218
  )
220
219
  parse_inputs_task()
221
220
 
@@ -231,14 +230,14 @@ def test_parse_l0_input_constants(parse_inputs_task, mocker):
231
230
  assert BudName.obs_ip_start_time.value in parse_inputs_task.constants._db_dict
232
231
 
233
232
 
234
- def test_parse_l0_input_frames_found(parse_inputs_task, mocker):
233
+ def test_parse_l0_input_frames_found(parse_inputs_task, mocker, fake_gql_client):
235
234
  """
236
235
  Given: a set of raw inputs of multiple task types and a ParseL0VbiInputData task
237
236
  When: the task is run
238
237
  Then: the frames from each task type are correctly identified and tagged
239
238
  """
240
239
  mocker.patch(
241
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
240
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
242
241
  )
243
242
  parse_inputs_task()
244
243
  assert (
@@ -258,7 +257,9 @@ def test_parse_l0_input_frames_found(parse_inputs_task, mocker):
258
257
  )
259
258
 
260
259
 
261
- def test_parse_l0_input_with_only_observe(parse_inputs_task_with_only_observe, mocker):
260
+ def test_parse_l0_input_with_only_observe(
261
+ parse_inputs_task_with_only_observe, mocker, fake_gql_client
262
+ ):
262
263
  """
263
264
  Given: a set of raw inputs of a single task type and a ParseL0VbiInputData task
264
265
  When: the task is run
@@ -266,7 +267,7 @@ def test_parse_l0_input_with_only_observe(parse_inputs_task_with_only_observe, m
266
267
  """
267
268
  task, camera_str = parse_inputs_task_with_only_observe
268
269
  mocker.patch(
269
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
270
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
270
271
  )
271
272
  task()
272
273
  if camera_str == "red":
@@ -293,14 +294,16 @@ def test_parse_l0_input_with_only_observe(parse_inputs_task_with_only_observe, m
293
294
  assert filepath.exists()
294
295
 
295
296
 
296
- def test_parse_l0_aborted_last_mosaic(parse_inputs_task_with_aborted_last_mosaic, mocker):
297
+ def test_parse_l0_aborted_last_mosaic(
298
+ parse_inputs_task_with_aborted_last_mosaic, mocker, fake_gql_client
299
+ ):
297
300
  """
298
301
  Given: a set of raw inputs representing a dataset with an aborted last mosaic
299
302
  When: the task is run
300
303
  Then: pipeline constants are correctly updated from the input headers
301
304
  """
302
305
  mocker.patch(
303
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
306
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
304
307
  )
305
308
  task, expected_num_mosaic_repeats = parse_inputs_task_with_aborted_last_mosaic
306
309
  task()
@@ -310,14 +313,16 @@ def test_parse_l0_aborted_last_mosaic(parse_inputs_task_with_aborted_last_mosaic
310
313
  )
311
314
 
312
315
 
313
- def test_parse_l0_correctly_tagged_mosaic_subrepeats(parse_inputs_task_with_subrepeats, mocker):
316
+ def test_parse_l0_correctly_tagged_mosaic_subrepeats(
317
+ parse_inputs_task_with_subrepeats, mocker, fake_gql_client
318
+ ):
314
319
  """
315
320
  Given: A set of observe frames taken with subrepeats (i.e., multiple mosaics per DSPS repeat)
316
321
  When: the parse task is run
317
322
  Then: pipeline constants are correctly updated and the correct
318
323
  """
319
324
  mocker.patch(
320
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
325
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
321
326
  )
322
327
  task = parse_inputs_task_with_subrepeats
323
328
  task()
@@ -1,19 +1,19 @@
1
1
  """
2
2
  This might be a totally redundant test. Leave it in for now.
3
3
  """
4
+
4
5
  from itertools import chain
5
6
 
6
7
  import pytest
7
8
  from dkist_processing_common._util.scratch import WorkflowFileSystem
8
9
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
9
- from dkist_processing_common.tests.conftest import FakeGQLClient
10
10
 
11
11
  from dkist_processing_vbi.models.constants import VbiBudName
12
12
  from dkist_processing_vbi.models.tags import VbiTag
13
13
  from dkist_processing_vbi.tasks.parse import ParseL0VbiInputData
14
- from dkist_processing_vbi.tests.conftest import generate_214_l0_fits_frame
15
14
  from dkist_processing_vbi.tests.conftest import Vbi122DarkFrames
16
15
  from dkist_processing_vbi.tests.conftest import Vbi122SummitObserveFrames
16
+ from dkist_processing_vbi.tests.conftest import generate_214_l0_fits_frame
17
17
 
18
18
 
19
19
  @pytest.fixture(scope="function")
@@ -80,14 +80,14 @@ def parse_summit_task_with_subrepeats(tmp_path, recipe_run_id):
80
80
  task._purge()
81
81
 
82
82
 
83
- def test_parse_summit_proccessed_data(parse_summit_processed_task, mocker):
83
+ def test_parse_summit_proccessed_data(parse_summit_processed_task, mocker, fake_gql_client):
84
84
  """
85
85
  Given: a set of raw inputs of summit-processed data and a ParseL0VbiInputData task
86
86
  When: the task is run
87
87
  Then: the observe frames are correctly identified and tagged
88
88
  """
89
89
  mocker.patch(
90
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
90
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
91
91
  )
92
92
  parse_summit_processed_task()
93
93
 
@@ -109,14 +109,16 @@ def test_parse_summit_proccessed_data(parse_summit_processed_task, mocker):
109
109
  assert filepath.exists()
110
110
 
111
111
 
112
- def test_parse_summit_correctly_tagged_mosaic_subrepeats(parse_summit_task_with_subrepeats, mocker):
112
+ def test_parse_summit_correctly_tagged_mosaic_subrepeats(
113
+ parse_summit_task_with_subrepeats, mocker, fake_gql_client
114
+ ):
113
115
  """
114
116
  Given: A set of observe frames taken with subrepeats (i.e., multiple mosaics per DSPS repeat)
115
117
  When: the parse task is run
116
118
  Then: pipeline constants are correctly updated and the correct
117
119
  """
118
120
  mocker.patch(
119
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
121
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
120
122
  )
121
123
  task = parse_summit_task_with_subrepeats
122
124
  task()
@@ -7,16 +7,15 @@ from dkist_processing_common._util.scratch import WorkflowFileSystem
7
7
  from dkist_processing_common.codecs.fits import fits_access_decoder
8
8
  from dkist_processing_common.codecs.fits import fits_array_encoder
9
9
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
10
- from dkist_processing_common.tests.conftest import FakeGQLClient
11
10
 
12
11
  from dkist_processing_vbi.models.tags import VbiTag
13
12
  from dkist_processing_vbi.parsers.vbi_l0_fits_access import VbiL0FitsAccess
14
13
  from dkist_processing_vbi.tasks.process_summit_processed import GenerateL1SummitData
15
- from dkist_processing_vbi.tests.conftest import ensure_all_inputs_used
16
- from dkist_processing_vbi.tests.conftest import generate_compressed_214_l0_fits_frame
17
14
  from dkist_processing_vbi.tests.conftest import Vbi122DarkFrames
18
15
  from dkist_processing_vbi.tests.conftest import Vbi122SummitObserveFrames
19
16
  from dkist_processing_vbi.tests.conftest import VbiConstantsDb
17
+ from dkist_processing_vbi.tests.conftest import ensure_all_inputs_used
18
+ from dkist_processing_vbi.tests.conftest import generate_compressed_214_l0_fits_frame
20
19
 
21
20
  RNG = np.random.default_rng()
22
21
 
@@ -133,14 +132,14 @@ def process_summit_processed_with_aborted_last_mosaic(
133
132
  task._purge()
134
133
 
135
134
 
136
- def test_process_summit_data(process_summit_processed, mocker):
135
+ def test_process_summit_data(process_summit_processed, mocker, fake_gql_client):
137
136
  """
138
137
  Given: a set of parsed input frames of summit-processed data and a GenerateL1SummitData task
139
138
  When: the task is run
140
139
  Then: the correct data-dependent L1 headers are added, an output tag is applied to each frame, and the input tag is removed
141
140
  """
142
141
  mocker.patch(
143
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
142
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
144
143
  )
145
144
  task, expected_data, num_exp_per_step = process_summit_processed
146
145
  task()
@@ -172,7 +171,7 @@ def test_process_summit_data(process_summit_processed, mocker):
172
171
 
173
172
 
174
173
  def test_process_summit_data_with_aborted_last_mosaic(
175
- process_summit_processed_with_aborted_last_mosaic, mocker
174
+ process_summit_processed_with_aborted_last_mosaic, mocker, fake_gql_client
176
175
  ):
177
176
  """
178
177
  Given: a set of parsed input frames of summit-processed data that contain an aborted mosaic
@@ -180,7 +179,7 @@ def test_process_summit_data_with_aborted_last_mosaic(
180
179
  Then: only frames from complete mosaics are pass through as "calibrated"
181
180
  """
182
181
  mocker.patch(
183
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
182
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
184
183
  )
185
184
  (
186
185
  task,
@@ -8,15 +8,14 @@ from dkist_processing_common.codecs.fits import fits_access_decoder
8
8
  from dkist_processing_common.codecs.fits import fits_array_encoder
9
9
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
10
10
  from dkist_processing_common.models.tags import Tag
11
- from dkist_processing_common.tests.conftest import FakeGQLClient
12
11
 
13
12
  from dkist_processing_vbi.models.tags import VbiTag
14
13
  from dkist_processing_vbi.parsers.vbi_l0_fits_access import VbiL0FitsAccess
15
14
  from dkist_processing_vbi.tasks.science import ScienceCalibration
16
- from dkist_processing_vbi.tests.conftest import ensure_all_inputs_used
17
- from dkist_processing_vbi.tests.conftest import generate_214_l0_fits_frame
18
15
  from dkist_processing_vbi.tests.conftest import Vbi122ObserveFrames
19
16
  from dkist_processing_vbi.tests.conftest import VbiConstantsDb
17
+ from dkist_processing_vbi.tests.conftest import ensure_all_inputs_used
18
+ from dkist_processing_vbi.tests.conftest import generate_214_l0_fits_frame
20
19
 
21
20
 
22
21
  @pytest.fixture(scope="function")
@@ -111,14 +110,14 @@ def science_calibration_task(tmp_path, recipe_run_id, init_vbi_constants_db, abo
111
110
  "abort_mosaic",
112
111
  [pytest.param(False, id="Full set"), pytest.param(True, id="Aborted last mosaic")],
113
112
  )
114
- def test_science_calibration(science_calibration_task, mocker):
113
+ def test_science_calibration(science_calibration_task, mocker, fake_gql_client):
115
114
  """
116
115
  Given: a set of parsed input observe frames, dark and gain calibrations, and a ScienceCalibration task
117
116
  When: the task is run
118
117
  Then: the science frames are processed, no exposures are averaged, and the array values are correct
119
118
  """
120
119
  mocker.patch(
121
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
120
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
122
121
  )
123
122
  task, num_steps, num_exp_per_step, expected_num_mosaic_repeats = science_calibration_task
124
123
  task()
@@ -18,8 +18,7 @@ def expected_constant_dict() -> dict:
18
18
  @pytest.fixture(scope="function")
19
19
  def vbi_science_task_with_constants(expected_constant_dict, recipe_run_id):
20
20
  class Task(VbiTaskBase):
21
- def run(self):
22
- ...
21
+ def run(self): ...
23
22
 
24
23
  task = Task(
25
24
  recipe_run_id=recipe_run_id,
@@ -1,4 +1,5 @@
1
1
  """Test integrity of workflows."""
2
+
2
3
  from dkist_processing_core.build_utils import validate_workflows
3
4
 
4
5
  from dkist_processing_vbi import workflows
@@ -10,7 +10,6 @@ from dkist_header_validator import spec122_validator
10
10
  from dkist_header_validator import spec214_validator
11
11
  from dkist_processing_common.codecs.fits import fits_array_encoder
12
12
  from dkist_processing_common.models.tags import Tag
13
- from dkist_processing_common.tests.conftest import FakeGQLClient
14
13
  from dkist_service_configuration.logging import logger
15
14
 
16
15
  from dkist_processing_vbi.models.constants import VbiConstants
@@ -105,14 +104,16 @@ def write_l1_task(calibrated_header, num_mosaic_repeats, camera_str: Literal["re
105
104
  pytest.param(False, "red", id="Non-Mosaic"),
106
105
  ],
107
106
  )
108
- def test_write_l1_frame(write_l1_task, num_mosaic_repeats, is_mosaic, camera_str, mocker):
107
+ def test_write_l1_frame(
108
+ write_l1_task, num_mosaic_repeats, is_mosaic, camera_str, mocker, fake_gql_client
109
+ ):
109
110
  """
110
111
  :Given: a write L1 task
111
112
  :When: running the task
112
113
  :Then: no errors are raised
113
114
  """
114
115
  mocker.patch(
115
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
116
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=fake_gql_client
116
117
  )
117
118
  task = write_l1_task
118
119
  task()
@@ -199,7 +200,7 @@ def test_write_l1_frame(write_l1_task, num_mosaic_repeats, is_mosaic, camera_str
199
200
  assert header["EXPRID01"] == "EXPERID1"
200
201
  assert header["EXPRID02"] == "EXPERID2"
201
202
  assert header["EXPRID03"] == "EXPERID3"
202
- assert header["WAVEBAND"] == "H alpha (656.28 nm)"
203
+ assert header["WAVEBAND"] == "VBI-Red H-alpha"
203
204
  assert header["SPECLN01"] == "H alpha (656.28 nm)"
204
205
  with pytest.raises(KeyError):
205
206
  header["SPECLN02"]
@@ -1,2 +1,3 @@
1
1
  """Workflow package."""
2
+
2
3
  from dkist_processing_vbi.config import dkist_processing_vbi_configurations
@@ -10,6 +10,7 @@ VBI: https://nso.edu/telescopes/dkist/instruments/vbi/
10
10
  This workflow does *not* include the speckle reconstruction algorithms used in summit-calibrated data.
11
11
  Instead, darks and gains are generated by averaging the raw darks and gains, and are then subtracted from the science frames.
12
12
  """
13
+
13
14
  from dkist_processing_common.tasks import AssembleQualityData
14
15
  from dkist_processing_common.tasks import PublishCatalogAndQualityMessages
15
16
  from dkist_processing_common.tasks import QualityL1Metrics
@@ -60,7 +61,9 @@ l0_pipeline.add_node(
60
61
 
61
62
  # Output flow
62
63
  l0_pipeline.add_node(task=TransferL1Data, upstreams=[VbiWriteL1Frame, AssembleVbiMovie])
63
- l0_pipeline.add_node(task=SubmitDatasetMetadata, upstreams=[VbiWriteL1Frame, AssembleQualityData])
64
+ l0_pipeline.add_node(
65
+ task=SubmitDatasetMetadata, upstreams=[VbiWriteL1Frame, AssembleQualityData, AssembleVbiMovie]
66
+ )
64
67
  l0_pipeline.add_node(
65
68
  task=PublishCatalogAndQualityMessages, upstreams=[SubmitDatasetMetadata, TransferL1Data]
66
69
  )
@@ -10,6 +10,7 @@ In this case it is then transferred to the DKIST Data Center for packaging, but
10
10
  To determine the type of calibrations applied, please inspect the `VBI__005` keyword in the FITS headers.
11
11
  It will indicate whether frame selection, speckle imaging, or other calibration algorithms were applied.
12
12
  """
13
+
13
14
  from dkist_processing_common.tasks import AssembleQualityData
14
15
  from dkist_processing_common.tasks import PublishCatalogAndQualityMessages
15
16
  from dkist_processing_common.tasks import QualityL1Metrics
@@ -53,7 +54,7 @@ summit_processed_data.add_node(
53
54
 
54
55
  # Output flow
55
56
  summit_processed_data.add_node(
56
- task=SubmitDatasetMetadata, upstreams=[VbiWriteL1Frame, AssembleQualityData]
57
+ task=SubmitDatasetMetadata, upstreams=[VbiWriteL1Frame, AssembleQualityData, AssembleVbiMovie]
57
58
  )
58
59
  summit_processed_data.add_node(task=TransferL1Data, upstreams=[VbiWriteL1Frame, AssembleVbiMovie])
59
60
  summit_processed_data.add_node(
@@ -4,6 +4,7 @@ Workflow for trial runs.
4
4
  These runs send their outputs (as well as intermediate files) to an unpublished location so that
5
5
  the DC, in coordination instrument scientists, can assess the performance of the pipeline.
6
6
  """
7
+
7
8
  from dkist_processing_common.tasks import AssembleQualityData
8
9
  from dkist_processing_common.tasks import CreateTrialAsdf
9
10
  from dkist_processing_common.tasks import CreateTrialDatasetInventory