-
Notifications
You must be signed in to change notification settings - Fork 37
/
variability_across_timescales_PS_driver.py
61 lines (53 loc) · 1.56 KB
/
variability_across_timescales_PS_driver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env python
import glob
import os
from genutil import StringConstructor
from pcmdi_metrics.mean_climate.lib.pmp_parser import PMPParser
from pcmdi_metrics.precip_variability.lib import (
AddParserArgument,
precip_variability_across_timescale,
)
# Read parameters
P = PMPParser()
P = AddParserArgument(P)
param = P.get_parameter()
mip = param.mip
mod = param.mod
var = param.var
dfrq = param.frq
modpath = param.modpath
prd = param.prd
fac = param.fac
nperseg = param.nperseg
noverlap = param.noverlap
print(modpath)
print(mod)
print(prd)
print(nperseg, noverlap)
# Get flag for CMEC output
cmec = param.cmec
# Create output directory
case_id = param.case_id
outdir_template = param.process_templated_argument("results_dir")
outdir = StringConstructor(
str(outdir_template(output_type="%(output_type)", mip=mip, case_id=case_id))
)
for output_type in ["graphics", "diagnostic_results", "metrics_results"]:
os.makedirs(outdir(output_type=output_type), exist_ok=True)
print(outdir(output_type=output_type))
# Check data in advance
file_list = sorted(glob.glob(os.path.join(modpath, mod)))
if mip == "obs":
dat = file_list[0].split("/")[-1].split("_")[2]
else:
model = file_list[0].split("/")[-1].split("_")[2]
ens = file_list[0].split("/")[-1].split("_")[4]
dat = model + "." + ens
print(dat)
print(file_list)
# Regridding -> Anomaly -> Power spectra -> Domain&Frequency average -> Write
syr = prd[0]
eyr = prd[1]
precip_variability_across_timescale(
file_list, syr, eyr, dfrq, mip, dat, var, fac, nperseg, noverlap, outdir, cmec
)