Dependencies

Below defines a dependency graph for zppy tasks. It can be visualized with graph-drawing tools like GraphViz or pydot.

  1digraph TaskDependencies {
  2    // Graph settings
  3    rankdir=LR  // Left-to-right layout (TB for top-to-bottom)
  4    node [shape=box, style=rounded]
  5
  6    // Reviewing the dependencies in each `.py` file
  7    // and the test cfgs, we come up with the following:
  8
  9    // VERTICES (tasks)
 10
 11    climo_diurnal_atm [label="climo: diurnal, atm"]
 12    climo_month_atm [label="climo: monthly, atm"]
 13    climo_month_lnd [label="climo: monthly, lnd"]
 14
 15    ts_daily_atm [label="ts: daily, atm"]
 16    ts_month_atm [label="ts: monthly, atm"]
 17    ts_month_atm_glb [label="ts: monthly, atm, glb"]
 18    ts_month_lnd [label="ts: monthly, lnd"]
 19    ts_month_lnd_glb [label="ts: monthly, lnd, glb"]
 20    ts_month_rof [label="ts: monthly, rof"]
 21    
 22    e3sm_to_cmip_month_atm [label="e3sm_to_cmip: monthly, atm"]
 23    e3sm_to_cmip_month_lnd [label="e3sm_to_cmip: monthly, lnd"]
 24
 25    tc_analysis
 26
 27    e3sm_diags_diurnal [label="e3sm_diags: diurnal_cycle"]
 28    e3sm_diags_climo_month_atm [label="e3sm_diags: lat_lon,zonal_mean_xy,\nzonal_mean_2d,polar,cosp_histogram,\nmeridional_mean_2d,annual_cycle_zonal_mean,zonal_mean_2d_stratosphere,\naerosol_aeronet,aerosol_budget"]
 29    e3sm_diags_climo_month_lnd [label="e3sm_diags: lat_lon_land"]
 30    e3sm_diags_streamflow [label="e3sm_diags: streamflow"]
 31    e3sm_diags_tc [label="e3sm_diags: tc_analysis"]
 32    e3sm_diags_ts_daily_atm [label="e3sm_diags: tropical_subseasonal,precip_pdf"]
 33    e3sm_diags_ts_month_atm [label="e3sm_diags: enso_diags,qbo,\narea_mean_time_series,mp_partition"]
 34
 35    mpas_analysis
 36
 37    global_time_series_classic_atm [label="global_time_series:\nThe 5 atm classic plots"]
 38    global_time_series_classic_ocn [label="global_time_series:\nThe 3 ocn classic plots"]
 39    global_time_series_plots_atm [label="global_time_series:\natm plots"]
 40    global_time_series_plots_ice [label="global_time_series:\nice plots"] // Currently unused
 41    global_time_series_plots_lnd [label="global_time_series:\nlnd plots"]
 42    global_time_series_plots_ocn [label="global_time_series:\nocn plots"]
 43
 44    ilamb_lnd_atm [label="ilamb: lnd & atm"]
 45    ilamb_lnd_only [label="ilamb: lnd only"]
 46    
 47    livvkit
 48
 49    pcmdi_diags_mean_climate [label="pcmdi_diags: mean_climate"]
 50    pcmdi_diags_variability_modes_atm [label="pcmdi_diags: variability_modes_atm"]
 51    pcmdi_diags_variability_modes_cpl [label="pcmdi_diags: variability_modes_cpl"]
 52    pcmdi_diags_enso [label="pcmdi_diags: enso"]
 53    pcmdi_diags_synthetic_plots [label="pcmdi_diags: synthetic_plots"]
 54
 55
 56    // EDGES (dependencies)
 57
 58    // Defined in climo.py:
 59    // None
 60
 61    // Defined in ts.py:
 62    // None
 63
 64    // Defined in e3sm_to_cmip.py:
 65    ts_month_atm -> e3sm_to_cmip_month_atm
 66    ts_month_lnd -> e3sm_to_cmip_month_lnd
 67
 68    // Defined in tc_analysis.py:
 69    // None
 70
 71    // Defined in e3sm_diags.py:
 72    climo_month_atm -> e3sm_diags_climo_month_atm
 73    climo_month_lnd -> e3sm_diags_climo_month_lnd
 74    climo_diurnal_atm -> e3sm_diags_diurnal
 75    tc_analysis -> e3sm_diags_tc
 76    ts_month_atm -> e3sm_diags_ts_month_atm
 77    ts_month_rof -> e3sm_diags_streamflow
 78    ts_daily_atm -> e3sm_diags_ts_daily_atm
 79
 80    // Defined in mpas_analysis.py:
 81    mpas_analysis -> mpas_analysis // Later year sets depend on earlier runs
 82
 83    // Defined in global_time_series.py:
 84    ts_month_atm_glb -> {global_time_series_classic_atm, global_time_series_plots_atm}
 85    ts_month_lnd_glb -> global_time_series_plots_lnd
 86    mpas_analysis -> {global_time_series_classic_ocn, global_time_series_plots_ocn}
 87
 88    // Defined in ilamb.py:
 89    ts_month_atm -> ilamb_lnd_atm
 90    ts_month_lnd -> {ilamb_lnd_atm, ilamb_lnd_only}
 91    e3sm_to_cmip_month_atm -> ilamb_lnd_atm
 92    e3sm_to_cmip_month_lnd -> {ilamb_lnd_atm, ilamb_lnd_only}
 93
 94    // Defined in livvkit.py:
 95    // Data sources in livvkit.py: "cmb", "smb", "racmo", "merra2", "ceres", "era5"
 96    // climo extensions in tests/integration/template_weekly_comprehensive_v3.cfg: traave, native, racmo_gis, racmo_ais, merra2, era5
 97    // ts extensions in tests/integration/template_weekly_comprehensive_v3.cfg: energy, smb
 98    climo_month_lnd -> livvkit [label="Specify mapping files"]
 99    ts_month_lnd -> livvkit [label="Specify mapping files"]
100
101    // Defined in pcmdi_diags.py:
102    {ts_month_atm, e3sm_to_cmip_month_atm} -> {pcmdi_diags_mean_climate, pcmdi_diags_variability_modes_atm, pcmdi_diags_variability_modes_cpl, pcmdi_diags_enso} -> pcmdi_diags_synthetic_plots
103
104}