vortex-nwp 2.0.0b1__py3-none-any.whl → 2.0.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vortex/__init__.py +59 -45
- vortex/algo/__init__.py +3 -2
- vortex/algo/components.py +940 -614
- vortex/algo/mpitools.py +802 -497
- vortex/algo/serversynctools.py +34 -33
- vortex/config.py +19 -22
- vortex/data/__init__.py +9 -3
- vortex/data/abstractstores.py +593 -655
- vortex/data/containers.py +217 -162
- vortex/data/contents.py +65 -39
- vortex/data/executables.py +93 -102
- vortex/data/flow.py +40 -34
- vortex/data/geometries.py +228 -132
- vortex/data/handlers.py +428 -225
- vortex/data/outflow.py +15 -15
- vortex/data/providers.py +185 -163
- vortex/data/resources.py +48 -42
- vortex/data/stores.py +544 -413
- vortex/gloves.py +114 -87
- vortex/layout/__init__.py +1 -8
- vortex/layout/contexts.py +150 -84
- vortex/layout/dataflow.py +353 -202
- vortex/layout/monitor.py +264 -128
- vortex/nwp/__init__.py +5 -2
- vortex/nwp/algo/__init__.py +14 -5
- vortex/nwp/algo/assim.py +205 -151
- vortex/nwp/algo/clim.py +683 -517
- vortex/nwp/algo/coupling.py +447 -225
- vortex/nwp/algo/eda.py +437 -229
- vortex/nwp/algo/eps.py +403 -231
- vortex/nwp/algo/forecasts.py +420 -271
- vortex/nwp/algo/fpserver.py +683 -307
- vortex/nwp/algo/ifsnaming.py +205 -145
- vortex/nwp/algo/ifsroot.py +210 -122
- vortex/nwp/algo/monitoring.py +132 -76
- vortex/nwp/algo/mpitools.py +321 -191
- vortex/nwp/algo/odbtools.py +617 -353
- vortex/nwp/algo/oopsroot.py +449 -273
- vortex/nwp/algo/oopstests.py +90 -56
- vortex/nwp/algo/request.py +287 -206
- vortex/nwp/algo/stdpost.py +878 -522
- vortex/nwp/data/__init__.py +22 -4
- vortex/nwp/data/assim.py +125 -137
- vortex/nwp/data/boundaries.py +121 -68
- vortex/nwp/data/climfiles.py +193 -211
- vortex/nwp/data/configfiles.py +73 -69
- vortex/nwp/data/consts.py +426 -401
- vortex/nwp/data/ctpini.py +59 -43
- vortex/nwp/data/diagnostics.py +94 -66
- vortex/nwp/data/eda.py +50 -51
- vortex/nwp/data/eps.py +195 -146
- vortex/nwp/data/executables.py +440 -434
- vortex/nwp/data/fields.py +63 -48
- vortex/nwp/data/gridfiles.py +183 -111
- vortex/nwp/data/logs.py +250 -217
- vortex/nwp/data/modelstates.py +180 -151
- vortex/nwp/data/monitoring.py +72 -99
- vortex/nwp/data/namelists.py +254 -202
- vortex/nwp/data/obs.py +400 -308
- vortex/nwp/data/oopsexec.py +22 -20
- vortex/nwp/data/providers.py +90 -65
- vortex/nwp/data/query.py +71 -82
- vortex/nwp/data/stores.py +49 -36
- vortex/nwp/data/surfex.py +136 -137
- vortex/nwp/syntax/__init__.py +1 -1
- vortex/nwp/syntax/stdattrs.py +173 -111
- vortex/nwp/tools/__init__.py +2 -2
- vortex/nwp/tools/addons.py +22 -17
- vortex/nwp/tools/agt.py +24 -12
- vortex/nwp/tools/bdap.py +16 -5
- vortex/nwp/tools/bdcp.py +4 -1
- vortex/nwp/tools/bdm.py +3 -0
- vortex/nwp/tools/bdmp.py +14 -9
- vortex/nwp/tools/conftools.py +728 -378
- vortex/nwp/tools/drhook.py +12 -8
- vortex/nwp/tools/grib.py +65 -39
- vortex/nwp/tools/gribdiff.py +22 -17
- vortex/nwp/tools/ifstools.py +82 -42
- vortex/nwp/tools/igastuff.py +167 -143
- vortex/nwp/tools/mars.py +14 -2
- vortex/nwp/tools/odb.py +234 -125
- vortex/nwp/tools/partitioning.py +61 -37
- vortex/nwp/tools/satrad.py +27 -12
- vortex/nwp/util/async.py +83 -55
- vortex/nwp/util/beacon.py +10 -10
- vortex/nwp/util/diffpygram.py +174 -86
- vortex/nwp/util/ens.py +144 -63
- vortex/nwp/util/hooks.py +30 -19
- vortex/nwp/util/taskdeco.py +28 -24
- vortex/nwp/util/usepygram.py +278 -172
- vortex/nwp/util/usetnt.py +31 -17
- vortex/sessions.py +72 -39
- vortex/syntax/__init__.py +1 -1
- vortex/syntax/stdattrs.py +410 -171
- vortex/syntax/stddeco.py +31 -22
- vortex/toolbox.py +327 -192
- vortex/tools/__init__.py +11 -2
- vortex/tools/actions.py +125 -59
- vortex/tools/addons.py +111 -92
- vortex/tools/arm.py +42 -22
- vortex/tools/compression.py +72 -69
- vortex/tools/date.py +11 -4
- vortex/tools/delayedactions.py +242 -132
- vortex/tools/env.py +75 -47
- vortex/tools/folder.py +342 -171
- vortex/tools/grib.py +311 -149
- vortex/tools/lfi.py +423 -216
- vortex/tools/listings.py +109 -40
- vortex/tools/names.py +218 -156
- vortex/tools/net.py +632 -298
- vortex/tools/parallelism.py +93 -61
- vortex/tools/prestaging.py +55 -31
- vortex/tools/schedulers.py +172 -105
- vortex/tools/services.py +402 -333
- vortex/tools/storage.py +293 -358
- vortex/tools/surfex.py +24 -24
- vortex/tools/systems.py +1211 -631
- vortex/tools/targets.py +156 -100
- vortex/util/__init__.py +1 -1
- vortex/util/config.py +377 -327
- vortex/util/empty.py +2 -2
- vortex/util/helpers.py +56 -24
- vortex/util/introspection.py +18 -12
- vortex/util/iosponge.py +8 -4
- vortex/util/roles.py +4 -6
- vortex/util/storefunctions.py +39 -13
- vortex/util/structs.py +3 -3
- vortex/util/worker.py +29 -17
- vortex_nwp-2.0.0b2.dist-info/METADATA +66 -0
- vortex_nwp-2.0.0b2.dist-info/RECORD +142 -0
- {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.0.0b2.dist-info}/WHEEL +1 -1
- vortex/layout/appconf.py +0 -109
- vortex/layout/jobs.py +0 -1276
- vortex/layout/nodes.py +0 -1424
- vortex/layout/subjobs.py +0 -464
- vortex_nwp-2.0.0b1.dist-info/METADATA +0 -50
- vortex_nwp-2.0.0b1.dist-info/RECORD +0 -146
- {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.0.0b2.dist-info}/LICENSE +0 -0
- {vortex_nwp-2.0.0b1.dist-info → vortex_nwp-2.0.0b2.dist-info}/top_level.txt +0 -0
vortex/nwp/data/ctpini.py
CHANGED
|
@@ -22,15 +22,15 @@ class CtpiniDirectiveFile(GeoFlowResource):
|
|
|
22
22
|
"""
|
|
23
23
|
|
|
24
24
|
_footprint = dict(
|
|
25
|
-
info
|
|
26
|
-
attr
|
|
27
|
-
kind
|
|
28
|
-
values
|
|
25
|
+
info="Ctpini directive file",
|
|
26
|
+
attr=dict(
|
|
27
|
+
kind=dict(
|
|
28
|
+
values=[
|
|
29
|
+
"ctpini_directives_file",
|
|
30
|
+
],
|
|
29
31
|
),
|
|
30
|
-
nativefmt
|
|
31
|
-
|
|
32
|
-
)
|
|
33
|
-
)
|
|
32
|
+
nativefmt=dict(default="ascii"),
|
|
33
|
+
),
|
|
34
34
|
)
|
|
35
35
|
|
|
36
36
|
@property
|
|
@@ -47,8 +47,8 @@ class AsciiFiles(StaticResource):
|
|
|
47
47
|
_footprint = [
|
|
48
48
|
gvar,
|
|
49
49
|
dict(
|
|
50
|
-
info
|
|
51
|
-
)
|
|
50
|
+
info="Abstract class for ascii files from genv.",
|
|
51
|
+
),
|
|
52
52
|
]
|
|
53
53
|
|
|
54
54
|
|
|
@@ -59,21 +59,19 @@ class CtpiniAsciiFiles(AsciiFiles):
|
|
|
59
59
|
|
|
60
60
|
_footprint = [
|
|
61
61
|
dict(
|
|
62
|
-
info
|
|
63
|
-
attr
|
|
64
|
-
kind
|
|
65
|
-
values
|
|
66
|
-
),
|
|
67
|
-
source = dict(
|
|
68
|
-
values = ["levels", "covano", "fort61", "coor", "cov46"],
|
|
62
|
+
info="Ctpini Genv ascii files.",
|
|
63
|
+
attr=dict(
|
|
64
|
+
kind=dict(
|
|
65
|
+
values=["ctpini_ascii_file"],
|
|
69
66
|
),
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
source=dict(
|
|
68
|
+
values=["levels", "covano", "fort61", "coor", "cov46"],
|
|
72
69
|
),
|
|
73
|
-
|
|
74
|
-
default
|
|
70
|
+
gvar=dict(
|
|
71
|
+
default="tsr_misc_[source]",
|
|
75
72
|
),
|
|
76
|
-
|
|
73
|
+
clscontents=dict(default=DataTemplate),
|
|
74
|
+
),
|
|
77
75
|
)
|
|
78
76
|
]
|
|
79
77
|
|
|
@@ -88,31 +86,49 @@ class GridPointCtpini(GridPoint):
|
|
|
88
86
|
"""
|
|
89
87
|
|
|
90
88
|
_footprint = dict(
|
|
91
|
-
info
|
|
92
|
-
attr
|
|
93
|
-
kind
|
|
94
|
-
values
|
|
89
|
+
info="Ctpini Gridpoint Fields",
|
|
90
|
+
attr=dict(
|
|
91
|
+
kind=dict(
|
|
92
|
+
values=[
|
|
93
|
+
"ctpini_gridpoint",
|
|
94
|
+
],
|
|
95
95
|
),
|
|
96
|
-
origin
|
|
97
|
-
values
|
|
98
|
-
|
|
99
|
-
PS
|
|
100
|
-
|
|
101
|
-
|
|
96
|
+
origin=dict(
|
|
97
|
+
values=[
|
|
98
|
+
"oper",
|
|
99
|
+
"PS",
|
|
100
|
+
"dble",
|
|
101
|
+
"PX",
|
|
102
|
+
"ctpini",
|
|
103
|
+
"PTSR",
|
|
104
|
+
],
|
|
105
|
+
remap=dict(
|
|
106
|
+
PS="oper",
|
|
107
|
+
PX="dble",
|
|
108
|
+
PTSR="ctpini",
|
|
102
109
|
),
|
|
103
110
|
),
|
|
104
|
-
parameter
|
|
105
|
-
values
|
|
111
|
+
parameter=dict(
|
|
112
|
+
values=[
|
|
113
|
+
"PMERSOL",
|
|
114
|
+
"T850HPA",
|
|
115
|
+
"Z15PVU",
|
|
116
|
+
"Z20PVU",
|
|
117
|
+
"Z07PVU",
|
|
118
|
+
"TROPO",
|
|
119
|
+
],
|
|
106
120
|
),
|
|
107
|
-
run_ctpini
|
|
108
|
-
optional
|
|
109
|
-
default
|
|
121
|
+
run_ctpini=dict(
|
|
122
|
+
optional=True,
|
|
123
|
+
default=None,
|
|
110
124
|
),
|
|
111
|
-
nativefmt
|
|
112
|
-
values
|
|
113
|
-
|
|
125
|
+
nativefmt=dict(
|
|
126
|
+
values=[
|
|
127
|
+
"geo",
|
|
128
|
+
],
|
|
129
|
+
default="geo",
|
|
114
130
|
),
|
|
115
|
-
)
|
|
131
|
+
),
|
|
116
132
|
)
|
|
117
133
|
|
|
118
134
|
@property
|
|
@@ -122,12 +138,12 @@ class GridPointCtpini(GridPoint):
|
|
|
122
138
|
def namebuilding_info(self):
|
|
123
139
|
"""Generic information, radical = ``grid``."""
|
|
124
140
|
ninfo = super().namebuilding_info()
|
|
125
|
-
if self.origin ==
|
|
141
|
+
if self.origin == "ctpini" and self.run_ctpini is not None:
|
|
126
142
|
source = [self.model, self.origin, self.parameter, self.run_ctpini]
|
|
127
143
|
else:
|
|
128
144
|
source = [self.model, self.origin, self.parameter]
|
|
129
145
|
ninfo.update(
|
|
130
|
-
radical=
|
|
146
|
+
radical="ctpini-grid",
|
|
131
147
|
src=source,
|
|
132
148
|
)
|
|
133
149
|
return ninfo
|
vortex/nwp/data/diagnostics.py
CHANGED
|
@@ -6,7 +6,11 @@ import footprints
|
|
|
6
6
|
|
|
7
7
|
from vortex.data.flow import GeoFlowResource, GeoPeriodFlowResource
|
|
8
8
|
from vortex.syntax.stdattrs import term_deco
|
|
9
|
-
from vortex.syntax.stddeco import
|
|
9
|
+
from vortex.syntax.stddeco import (
|
|
10
|
+
namebuilding_append,
|
|
11
|
+
namebuilding_insert,
|
|
12
|
+
overwrite_realkind,
|
|
13
|
+
)
|
|
10
14
|
|
|
11
15
|
#: No automatic export
|
|
12
16
|
__all__ = []
|
|
@@ -16,51 +20,49 @@ class ISP(GeoFlowResource):
|
|
|
16
20
|
"""Class for Forecasted Satellite Image resource. Obsolete."""
|
|
17
21
|
|
|
18
22
|
_footprint = dict(
|
|
19
|
-
info
|
|
20
|
-
attr
|
|
21
|
-
kind
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
default
|
|
23
|
+
info="Forecasted Satellite Image",
|
|
24
|
+
attr=dict(
|
|
25
|
+
kind=dict(values=["isp", "fsi"]),
|
|
26
|
+
nativefmt=dict(
|
|
27
|
+
values=[
|
|
28
|
+
"foo",
|
|
29
|
+
],
|
|
30
|
+
default="foo",
|
|
27
31
|
),
|
|
28
|
-
)
|
|
32
|
+
),
|
|
29
33
|
)
|
|
30
34
|
|
|
31
35
|
@property
|
|
32
36
|
def realkind(self):
|
|
33
|
-
return
|
|
37
|
+
return "isp"
|
|
34
38
|
|
|
35
39
|
def archive_basename(self):
|
|
36
40
|
"""OP ARCHIVE specific naming convention."""
|
|
37
|
-
return
|
|
41
|
+
return "anim0"
|
|
38
42
|
|
|
39
43
|
def olive_basename(self):
|
|
40
44
|
"""OLIVE specific naming convention."""
|
|
41
|
-
return
|
|
45
|
+
return "ISP" + self.model[:4].upper()
|
|
42
46
|
|
|
43
47
|
|
|
44
|
-
@namebuilding_insert(
|
|
45
|
-
@namebuilding_append(
|
|
48
|
+
@namebuilding_insert("radical", lambda s: "ddh")
|
|
49
|
+
@namebuilding_append("src", lambda s: s.scope)
|
|
46
50
|
class _DDHcommon(GeoFlowResource):
|
|
47
51
|
"""
|
|
48
52
|
Abstract class for Horizontal Diagnostics.
|
|
49
53
|
"""
|
|
54
|
+
|
|
50
55
|
_abstract = True
|
|
51
56
|
_footprint = dict(
|
|
52
|
-
info
|
|
53
|
-
attr
|
|
54
|
-
kind =
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
scope = dict(
|
|
60
|
-
values = ['limited', 'dlimited', 'global', 'zonal'],
|
|
61
|
-
remap = dict(limited='dlimited')
|
|
57
|
+
info="Diagnostic on Horizontal Domains",
|
|
58
|
+
attr=dict(
|
|
59
|
+
kind=dict(values=["ddh", "dhf"], remap=dict(dhf="ddh")),
|
|
60
|
+
nativefmt=dict(),
|
|
61
|
+
scope=dict(
|
|
62
|
+
values=["limited", "dlimited", "global", "zonal"],
|
|
63
|
+
remap=dict(limited="dlimited"),
|
|
62
64
|
),
|
|
63
|
-
)
|
|
65
|
+
),
|
|
64
66
|
)
|
|
65
67
|
|
|
66
68
|
|
|
@@ -69,30 +71,35 @@ class DDH(_DDHcommon):
|
|
|
69
71
|
Class for Horizontal Diagnostics.
|
|
70
72
|
Used to be a ``dhf`` !
|
|
71
73
|
"""
|
|
74
|
+
|
|
72
75
|
_footprint = [
|
|
73
76
|
term_deco,
|
|
74
77
|
dict(
|
|
75
|
-
info
|
|
76
|
-
attr
|
|
77
|
-
nativefmt
|
|
78
|
-
values
|
|
79
|
-
default
|
|
78
|
+
info="Diagnostic on Horizontal Domains",
|
|
79
|
+
attr=dict(
|
|
80
|
+
nativefmt=dict(
|
|
81
|
+
values=["lfi", "lfa"],
|
|
82
|
+
default="lfi",
|
|
80
83
|
),
|
|
81
|
-
)
|
|
82
|
-
)
|
|
84
|
+
),
|
|
85
|
+
),
|
|
83
86
|
]
|
|
84
87
|
|
|
85
88
|
@property
|
|
86
89
|
def realkind(self):
|
|
87
|
-
return
|
|
90
|
+
return "ddh"
|
|
88
91
|
|
|
89
92
|
def archive_basename(self):
|
|
90
93
|
"""OP ARCHIVE specific naming convention."""
|
|
91
|
-
return
|
|
94
|
+
return "dhf{:s}{:s}+{:s}".format(
|
|
95
|
+
self.scope[:2].lower(), self.model[:4].lower(), self.term.fmth
|
|
96
|
+
)
|
|
92
97
|
|
|
93
98
|
def olive_basename(self):
|
|
94
99
|
"""OLIVE specific naming convention."""
|
|
95
|
-
return
|
|
100
|
+
return "DHF{:s}{:s}+{:s}".format(
|
|
101
|
+
self.scope[:2].upper(), self.model[:4].upper(), self.term.fmth
|
|
102
|
+
)
|
|
96
103
|
|
|
97
104
|
|
|
98
105
|
class DDHpack(_DDHcommon):
|
|
@@ -100,43 +107,56 @@ class DDHpack(_DDHcommon):
|
|
|
100
107
|
Class for Horizontal Diagnostics with all terms packed in a single directory.
|
|
101
108
|
Used to be a ``dhf`` !
|
|
102
109
|
"""
|
|
110
|
+
|
|
103
111
|
_footprint = dict(
|
|
104
|
-
info
|
|
105
|
-
attr
|
|
106
|
-
nativefmt
|
|
107
|
-
values
|
|
112
|
+
info="Diagnostic on Horizontal Domains packed in a single directory",
|
|
113
|
+
attr=dict(
|
|
114
|
+
nativefmt=dict(
|
|
115
|
+
values=[
|
|
116
|
+
"ddhpack",
|
|
117
|
+
],
|
|
108
118
|
),
|
|
109
|
-
)
|
|
119
|
+
),
|
|
110
120
|
)
|
|
111
121
|
|
|
112
122
|
def olive_basename(self):
|
|
113
123
|
"""OLIVE specific naming convention."""
|
|
114
|
-
return
|
|
124
|
+
return "DHF{:s}{:s}.tar".format(
|
|
125
|
+
self.scope[:2].upper(), self.model[:4].upper()
|
|
126
|
+
)
|
|
115
127
|
|
|
116
128
|
@property
|
|
117
129
|
def realkind(self):
|
|
118
|
-
return
|
|
130
|
+
return "ddhpack"
|
|
119
131
|
|
|
120
132
|
|
|
121
133
|
_surfex_diag_decofp = footprints.DecorativeFootprint(
|
|
122
|
-
info=
|
|
134
|
+
info="Diagnostic files outputed by surfex during a model run",
|
|
123
135
|
attr=dict(
|
|
124
136
|
kind=dict(
|
|
125
|
-
values=[
|
|
126
|
-
|
|
127
|
-
|
|
137
|
+
values=[
|
|
138
|
+
"diagnostics",
|
|
139
|
+
]
|
|
128
140
|
),
|
|
141
|
+
scope=dict(),
|
|
129
142
|
model=dict(
|
|
130
|
-
values=[
|
|
143
|
+
values=[
|
|
144
|
+
"surfex",
|
|
145
|
+
]
|
|
131
146
|
),
|
|
132
147
|
nativefmt=dict(
|
|
133
|
-
values=[
|
|
134
|
-
|
|
135
|
-
|
|
148
|
+
values=[
|
|
149
|
+
"netcdf",
|
|
150
|
+
"grib",
|
|
151
|
+
],
|
|
152
|
+
default="netcdf",
|
|
153
|
+
optional=True,
|
|
136
154
|
),
|
|
137
155
|
),
|
|
138
|
-
decorator=[
|
|
139
|
-
|
|
156
|
+
decorator=[
|
|
157
|
+
namebuilding_append("src", lambda s: s.scope),
|
|
158
|
+
overwrite_realkind("diagnostics"),
|
|
159
|
+
],
|
|
140
160
|
)
|
|
141
161
|
|
|
142
162
|
|
|
@@ -149,33 +169,41 @@ class SurfexDiagnostics(GeoFlowResource):
|
|
|
149
169
|
class SurfexPeriodDiagnostics(GeoPeriodFlowResource):
|
|
150
170
|
"""Diagnostic files outputed by surfex during a model run (period version)."""
|
|
151
171
|
|
|
152
|
-
_footprint = [
|
|
172
|
+
_footprint = [
|
|
173
|
+
_surfex_diag_decofp,
|
|
174
|
+
]
|
|
153
175
|
|
|
154
176
|
|
|
155
177
|
class ObjTrack(GeoFlowResource):
|
|
156
178
|
"""Class for Object Tracks."""
|
|
157
179
|
|
|
158
180
|
_footprint = dict(
|
|
159
|
-
info
|
|
160
|
-
attr
|
|
161
|
-
kind
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
181
|
+
info="Object Tracks json file",
|
|
182
|
+
attr=dict(
|
|
183
|
+
kind=dict(values=["objtrack"]),
|
|
184
|
+
nativefmt=dict(
|
|
185
|
+
values=[
|
|
186
|
+
"json",
|
|
187
|
+
"hdf5",
|
|
188
|
+
"foo",
|
|
189
|
+
],
|
|
190
|
+
default="foo",
|
|
167
191
|
),
|
|
168
|
-
)
|
|
192
|
+
),
|
|
169
193
|
)
|
|
170
194
|
|
|
171
195
|
@property
|
|
172
196
|
def realkind(self):
|
|
173
|
-
return
|
|
197
|
+
return "objtrack"
|
|
174
198
|
|
|
175
199
|
def archive_basename(self):
|
|
176
200
|
"""OP ARCHIVE specific naming convention."""
|
|
177
|
-
return
|
|
201
|
+
return "track{:s}{:s}+{:s}".format(
|
|
202
|
+
self.scope[:2].lower(), self.model[:4].lower(), self.term.fmth
|
|
203
|
+
)
|
|
178
204
|
|
|
179
205
|
def olive_basename(self):
|
|
180
206
|
"""OLIVE specific naming convention."""
|
|
181
|
-
return
|
|
207
|
+
return "track{:s}{:s}+{:s}".format(
|
|
208
|
+
self.scope[:2].upper(), self.model[:4].upper(), self.term.fmth
|
|
209
|
+
)
|
vortex/nwp/data/eda.py
CHANGED
|
@@ -16,7 +16,9 @@ __all__ = []
|
|
|
16
16
|
logger = loggers.getLogger(__name__)
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
@namebuilding_insert(
|
|
19
|
+
@namebuilding_insert(
|
|
20
|
+
"geo", lambda s: s._geo2basename_info(add_stretching=False)
|
|
21
|
+
)
|
|
20
22
|
class RawFiles(GeoFlowResource):
|
|
21
23
|
"""Input files for wavelet covariances estimation. To be removed soon."""
|
|
22
24
|
|
|
@@ -24,23 +26,21 @@ class RawFiles(GeoFlowResource):
|
|
|
24
26
|
term_deco,
|
|
25
27
|
gvar,
|
|
26
28
|
dict(
|
|
27
|
-
info
|
|
28
|
-
attr
|
|
29
|
-
kind
|
|
30
|
-
values
|
|
29
|
+
info="Input files for wavelet covariances estimation",
|
|
30
|
+
attr=dict(
|
|
31
|
+
kind=dict(
|
|
32
|
+
values=["rawfiles"],
|
|
31
33
|
),
|
|
32
|
-
nativefmt
|
|
33
|
-
values
|
|
34
|
+
nativefmt=dict(
|
|
35
|
+
values=["rawfiles", "unknown"],
|
|
34
36
|
),
|
|
35
|
-
gvar
|
|
36
|
-
|
|
37
|
+
gvar=dict(default="aearp_rawfiles_t[geometry:truncation]"),
|
|
38
|
+
ipert=dict(
|
|
39
|
+
type=int,
|
|
40
|
+
optional=True,
|
|
37
41
|
),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
optional = True,
|
|
41
|
-
),
|
|
42
|
-
)
|
|
43
|
-
)
|
|
42
|
+
),
|
|
43
|
+
),
|
|
44
44
|
]
|
|
45
45
|
|
|
46
46
|
@property
|
|
@@ -49,7 +49,9 @@ class RawFiles(GeoFlowResource):
|
|
|
49
49
|
|
|
50
50
|
def archive_basename(self):
|
|
51
51
|
"""OP ARCHIVE specific naming convention."""
|
|
52
|
-
return
|
|
52
|
+
return "RAWFILEP(memberfix:member)+{:s}.{:d}".format(
|
|
53
|
+
self.term.fmthour, self.geometry.truncation
|
|
54
|
+
)
|
|
53
55
|
|
|
54
56
|
def olive_basename(self):
|
|
55
57
|
"""OLIVE specific naming convention."""
|
|
@@ -58,11 +60,13 @@ class RawFiles(GeoFlowResource):
|
|
|
58
60
|
def gget_basename(self):
|
|
59
61
|
"""GGET specific naming convention."""
|
|
60
62
|
if self.ipert is None:
|
|
61
|
-
raise ValueError(
|
|
62
|
-
return dict(suffix=
|
|
63
|
+
raise ValueError("ipert is mandatory with the GCO provider")
|
|
64
|
+
return dict(suffix=".{:03d}.tar".format(self.ipert))
|
|
63
65
|
|
|
64
66
|
|
|
65
|
-
@namebuilding_insert(
|
|
67
|
+
@namebuilding_insert(
|
|
68
|
+
"geo", lambda s: s._geo2basename_info(add_stretching=False)
|
|
69
|
+
)
|
|
66
70
|
class RandBFiles(GeoFlowResource):
|
|
67
71
|
"""Input files for wavelet covariances estimation."""
|
|
68
72
|
|
|
@@ -70,33 +74,33 @@ class RandBFiles(GeoFlowResource):
|
|
|
70
74
|
term_deco,
|
|
71
75
|
gvar,
|
|
72
76
|
dict(
|
|
73
|
-
info
|
|
74
|
-
attr
|
|
75
|
-
kind
|
|
76
|
-
values
|
|
77
|
-
remap
|
|
78
|
-
),
|
|
79
|
-
nativefmt = dict(
|
|
80
|
-
values = ['fa', 'unknown'],
|
|
77
|
+
info="Input files for wavelet covariances estimation",
|
|
78
|
+
attr=dict(
|
|
79
|
+
kind=dict(
|
|
80
|
+
values=["randbfiles", "famembers"],
|
|
81
|
+
remap=dict(autoremap="first"),
|
|
81
82
|
),
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
nativefmt=dict(
|
|
84
|
+
values=["fa", "unknown"],
|
|
84
85
|
),
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
gvar=dict(default="aearp_randb_t[geometry:truncation]"),
|
|
87
|
+
ipert=dict(
|
|
88
|
+
type=int,
|
|
89
|
+
optional=True,
|
|
88
90
|
),
|
|
89
|
-
)
|
|
90
|
-
)
|
|
91
|
+
),
|
|
92
|
+
),
|
|
91
93
|
]
|
|
92
94
|
|
|
93
95
|
@property
|
|
94
96
|
def realkind(self):
|
|
95
|
-
return
|
|
97
|
+
return "randbfiles"
|
|
96
98
|
|
|
97
99
|
def archive_basename(self):
|
|
98
100
|
"""OP ARCHIVE specific naming convention."""
|
|
99
|
-
return
|
|
101
|
+
return "famember(memberfix:member)+{:s}.{:d}".format(
|
|
102
|
+
self.term.fmthour, self.geometry.truncation
|
|
103
|
+
)
|
|
100
104
|
|
|
101
105
|
def olive_basename(self):
|
|
102
106
|
"""OLIVE specific naming convention."""
|
|
@@ -105,8 +109,8 @@ class RandBFiles(GeoFlowResource):
|
|
|
105
109
|
def gget_basename(self):
|
|
106
110
|
"""GGET specific naming convention."""
|
|
107
111
|
if self.ipert is None:
|
|
108
|
-
raise ValueError(
|
|
109
|
-
return dict(suffix=
|
|
112
|
+
raise ValueError("ipert is mandatory with the GCO provider")
|
|
113
|
+
return dict(suffix=".{:03d}.{}".format(self.ipert, "fa"))
|
|
110
114
|
|
|
111
115
|
|
|
112
116
|
class InflationFactor(_BackgroundErrorInfo):
|
|
@@ -115,29 +119,24 @@ class InflationFactor(_BackgroundErrorInfo):
|
|
|
115
119
|
"""
|
|
116
120
|
|
|
117
121
|
_footprint = dict(
|
|
118
|
-
info=
|
|
122
|
+
info="Inflation factor profiles",
|
|
119
123
|
attr=dict(
|
|
120
124
|
kind=dict(
|
|
121
|
-
values=[
|
|
122
|
-
remap=dict(autoremap=
|
|
123
|
-
),
|
|
124
|
-
gvar = dict(
|
|
125
|
-
default = 'inflation_factor'
|
|
125
|
+
values=["infl_factor", "infl", "inflation_factor"],
|
|
126
|
+
remap=dict(autoremap="first"),
|
|
126
127
|
),
|
|
128
|
+
gvar=dict(default="inflation_factor"),
|
|
127
129
|
nativefmt=dict(
|
|
128
|
-
values=[
|
|
129
|
-
default=
|
|
130
|
-
),
|
|
131
|
-
term=dict(
|
|
132
|
-
optional=True,
|
|
133
|
-
default=3
|
|
130
|
+
values=["ascii"],
|
|
131
|
+
default="ascii",
|
|
134
132
|
),
|
|
133
|
+
term=dict(optional=True, default=3),
|
|
135
134
|
),
|
|
136
135
|
)
|
|
137
136
|
|
|
138
137
|
@property
|
|
139
138
|
def realkind(self):
|
|
140
|
-
return
|
|
139
|
+
return "inflation_factor"
|
|
141
140
|
|
|
142
141
|
def archive_basename(self):
|
|
143
142
|
"""OP ARCHIVE specific naming convention."""
|