diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_codice_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_codice_dependencies.yaml new file mode 100644 index 000000000..649556a1c --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_codice_dependencies.yaml @@ -0,0 +1,351 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + + +(l1a, all): + - upstream_source: codice + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l1a-sci-lut + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, hi-counters-aggregated): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: hi-counters-aggregated + + +(l1b, hi-counters-singles): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: hi-counters-singles + + +(l1b, hi-omni): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: hi-omni + + +(l1b, hi-priority): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: hi-priority + + +(l1b, hi-sectored): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: hi-sectored + + +(l1b, lo-counters-aggregated): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-counters-aggregated + + +(l1b, lo-counters-singles): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-counters-singles + + +(l1b, lo-nsw-angular): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-nsw-angular + + +(l1b, lo-nsw-priority): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-nsw-priority + + +(l1b, lo-nsw-species): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-nsw-species + + +(l1b, lo-sw-angular): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-sw-angular + + +(l1b, lo-sw-priority): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-sw-priority + + +(l1b, lo-sw-species): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-sw-species + + +(l2, hi-direct-events): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: hi-direct-events + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-hi-energy-table + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-hi-tof-table + + +(l2, hi-omni): + - upstream_source: codice + upstream_data_type: l1b + upstream_descriptor: hi-omni + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-hi-omni-efficiency + + +(l2, hi-sectored): + - upstream_source: codice + upstream_data_type: l1b + upstream_descriptor: hi-sectored + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-hi-sectored-efficiency + + +(l2, lo-direct-events): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-direct-events + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-onboard-energy-table + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-onboard-energy-bins + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-onboard-mpq-cal + + +(l2, lo-nsw-angular): + - upstream_source: codice + upstream_data_type: l1b + upstream_descriptor: lo-nsw-angular + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-gfactor + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-efficiency + + +(l2, lo-nsw-species): + - upstream_source: codice + upstream_data_type: l1b + upstream_descriptor: lo-nsw-species + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-gfactor + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-efficiency + + +(l2, lo-sw-angular): + - upstream_source: codice + upstream_data_type: l1b + upstream_descriptor: lo-sw-angular + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-gfactor + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-efficiency + + +(l2, lo-sw-species): + - upstream_source: codice + upstream_data_type: l1b + upstream_descriptor: lo-sw-species + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-gfactor + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-efficiency + + +(l3a, hi-direct-events): + - upstream_source: codice + upstream_data_type: l2 + upstream_descriptor: hi-direct-events + + +(l3a, lo-direct-events): + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-sw-priority + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-nsw-priority + - upstream_source: codice + upstream_data_type: l2 + upstream_descriptor: lo-direct-events + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: lo-energy-per-charge + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: mass-coefficient-lookup + + +(l3a, lo-heplus-3d-distribution): + - upstream_source: codice + upstream_data_type: l3a + upstream_descriptor: lo-direct-events + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-sw-priority + kickoff_job: false + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-nsw-priority + kickoff_job: false + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: lo-mass-species-bin-lookup + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-gfactor + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: lo-energy-per-charge + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-efficiency + + +(l3a, lo-heplus2-3d-distribution): + - upstream_source: codice + upstream_data_type: l3a + upstream_descriptor: lo-direct-events + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-sw-priority + kickoff_job: false + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-nsw-priority + kickoff_job: false + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: lo-mass-species-bin-lookup + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-gfactor + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: lo-energy-per-charge + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-efficiency + + +(l3a, lo-hplus-3d-distribution): + - upstream_source: codice + upstream_data_type: l3a + upstream_descriptor: lo-direct-events + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-sw-priority + kickoff_job: false + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-nsw-priority + kickoff_job: false + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: lo-mass-species-bin-lookup + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-gfactor + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: lo-energy-per-charge + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-efficiency + + +(l3a, lo-oplus6-3d-distribution): + - upstream_source: codice + upstream_data_type: l3a + upstream_descriptor: lo-direct-events + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-sw-priority + kickoff_job: false + - upstream_source: codice + upstream_data_type: l1a + upstream_descriptor: lo-nsw-priority + kickoff_job: false + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: lo-mass-species-bin-lookup + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-gfactor + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: lo-energy-per-charge + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: l2-lo-efficiency + + +(l3a, lo-partial-densities): + - upstream_source: codice + upstream_data_type: l2 + upstream_descriptor: lo-sw-species + - upstream_source: codice + upstream_data_type: ancillary + upstream_descriptor: mass-per-charge + + +(l3a, lo-sw-charge-state-distributions): + - upstream_source: codice + upstream_data_type: l3a + upstream_descriptor: lo-partial-densities + + +(l3a, lo-sw-ratios): + - upstream_source: codice + upstream_data_type: l3a + upstream_descriptor: lo-partial-densities + + +(l3b, hi-pitch-angle): + - upstream_source: mag + upstream_data_type: l1d + upstream_descriptor: norm-dsrf + - upstream_source: codice + upstream_data_type: l2 + upstream_descriptor: hi-sectored diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_glows_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_glows_dependencies.yaml new file mode 100644 index 000000000..7b23922bf --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_glows_dependencies.yaml @@ -0,0 +1,121 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + + +(l1a, all): + - upstream_source: glows + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, de): + - upstream_source: glows + upstream_data_type: l1a + upstream_descriptor: de + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: conversion-table-for-anc-data + + +(l1b, hist): + - upstream_source: glows + upstream_data_type: l1a + upstream_descriptor: hist + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: exclusions-by-instr-team + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: map-of-excluded-regions + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: map-of-uv-sources + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: pipeline-settings + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: suspected-transients + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: conversion-table-for-anc-data + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l2, hist): + - upstream_source: glows + upstream_data_type: l1b + upstream_descriptor: hist + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: pipeline-settings + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l3a, hist): + - upstream_source: glows + upstream_data_type: l2 + upstream_descriptor: hist + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: calibration-data + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: time-dep-bckgrd + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: map-of-extra-helio-bckgrd + - upstream_source: glows + upstream_data_type: ancillary + upstream_descriptor: pipeline-settings diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_hi_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_hi_dependencies.yaml new file mode 100644 index 000000000..cb9bd0cef --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_hi_dependencies.yaml @@ -0,0 +1,509 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + +# ========= Common Dependency Groups ========= +# Common dependencies shared by multiple products +spice_basic: &spice_basic + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + +spice_common: &spice_common + - *spice_basic + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: best + kickoff_job: false + - upstream_source: ephemeris_90days + upstream_data_type: spice + upstream_descriptor: best + kickoff_job: false + +# ----- Sub section of common dependencies for data level ---- +# common SPICE dependencies +spice_l1b: &spice_l1b + - *spice_basic + - *spice_common + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + kickoff_job: false + +spice_l1c: &spice_l1c + - *spice_common + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + kickoff_job: false + + +spice_l2: &spice_l2 + - *spice_basic + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + +# common ancillary dependencies +ancillary_45sensor_l2: &ancillary_45sensor_l2 + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 45sensor-cal-prod + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 45sensor-esa-energies + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 45sensor-esa-eta-fit-factors + +ancillary_90sensor_l2: &ancillary_90sensor_l2 + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 90sensor-cal-prod + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 90sensor-esa-energies + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 90sensor-esa-eta-fit-factors + +# common science dependencies +l0_data: &l0_data + - upstream_source: hi + upstream_data_type: l0 + upstream_descriptor: raw + +sensor45_l1c_pset: &sensor45_l1c_pset + - upstream_source: hi + upstream_data_type: l1c + upstream_descriptor: 45sensor-pset + +sensor90_l1c_pset: &sensor90_l1c_pset + - upstream_source: hi + upstream_data_type: l1c + upstream_descriptor: 90sensor-pset + +# ======== Product-Specific Dependencies ======== +(l1a, all): + - *spice_basic + - *l0_data + +(l1b, hk): + - *spice_basic + - *l0_data + +(l1b, 45sensor-de): + - *spice_l1b + - upstream_source: hi + upstream_data_type: l1a + upstream_descriptor: 45sensor-de + - upstream_source: hi + upstream_data_type: l1b + upstream_descriptor: 45sensor-hk + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 45sensor-esa-energies + +(l1b, 45sensor-goodtimes): + - *spice_basic + - upstream_source: hi + upstream_data_type: l1a + upstream_descriptor: 45sensor-diagfee + - upstream_source: hi + upstream_data_type: l1b + upstream_descriptor: 45sensor-de + date_range: ["6np",] + - upstream_source: hi + upstream_data_type: l1b + upstream_descriptor: 45sensor-hk + +(l1c, 45sensor-pset): + - *spice_l1c + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 45sensor-cal-prod + - upstream_source: hi + upstream_data_type: l1b + upstream_descriptor: 45sensor-de + +(l1b, 90sensor-de): + - *spice_l1b + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 90sensor-esa-energies + - upstream_source: hi + upstream_data_type: l1a + upstream_descriptor: 90sensor-de + - upstream_source: hi + upstream_data_type: l1b + upstream_descriptor: 90sensor-hk + +(l1c, 90sensor-pset): + - *spice_l1c + - upstream_source: hi + upstream_data_type: ancillary + upstream_descriptor: 90sensor-cal-prod + - upstream_source: hi + upstream_data_type: l1b + upstream_descriptor: 90sensor-de + +# L2 Products - 45sensor + +(l2, h45-ena-h-hf-nsp-anti-hae-4deg-1yr): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-anti-hae-4deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-anti-hae-6deg-1yr): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-anti-hae-6deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-full-hae-4deg-3mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-full-hae-4deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-full-hae-6deg-3mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-full-hae-6deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-ram-hae-4deg-1yr): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-ram-hae-4deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-hf-nsp-ram-hae-6deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-anti-hae-4deg-1yr): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + + +(l2, h45-ena-h-sf-nsp-anti-hae-4deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-anti-hae-6deg-1yr): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-anti-hae-6deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-full-hae-4deg-3mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-full-hae-4deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-full-hae-6deg-3mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-full-hae-6deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-ram-hae-4deg-1yr): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-ram-hae-4deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + +(l2, h45-ena-h-sf-nsp-ram-hae-6deg-6mo): + - *spice_l2 + - *ancillary_45sensor_l2 + - *sensor45_l1c_pset + + +# L2 Products - 90sensor + +(l2, h90-ena-h-hf-nsp-anti-hae-4deg-1yr): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-anti-hae-4deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-anti-hae-6deg-1yr): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-anti-hae-6deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-full-hae-4deg-3mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-full-hae-4deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-full-hae-6deg-3mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-full-hae-6deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-ram-hae-4deg-1yr): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-ram-hae-4deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-hf-nsp-ram-hae-6deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-anti-hae-4deg-1yr): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-anti-hae-4deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-anti-hae-6deg-1yr): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-anti-hae-6deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-full-hae-4deg-3mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-full-hae-4deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-full-hae-6deg-3mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-full-hae-6deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-ram-hae-4deg-1yr): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-ram-hae-4deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +(l2, h90-ena-h-sf-nsp-ram-hae-6deg-6mo): + - *spice_l2 + - *ancillary_90sensor_l2 + - *sensor90_l1c_pset + +# L3 Products - 45sensor + +(l3, h45-spx-h-hf-sp-anti-hae-4deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h45-ena-h-hf-sp-anti-hae-4deg-1yr + +(l3, h45-spx-h-hf-sp-anti-hae-6deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h45-ena-h-hf-sp-anti-hae-6deg-1yr + +(l3, h45-spx-h-hf-sp-full-hae-4deg-6mo): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h45-ena-h-hf-sp-full-hae-4deg-6mo + +(l3, h45-spx-h-hf-sp-full-hae-6deg-6mo): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h45-ena-h-hf-sp-full-hae-6deg-6mo + +(l3, h45-spx-h-hf-sp-ram-hae-4deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h45-ena-h-hf-sp-ram-hae-4deg-1yr + +(l3, h45-spx-h-hf-sp-ram-hae-6deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h45-ena-h-hf-sp-ram-hae-6deg-1yr + +# L3 Products - 90sensor + +(l3, h90-spx-h-hf-sp-anti-hae-4deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h90-ena-h-hf-sp-anti-hae-4deg-1yr + +(l3, h90-spx-h-hf-sp-anti-hae-6deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h90-ena-h-hf-sp-anti-hae-6deg-1yr + +(l3, h90-spx-h-hf-sp-full-hae-4deg-6mo): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h90-ena-h-hf-sp-full-hae-4deg-6mo + +(l3, h90-spx-h-hf-sp-full-hae-6deg-6mo): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h90-ena-h-hf-sp-full-hae-6deg-6mo + +(l3, h90-spx-h-hf-sp-ram-hae-4deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h90-ena-h-hf-sp-ram-hae-4deg-1yr + +(l3, h90-spx-h-hf-sp-ram-hae-6deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: h90-ena-h-hf-sp-ram-hae-6deg-1yr + +# L3 products - hic + +(l3, hic-spx-h-hf-sp-full-hae-4deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: hic-ena-h-hf-sp-full-hae-4deg-1yr + +(l3, hic-spx-h-hf-sp-full-hae-6deg-1yr): + - upstream_source: hi + upstream_data_type: l3 + upstream_descriptor: hic-ena-h-hf-sp-full-hae-6deg-1yr diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_hit_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_hit_dependencies.yaml new file mode 100644 index 000000000..9cb238f69 --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_hit_dependencies.yaml @@ -0,0 +1,165 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + + +(l1a, all): + - upstream_source: hit + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, hk): + - upstream_source: hit + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, sectored-rates): + - upstream_source: hit + upstream_data_type: l1a + upstream_descriptor: counts-sectored + + +(l1b, standard-rates): + - upstream_source: hit + upstream_data_type: l1a + upstream_descriptor: counts-standard + + +(l1b, summed-rates): + - upstream_source: hit + upstream_data_type: l1a + upstream_descriptor: counts-standard + + +(l2, macropixel-intensity): + - upstream_source: hit + upstream_data_type: l1b + upstream_descriptor: sectored-rates + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-macropixel-dt0-factors + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-macropixel-dt1-factors + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-macropixel-dt2-factors + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-macropixel-dt3-factors + + +(l2, standard-intensity): + - upstream_source: hit + upstream_data_type: l1b + upstream_descriptor: standard-rates + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-standard-dt0-factors + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-standard-dt1-factors + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-standard-dt2-factors + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-standard-dt3-factors + + +(l2, summed-intensity): + - upstream_source: hit + upstream_data_type: l1b + upstream_descriptor: summed-rates + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-summed-dt0-factors + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-summed-dt1-factors + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-summed-dt2-factors + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: l1b-to-l2-summed-dt3-factors + + +(l3, direct-events): + - upstream_source: hit + upstream_data_type: l1a + upstream_descriptor: direct-events + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-2A-cosine-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-3A-cosine-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-4A-cosine-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-2B-cosine-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-3B-cosine-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-4B-cosine-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: lo-gain-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: hi-gain-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-2A-charge-fit-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-3A-charge-fit-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-4A-charge-fit-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-2B-charge-fit-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-3B-charge-fit-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: range-4B-charge-fit-lookup + - upstream_source: hit + upstream_data_type: ancillary + upstream_descriptor: hit-event-type-lookup + + +(l3, macropixel): + - upstream_source: hit + upstream_data_type: l2 + upstream_descriptor: macropixel-intensity + - upstream_source: mag + upstream_data_type: l1d + upstream_descriptor: norm-dsrf diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_idex_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_idex_dependencies.yaml new file mode 100644 index 000000000..7a1a66a14 --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_idex_dependencies.yaml @@ -0,0 +1,84 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + +(l1a, all): + - upstream_source: idex + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, sci-1week): + - upstream_source: idex + upstream_data_type: l1a + upstream_descriptor: sci-1week + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l2a, sci-1week): + - upstream_source: idex + upstream_data_type: l1b + upstream_descriptor: sci-1week + - upstream_source: idex + upstream_data_type: ancillary + upstream_descriptor: l2a-calibration-curve-yield-params + - upstream_source: idex + upstream_data_type: ancillary + upstream_descriptor: l2a-calibration-curve-t-rise + + +(l2b, all-1mo): + - upstream_source: idex + upstream_data_type: l2a + upstream_descriptor: sci-1week + kickoff_job: false + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: idex + upstream_data_type: l1b + upstream_descriptor: evt + kickoff_job: false diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_lo_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_lo_dependencies.yaml new file mode 100644 index 000000000..19df2f2a1 --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_lo_dependencies.yaml @@ -0,0 +1,288 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + +# ========= Common Dependency Groups ========= +# Common spice dependencies shared by multiple products +spice_basic: &spice_basic + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + +spice_common: &spice_common + - *spice_basic + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: best + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + +spice_l2: &spice_l2 + - *spice_basic + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + +lo_90_pset: &lo_90_pset + - upstream_source: lo + upstream_data_type: l1c + upstream_descriptor: pset + kickoff_job: false + +lo_esa_fit_factors: &lo_esa_fit_factors + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: esa-eta-fit-factors + +# ======== Product-Specific Dependencies ======== + +# ======== Level L1A ======== +(l1a, all): + - upstream_source: lo + upstream_data_type: l0 + upstream_descriptor: raw + - *spice_basic + +# ======== Level L1B ======== +(l1b, all-rates): + - *spice_basic + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: sweep-table + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: esa-mode-lut + - upstream_source: lo + upstream_data_type: l1a + upstream_descriptor: histogram + - upstream_source: lo + upstream_data_type: l1a + upstream_descriptor: spin + +(l1b, badtimes): + - *spice_basic + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - upstream_source: lo + upstream_data_type: l1b + upstream_descriptor: nhk + +(l1b, de): + - *spice_common + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: bad-times + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: sweep-table + - upstream_source: lo + upstream_data_type: l1a + upstream_descriptor: de + - upstream_source: lo + upstream_data_type: l1a + upstream_descriptor: spin + - upstream_source: lo + upstream_data_type: l1b + upstream_descriptor: nhk + +(l1b, derates): + - *spice_basic + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: sweep-table + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: esa-mode-lut + - upstream_source: lo + upstream_data_type: l1b + upstream_descriptor: de + - upstream_source: lo + upstream_data_type: l1a + upstream_descriptor: spin + +(l1b, prostar): + - *spice_basic + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - upstream_source: lo + upstream_data_type: l1a + upstream_descriptor: star + - upstream_source: lo + upstream_data_type: l1a + upstream_descriptor: spin + - upstream_source: lo + upstream_data_type: l1b + upstream_descriptor: nhk + +# ======== Level L1C ======== +(l1c, pset): + - *spice_common + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: good-times + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: hydrogen-background + - upstream_source: lo + upstream_data_type: ancillary + upstream_descriptor: oxygen-background + - upstream_source: lo + upstream_data_type: l1b + upstream_descriptor: de + +# ======== Level L2 ======== +(l2, l090-ena-h-hf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *lo_esa_fit_factors + - *lo_90_pset + +(l2, l090-ena-h-hk-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *lo_esa_fit_factors + - *lo_90_pset + +(l2, l090-ena-h-sf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *lo_esa_fit_factors + - *lo_90_pset + +(l2, l090-ena-o-sf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *lo_esa_fit_factors + - *lo_90_pset + +(l2, l090-isn-h-sf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *lo_esa_fit_factors + - *lo_90_pset + +(l2, l090-isn-o-sf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *lo_esa_fit_factors + - *lo_90_pset + +(l2, t090-ena-h-sf-nsp-ram-hae-6deg-1yr): + - *lo_esa_fit_factors + - *lo_esa_fit_factors + +(l2, t090-isn-h-sf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *lo_90_pset + +(l2, t090-isn-o-sf-nsp-ram-hae-6deg-1yr): + - *spice_l2 + - *lo_90_pset + +# ======== Level L3 ======== +(l3, l090-isn-h-sf-nsp-ram-hae-6deg-1yr): + - upstream_source: lo + upstream_data_type: l2 + upstream_descriptor: l090-enanbs-h-sf-nsp-ram-hae-6deg-1yr + +(l3, l090-isn-o-sf-nsp-ram-hae-6deg-1yr): + - upstream_source: lo + upstream_data_type: l2 + upstream_descriptor: l090-enanbs-o-sf-nsp-ram-hae-6deg-1yr + +(l3, l090-spx-h-hf-nsp-ram-hae-6deg-1yr): + - upstream_source: lo + upstream_data_type: l2 + upstream_descriptor: l090-ena-h-hf-nsp-ram-hae-6deg-1yr + +(l3, l090-spx-h-hf-sp-ram-hae-6deg-1yr): + - upstream_source: lo + upstream_data_type: l3 + upstream_descriptor: l090-ena-h-hf-sp-ram-hae-6deg-1yr + +(l3, l090-spx-h-sf-nsp-ram-hae-6deg-1yr): + - upstream_source: lo + upstream_data_type: l2 + upstream_descriptor: l090-ena-h-sf-nsp-ram-hae-6deg-1yr + +(l3, l090-spx-h-sf-sp-ram-hae-6deg-1yr): + - upstream_source: lo + upstream_data_type: l3 + upstream_descriptor: l090-ena-h-sf-sp-ram-hae-6deg-1yr + +(l3, l090-spxnbs-h-hk-nsp-ram-hae-6deg-1yr): + - upstream_source: lo + upstream_data_type: l2 + upstream_descriptor: l090-enanbs-h-hk-nsp-ram-hae-6deg-1yr + +(l3, l090-spxnbs-h-sf-nsp-ram-hae-6deg-1yr): + - upstream_source: lo + upstream_data_type: l2 + upstream_descriptor: l090-enanbs-h-sf-nsp-ram-hae-6deg-1yr + + diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_mag_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_mag_dependencies.yaml new file mode 100644 index 000000000..c5bc388c2 --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_mag_dependencies.yaml @@ -0,0 +1,283 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + + +(l1a, all): + - upstream_source: mag + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, burst-magi): + - upstream_source: mag + upstream_data_type: l1a + upstream_descriptor: burst-magi + - upstream_source: mag + upstream_data_type: ancillary + upstream_descriptor: l1b-calibration + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, burst-mago): + - upstream_source: mag + upstream_data_type: l1a + upstream_descriptor: burst-mago + - upstream_source: mag + upstream_data_type: ancillary + upstream_descriptor: l1b-calibration + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, norm-magi): + - upstream_source: mag + upstream_data_type: l1a + upstream_descriptor: norm-magi + - upstream_source: mag + upstream_data_type: ancillary + upstream_descriptor: l1b-calibration + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, norm-mago): + - upstream_source: mag + upstream_data_type: l1a + upstream_descriptor: norm-mago + - upstream_source: mag + upstream_data_type: ancillary + upstream_descriptor: l1b-calibration + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1c, norm-magi): + - upstream_source: mag + upstream_data_type: l1b + upstream_descriptor: norm-magi + kickoff_job: false + - upstream_source: mag + upstream_data_type: l1b + upstream_descriptor: burst-magi + kickoff_job: false + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1c, norm-mago): + - upstream_source: mag + upstream_data_type: l1b + upstream_descriptor: norm-mago + kickoff_job: false + - upstream_source: mag + upstream_data_type: l1b + upstream_descriptor: burst-mago + kickoff_job: false + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1d, norm-srf): + - upstream_source: mag + upstream_data_type: ancillary + upstream_descriptor: l1d-calibration + - upstream_source: mag + upstream_data_type: l1c + upstream_descriptor: norm-mago + - upstream_source: mag + upstream_data_type: l1c + upstream_descriptor: norm-magi + - upstream_source: mag + upstream_data_type: l1b + upstream_descriptor: burst-mago + kickoff_job: false + - upstream_source: mag + upstream_data_type: l1b + upstream_descriptor: burst-magi + kickoff_job: false + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_constants + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + + +(l2, burst-srf): + - upstream_source: mag + upstream_data_type: l1b + upstream_descriptor: burst-mago + - upstream_source: mag + upstream_data_type: ancillary + upstream_descriptor: l2-calibration + - upstream_source: mag + upstream_data_type: ancillary + upstream_descriptor: l2-burst-offsets + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_constants + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l2, norm-srf): + - upstream_source: mag + upstream_data_type: l1c + upstream_descriptor: norm-mago + - upstream_source: mag + upstream_data_type: ancillary + upstream_descriptor: l2-calibration + - upstream_source: mag + upstream_data_type: ancillary + upstream_descriptor: l2-norm-offsets + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_constants + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_spacecraft_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_spacecraft_dependencies.yaml new file mode 100644 index 000000000..4e2f80a31 --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_spacecraft_dependencies.yaml @@ -0,0 +1,43 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + +(l1a, pointing-attitude): + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1a, quaternions): + - upstream_source: spacecraft + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_swapi_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_swapi_dependencies.yaml new file mode 100644 index 000000000..d5839c6db --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_swapi_dependencies.yaml @@ -0,0 +1,230 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + + +(l1, hk): + - upstream_source: swapi + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1, sci): + - upstream_source: swapi + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: swapi + upstream_data_type: l1a + upstream_descriptor: hk + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l2, sci): + - upstream_source: swapi + upstream_data_type: l1 + upstream_descriptor: sci + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: esa-unit-conversion + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: lut-notes + + +(l3a, alpha-sw): + - upstream_source: swapi + upstream_data_type: l2 + upstream_descriptor: sci + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: clock-angle-and-flow-deflection-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: proton-density-temperature-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: alpha-density-temperature-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: energy-gf-pui-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: instrument-response-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: density-of-neutral-helium-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: efficiency-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: helium-inflow-vector + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: hydrogen-inflow-vector + kickoff_job: false + + +(l3a, proton-sw): + - upstream_source: swapi + upstream_data_type: l2 + upstream_descriptor: sci + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: clock-angle-and-flow-deflection-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: proton-density-temperature-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: alpha-density-temperature-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: energy-gf-pui-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: instrument-response-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: density-of-neutral-helium-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: efficiency-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: helium-inflow-vector + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: hydrogen-inflow-vector + kickoff_job: false + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + + +(l3a, pui-he): + - upstream_source: swapi + upstream_data_type: l2 + upstream_descriptor: sci + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: clock-angle-and-flow-deflection-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: proton-density-temperature-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: alpha-density-temperature-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: energy-gf-pui-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: instrument-response-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: density-of-neutral-helium-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: efficiency-lut + kickoff_job: false + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: helium-inflow-vector + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: hydrogen-inflow-vector + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + + +(l3b, combined): + - upstream_source: swapi + upstream_data_type: l2 + upstream_descriptor: sci + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: efficiency-lut + - upstream_source: swapi + upstream_data_type: ancillary + upstream_descriptor: energy-gf-sw-lut diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_swe_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_swe_dependencies.yaml new file mode 100644 index 000000000..6f4e98a09 --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_swe_dependencies.yaml @@ -0,0 +1,104 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + + +(l1a, sci): + - upstream_source: swe + upstream_data_type: l0 + upstream_descriptor: raw + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l1b, sci): + - upstream_source: swe + upstream_data_type: l1a + upstream_descriptor: sci + - upstream_source: swe + upstream_data_type: ancillary + upstream_descriptor: l1b-in-flight-cal + - upstream_source: swe + upstream_data_type: ancillary + upstream_descriptor: esa-lut + - upstream_source: swe + upstream_data_type: ancillary + upstream_descriptor: eu-conversion + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +(l2, sci): + - upstream_source: swe + upstream_data_type: l1b + upstream_descriptor: sci + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + + +(l3, sci): + - upstream_source: swe + upstream_data_type: l1b + upstream_descriptor: sci + - upstream_source: swe + upstream_data_type: l2 + upstream_descriptor: sci + - upstream_source: swe + upstream_data_type: ancillary + upstream_descriptor: config + - upstream_source: swapi + upstream_data_type: l3a + upstream_descriptor: proton-sw + - upstream_source: mag + upstream_data_type: l1d + upstream_descriptor: norm-dsrf + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_constants + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_ultra_dependencies.yaml b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_ultra_dependencies.yaml new file mode 100644 index 000000000..a4a17da12 --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependencies/imap_ultra_dependencies.yaml @@ -0,0 +1,1163 @@ +# <---- Warning ----> +# For latest dependency configuration guidelines and requirements, +# please refer to this document https://imap-processing.readthedocs.io/en/latest/development/data-dependency.html#. +# It contains important information such as the default values and expected behavior of these dependencies, +# and how to properly configure them for your pipeline lambdas. + +# ========= Common Dependency Groups ========= +# Common spice dependencies shared by multiple products +spice_basic: &spice_basic + + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +spice_l1b_de: &spice_l1b_de + + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_90days + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + + +spice_l1c_common: &spice_l1c_common + + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: ephemeris_90days + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + kickoff_job: false + + +spice_l1c_spacecraft: &spice_l1c_spacecraft + + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: planetary_ephemeris + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + kickoff_job: false + - upstream_source: attitude_history + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: ephemeris_reconstructed + upstream_data_type: spice + upstream_descriptor: historical + - upstream_source: ephemeris_predicted + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +spice_l2: &spice_l2 + + - upstream_source: science_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: pointing_attitude + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + +# ======== Product-Specific Dependencies ======== + +(l1a, all): + - upstream_source: ultra + upstream_data_type: l0 + upstream_descriptor: raw + - *spice_basic + + + +(l1b, 45sensor-badtimes): + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 45sensor-extendedspin + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 45sensor-goodtimes + + + +(l1b, 45sensor-de): + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 45sensor-de + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 45sensor-aux + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-logistic-interpolation + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-leftslit-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-rightslit-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-egynorm-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-imgparams-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-back-pos-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-tdc-norm-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-sensor-gf-blades + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-sensor-gf-noblades + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-yadjust-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-tofxeflat + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-tofxemedium + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-tofxesteep + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-tofxph + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-spbtphcorr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-sptpphcorr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-scattering-calibration-data + - *spice_l1b_de + + + +(l1b, 45sensor-extendedspin): + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 45sensor-params + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 45sensor-rates + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 45sensor-aux + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 45sensor-de + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + + + +(l1b, 45sensor-goodtimes): + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 45sensor-extendedspin + + + +(l1b, 90sensor-badtimes): + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 90sensor-extendedspin + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 90sensor-goodtimes + + + +(l1b, 90sensor-de): + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 90sensor-de + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 90sensor-aux + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-logistic-interpolation + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-leftslit-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-rightslit-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-egynorm-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-imgparams-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-back-pos-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-tdc-norm-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-sensor-gf-blades + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-sensor-gf-noblades + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-yadjust-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-tofxeflat + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-tofxemedium + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-tofxesteep + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-tofxph + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-spbtphcorr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-sptpphcorr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-scattering-calibration-data + - *spice_l1b_de + + + +(l1b, 90sensor-extendedspin): + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 90sensor-params + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 90sensor-rates + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 90sensor-aux + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 90sensor-de + - upstream_source: spin + upstream_data_type: spin + upstream_descriptor: historical + + + +(l1b, 90sensor-goodtimes): + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 90sensor-extendedspin + + + +(l1c, 45sensor-heliopset): + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 45sensor-de + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 45sensor-rates + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 45sensor-aux + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 45sensor-goodtimes + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-scattering-calibration-data + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-sensor-gf-blades + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-logistic-interpolation + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-imgparams-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-45sensor-static-dead-times + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - *spice_l1c_common + + + +(l1c, 45sensor-spacecraftpset): + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 45sensor-de + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 45sensor-rates + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 45sensor-aux + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 45sensor-goodtimes + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-scattering-calibration-data + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-45sensor-sc-pointing-theta + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-45sensor-sc-pointing-phi + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-45sensor-sc-pointing-index + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-45sensor-sc-pointing-bsf + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-sensor-gf-blades + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-logistic-interpolation + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-imgparams-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-45sensor-static-dead-times + - *spice_l1c_spacecraft + + + +(l1c, 90sensor-heliopset): + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 90sensor-de + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 90sensor-rates + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 90sensor-aux + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 90sensor-goodtimes + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-scattering-calibration-data + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-sensor-gf-blades + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-logistic-interpolation + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-imgparams-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-90sensor-static-dead-times + - upstream_source: repoint + upstream_data_type: repoint + upstream_descriptor: historical + - *spice_l1c_common + + + +(l1c, 90sensor-spacecraftpset): + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 90sensor-de + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 90sensor-rates + - upstream_source: ultra + upstream_data_type: l1a + upstream_descriptor: 90sensor-aux + - upstream_source: ultra + upstream_data_type: l1b + upstream_descriptor: 90sensor-goodtimes + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-scattering-calibration-data + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-90sensor-sc-pointing-theta + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-90sensor-sc-pointing-phi + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-90sensor-sc-pointing-index + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-90sensor-sc-pointing-bsf + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-sensor-gf-blades + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-45sensor-logistic-interpolation + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-scattering-thresholds-per-energy + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1b-90sensor-imgparams-lookup + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: l1c-90sensor-static-dead-times + - *spice_l1c_spacecraft + + + +(l2, u45-ena-h-hf-nsp-full-hae-2deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-hf-nsp-full-hae-2deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-hf-nsp-full-hae-2deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-hf-nsp-full-hae-4deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-hf-nsp-full-hae-4deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-hf-nsp-full-hae-4deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-hf-nsp-full-hae-6deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-hf-nsp-full-hae-6deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-hf-nsp-full-hae-6deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-sf-nsp-full-hae-2deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-sf-nsp-full-hae-2deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-sf-nsp-full-hae-2deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-sf-nsp-full-hae-4deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-sf-nsp-full-hae-4deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-sf-nsp-full-hae-4deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-sf-nsp-full-hae-6deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-sf-nsp-full-hae-6deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u45-ena-h-sf-nsp-full-hae-6deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 45sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-hf-nsp-full-hae-2deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-hf-nsp-full-hae-2deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-hf-nsp-full-hae-2deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-hf-nsp-full-hae-4deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-hf-nsp-full-hae-4deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-hf-nsp-full-hae-4deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-hf-nsp-full-hae-6deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-hf-nsp-full-hae-6deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-hf-nsp-full-hae-6deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-heliopset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-sf-nsp-full-hae-2deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-sf-nsp-full-hae-2deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-sf-nsp-full-hae-2deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-sf-nsp-full-hae-4deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-sf-nsp-full-hae-4deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-sf-nsp-full-hae-4deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-sf-nsp-full-hae-6deg-1yr): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-sf-nsp-full-hae-6deg-3mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l2, u90-ena-h-sf-nsp-full-hae-6deg-6mo): + - upstream_source: ultra + upstream_data_type: l1c + upstream_descriptor: 90sensor-spacecraftpset + kickoff_job: false + - *spice_l2 + + + +(l3, u45-spx-h-hf-sp-full-hae-2deg-1yr): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u45-ena-h-hf-sp-full-hae-2deg-1yr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u45-spx-h-hf-sp-full-hae-2deg-3mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u45-ena-h-hf-sp-full-hae-2deg-3mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u45-spx-h-hf-sp-full-hae-2deg-6mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u45-ena-h-hf-sp-full-hae-2deg-6mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u45-spx-h-hf-sp-full-hae-4deg-1yr): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u45-ena-h-hf-sp-full-hae-4deg-1yr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u45-spx-h-hf-sp-full-hae-4deg-3mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u45-ena-h-hf-sp-full-hae-4deg-3mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u45-spx-h-hf-sp-full-hae-4deg-6mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u45-ena-h-hf-sp-full-hae-4deg-6mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u45-spx-h-hf-sp-full-hae-6deg-1yr): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u45-ena-h-hf-sp-full-hae-6deg-1yr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u45-spx-h-hf-sp-full-hae-6deg-3mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u45-ena-h-hf-sp-full-hae-6deg-3mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u45-spx-h-hf-sp-full-hae-6deg-6mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u45-ena-h-hf-sp-full-hae-6deg-6mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u90-spx-h-hf-sp-full-hae-2deg-1yr): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u90-ena-h-hf-sp-full-hae-2deg-1yr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u90-spx-h-hf-sp-full-hae-2deg-3mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u90-ena-h-hf-sp-full-hae-2deg-3mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u90-spx-h-hf-sp-full-hae-2deg-6mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u90-ena-h-hf-sp-full-hae-2deg-6mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u90-spx-h-hf-sp-full-hae-4deg-1yr): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u90-ena-h-hf-sp-full-hae-4deg-1yr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u90-spx-h-hf-sp-full-hae-4deg-3mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u90-ena-h-hf-sp-full-hae-4deg-3mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u90-spx-h-hf-sp-full-hae-4deg-6mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u90-ena-h-hf-sp-full-hae-4deg-6mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u90-spx-h-hf-sp-full-hae-6deg-1yr): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u90-ena-h-hf-sp-full-hae-6deg-1yr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u90-spx-h-hf-sp-full-hae-6deg-3mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u90-ena-h-hf-sp-full-hae-6deg-3mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, u90-spx-h-hf-sp-full-hae-6deg-6mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: u90-ena-h-hf-sp-full-hae-6deg-6mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, ulc-spx-h-hf-sp-full-hae-2deg-1yr): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: ulc-ena-h-hf-sp-full-hae-2deg-1yr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, ulc-spx-h-hf-sp-full-hae-2deg-3mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: ulc-ena-h-hf-sp-full-hae-2deg-3mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, ulc-spx-h-hf-sp-full-hae-2deg-6mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: ulc-ena-h-hf-sp-full-hae-2deg-6mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, ulc-spx-h-hf-sp-full-hae-4deg-1yr): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: ulc-ena-h-hf-sp-full-hae-4deg-1yr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, ulc-spx-h-hf-sp-full-hae-4deg-3mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: ulc-ena-h-hf-sp-full-hae-4deg-3mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, ulc-spx-h-hf-sp-full-hae-4deg-6mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: ulc-ena-h-hf-sp-full-hae-4deg-6mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, ulc-spx-h-hf-sp-full-hae-6deg-1yr): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: ulc-ena-h-hf-sp-full-hae-6deg-1yr + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, ulc-spx-h-hf-sp-full-hae-6deg-3mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: ulc-ena-h-hf-sp-full-hae-6deg-3mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + + +(l3, ulc-spx-h-hf-sp-full-hae-6deg-6mo): + - upstream_source: ultra + upstream_data_type: l3 + upstream_descriptor: ulc-ena-h-hf-sp-full-hae-6deg-6mo + - upstream_source: ultra + upstream_data_type: ancillary + upstream_descriptor: ulc-spx-energy-ranges + + diff --git a/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependency_new.py b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependency_new.py new file mode 100644 index 000000000..02977d6d6 --- /dev/null +++ b/sds_data_manager/lambda_code/SDSCode/pipeline_lambdas/dependency_new.py @@ -0,0 +1,348 @@ +"""Simple utilities for reading dependency configurations.""" + +import logging +from pathlib import Path + +import yaml +from imap_data_access import VALID_INSTRUMENTS + +from .dependency import DataSource, DataType + +# Logger setup +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + +# Date range validation constants +NEAREST_OPTIONS = ("nd", "np") +DATE_RANGE_OPTIONS = ("p", "h", "d", "l", *NEAREST_OPTIONS) + + +class DependencyConfigReader: + """Dependency configuration reader. + + This class encapsulates all operations for reading instrument dependency + configurations, including loading from YAML files, validating nodes. + """ + + def __init__(self): + """Initialize DependencyConfig by loading all dependencies.""" + self._data_source_validator = DataSource() + self._data_type_validator = DataType() + self._config = self._load_all_dependencies() + + @property + def config(self) -> dict: + """Get the underlying dependency configuration dictionary.""" + return self._config + + def _load_all_dependencies(self) -> dict: + """Load all instrument YAML dependency files and unified dependency. + + Returns a dictionary where each key is a parent node + (source, data_type, descriptor) representing a downstream product, + and each value is a list of upstream dependencies as child nodes. + + Returns + ------- + dict + Unified dependency configuration with structure: + {(source, data_type, descriptor): [upstream_deps_list]} + + Raises + ------ + FileNotFoundError + If any expected YAML file is missing. + ValueError + If YAML content is invalid or empty. + + Examples + -------- + >>> config = DependencyConfig() + >>> config.config[('codice', 'l1a', 'all')] + [('codice', 'l0', 'raw', True, True), ...] + """ + dependencies = {} + yaml_dir = Path(__file__).parent + + for instrument in VALID_INSTRUMENTS: + yaml_file = ( + yaml_dir / "dependencies" / f"imap_{instrument}_dependencies.yaml" + ) + + if instrument == "ialirt": + continue + + if not yaml_file.exists(): + raise FileNotFoundError( + f"Dependency configuration file not found for '{instrument}' " + f"at {yaml_file}" + ) + + with open(yaml_file) as f: + instrument_config = yaml.safe_load(f) + + if not instrument_config: + raise ValueError( + f"Dependency content is empty for '{instrument}' in {yaml_file}" + ) + + # Parse YAML keys to construct (source, data_type, descriptor) tuples + for key_str, upstream_list in instrument_config.items(): + # Skip any anchor definitions (common dependency groups). + if not key_str.startswith("("): + continue + + try: + # Extract data_type and descriptor from key string + key_parts = key_str.strip("()").split(",") + data_type = key_parts[0].strip() + descriptor = key_parts[1].strip() + # Convert string key like "(l1a, all)" in the YAML to tuple + # (,l1a, all) by combining with instrument source + # to get full downstream node. + self._validate_source(instrument) + self._validate_data_type(data_type) + self._validate_descriptor(descriptor) + downstream_node = (instrument, data_type, descriptor) + + flattened_upstream_deps = self.recursive_flatten_list(upstream_list) + + # Validate each upstream node + for upstream in flattened_upstream_deps: + self.validate_node(upstream) + + dependencies[downstream_node] = flattened_upstream_deps + + except (ValueError, IndexError) as e: + raise ValueError( + f"Non-product key error: '{key_str}' in {yaml_file}: {e}" + ) from e + + return dependencies + + def recursive_flatten_list(self, nested_list): + """Recursively flatten a nested list structure. + + Multiple inheritance in dependency YAML files can result in + lists containing other lists, which this method flattens. + + For example: + spice_basic: &spice_basic + - upstream_source: leapseconds + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + - upstream_source: spacecraft_clock + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + spice_45sensor_l1b: &spice_45sensor_l1b + - *spice_basic + - upstream_source: imap_frames + upstream_data_type: spice + upstream_descriptor: historical + kickoff_job: false + + (l1b, 45sensor-de): + - *spice_45sensor_l1b + - upstream_source: hi + upstream_data_type: l1a + upstream_descriptor: 45sensor-de + + Parameters + ---------- + nested_list : list + A potentially nested list of dependencies. + + Returns + ------- + list + A single flattened list of dependencies. + """ + flat_list = [] + for item in nested_list: + if isinstance(item, list): + # If the item is a list, extend with the flattened version of that list + flat_list.extend(self.recursive_flatten_list(item)) + else: + # Otherwise, append the item (which can be any object) + flat_list.append(item) + return flat_list + + def validate_node(self, node: list) -> bool: + """Validate a dependency node. + + A valid node must have exactly 5 or 6 elements: + ( + source, + data_type, + descriptor, + required, + kickoff_job, + Optional(past, future) + ) + If it includes past/future date ranges, it should follow the following format: + - p - pointing + - h - hourly + - d - days + - l - last_processed + - nd - nearest day + - np - nearest pointing + + past and future should end with one of these options. Eg. + ("-3p", "3pm") means 3 pointing + ("-3d", "5d") means 5 days + ("-2h", "2h") means 2 hours + ("1l",) means last processed + ("6np",) means nearest 6 pointing + + Validation is performed for each field. + + Parameters + ---------- + node : DependencyNode + Node to validate. + + Returns + ------- + bool + True if node is valid. + + Raises + ------ + ValueError + If node format is invalid or contains invalid values. + + Examples + -------- + >>> config = DependencyConfig() + >>> config.validate_node(('codice', 'l1a', 'all')) + True + >>> config.validate_node(('invalid', 'l1a', 'all')) + Traceback (most recent call last): + ... + ValueError: Invalid data source... + """ + self._validate_node_length(node) + source, data_type, descriptor, required, kickoff_job, date_range = ( + self._unpack_node(node) + ) + self._validate_boolean_fields(required, kickoff_job) + self._validate_date_range(date_range) + self._validate_source(source) + self._validate_data_type(data_type) + self._validate_descriptor(descriptor) + return True + + def _validate_node_length(self, node) -> None: + """Validate node has correct format (dict).""" + # Accept only dictionary format + if not isinstance(node, dict): + raise ValueError(f"Node must be a dict, got {type(node).__name__}") + + required_keys = { + "upstream_source", + "upstream_data_type", + "upstream_descriptor", + } + if not required_keys.issubset(node.keys()): + raise ValueError( + f"Node dict must contain keys {required_keys}, got {set(node.keys())}" + ) + + def _unpack_node(self, node): + """Unpack node into components, handling both dict.""" + source = node["upstream_source"] + data_type = node["upstream_data_type"] + descriptor = node["upstream_descriptor"] + required = node.get("required", True) + kickoff_job = node.get("kickoff_job", True) + date_range = node.get("date_range", None) + return source, data_type, descriptor, required, kickoff_job, date_range + + def _validate_boolean_fields(self, required: bool, kickoff_job: bool) -> None: + """Validate required and kickoff_job are booleans.""" + if not isinstance(required, bool) or not isinstance(kickoff_job, bool): + raise ValueError("'required' and 'kickoff_job' must be boolean values") + + def _validate_date_range(self, date_range) -> None: + """Validate date range format if provided.""" + if not date_range: + return + + if not isinstance(date_range, (list)) or 2 <= len(date_range) < 1: + raise ValueError( + "Date range must be a list of 1-2 elements (past) or (past, future), " + f"got {date_range}" + ) + + # Handle both single-element and two-element lists + past = date_range[0] if len(date_range) > 0 else None + future = date_range[1] if len(date_range) > 1 else None + + if past is None and future is None: + return + + is_nearest = past.endswith(NEAREST_OPTIONS) if past else False + + # Validate past if provided + if is_nearest: + past_option = "np" if past.endswith("np") else "nd" + past_int = int(past[:-2]) if past[:-2] else None + else: + past_option = past[-1] if past else None + past_int = int(past[:-1]) if past else None + + # Validate past option and its integer value + if (past_option not in DATE_RANGE_OPTIONS) or ( + past_option not in NEAREST_OPTIONS and past_int > 0 + ): + raise ValueError( + f"Invalid past '{past}'. Must end with " + f"{DATE_RANGE_OPTIONS} and must be negative." + ) + + # Validate future if provided + if future is None: + return + elif future.endswith(NEAREST_OPTIONS): + raise ValueError( + "Nearest need to be in this format, (