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}