vortex-nwp 2.0.0b1__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 +135 -0
- vortex/algo/__init__.py +12 -0
- vortex/algo/components.py +2136 -0
- vortex/algo/mpitools.py +1648 -0
- vortex/algo/mpitools_templates/envelope_wrapper_default.tpl +27 -0
- vortex/algo/mpitools_templates/envelope_wrapper_mpiauto.tpl +29 -0
- vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl +18 -0
- vortex/algo/serversynctools.py +170 -0
- vortex/config.py +115 -0
- vortex/data/__init__.py +13 -0
- vortex/data/abstractstores.py +1572 -0
- vortex/data/containers.py +780 -0
- vortex/data/contents.py +596 -0
- vortex/data/executables.py +284 -0
- vortex/data/flow.py +113 -0
- vortex/data/geometries.ini +2689 -0
- vortex/data/geometries.py +703 -0
- vortex/data/handlers.py +1021 -0
- vortex/data/outflow.py +67 -0
- vortex/data/providers.py +465 -0
- vortex/data/resources.py +201 -0
- vortex/data/stores.py +1271 -0
- vortex/gloves.py +282 -0
- vortex/layout/__init__.py +27 -0
- vortex/layout/appconf.py +109 -0
- vortex/layout/contexts.py +511 -0
- vortex/layout/dataflow.py +1069 -0
- vortex/layout/jobs.py +1276 -0
- vortex/layout/monitor.py +833 -0
- vortex/layout/nodes.py +1424 -0
- vortex/layout/subjobs.py +464 -0
- vortex/nwp/__init__.py +11 -0
- vortex/nwp/algo/__init__.py +12 -0
- vortex/nwp/algo/assim.py +483 -0
- vortex/nwp/algo/clim.py +920 -0
- vortex/nwp/algo/coupling.py +609 -0
- vortex/nwp/algo/eda.py +632 -0
- vortex/nwp/algo/eps.py +613 -0
- vortex/nwp/algo/forecasts.py +745 -0
- vortex/nwp/algo/fpserver.py +927 -0
- vortex/nwp/algo/ifsnaming.py +403 -0
- vortex/nwp/algo/ifsroot.py +311 -0
- vortex/nwp/algo/monitoring.py +202 -0
- vortex/nwp/algo/mpitools.py +554 -0
- vortex/nwp/algo/odbtools.py +974 -0
- vortex/nwp/algo/oopsroot.py +735 -0
- vortex/nwp/algo/oopstests.py +186 -0
- vortex/nwp/algo/request.py +579 -0
- vortex/nwp/algo/stdpost.py +1285 -0
- vortex/nwp/data/__init__.py +12 -0
- vortex/nwp/data/assim.py +392 -0
- vortex/nwp/data/boundaries.py +261 -0
- vortex/nwp/data/climfiles.py +539 -0
- vortex/nwp/data/configfiles.py +149 -0
- vortex/nwp/data/consts.py +929 -0
- vortex/nwp/data/ctpini.py +133 -0
- vortex/nwp/data/diagnostics.py +181 -0
- vortex/nwp/data/eda.py +148 -0
- vortex/nwp/data/eps.py +383 -0
- vortex/nwp/data/executables.py +1039 -0
- vortex/nwp/data/fields.py +96 -0
- vortex/nwp/data/gridfiles.py +308 -0
- vortex/nwp/data/logs.py +551 -0
- vortex/nwp/data/modelstates.py +334 -0
- vortex/nwp/data/monitoring.py +220 -0
- vortex/nwp/data/namelists.py +644 -0
- vortex/nwp/data/obs.py +748 -0
- vortex/nwp/data/oopsexec.py +72 -0
- vortex/nwp/data/providers.py +182 -0
- vortex/nwp/data/query.py +217 -0
- vortex/nwp/data/stores.py +147 -0
- vortex/nwp/data/surfex.py +338 -0
- vortex/nwp/syntax/__init__.py +9 -0
- vortex/nwp/syntax/stdattrs.py +375 -0
- vortex/nwp/tools/__init__.py +10 -0
- vortex/nwp/tools/addons.py +35 -0
- vortex/nwp/tools/agt.py +55 -0
- vortex/nwp/tools/bdap.py +48 -0
- vortex/nwp/tools/bdcp.py +38 -0
- vortex/nwp/tools/bdm.py +21 -0
- vortex/nwp/tools/bdmp.py +49 -0
- vortex/nwp/tools/conftools.py +1311 -0
- vortex/nwp/tools/drhook.py +62 -0
- vortex/nwp/tools/grib.py +268 -0
- vortex/nwp/tools/gribdiff.py +99 -0
- vortex/nwp/tools/ifstools.py +163 -0
- vortex/nwp/tools/igastuff.py +249 -0
- vortex/nwp/tools/mars.py +56 -0
- vortex/nwp/tools/odb.py +548 -0
- vortex/nwp/tools/partitioning.py +234 -0
- vortex/nwp/tools/satrad.py +56 -0
- vortex/nwp/util/__init__.py +6 -0
- vortex/nwp/util/async.py +184 -0
- vortex/nwp/util/beacon.py +40 -0
- vortex/nwp/util/diffpygram.py +359 -0
- vortex/nwp/util/ens.py +198 -0
- vortex/nwp/util/hooks.py +128 -0
- vortex/nwp/util/taskdeco.py +81 -0
- vortex/nwp/util/usepygram.py +591 -0
- vortex/nwp/util/usetnt.py +87 -0
- vortex/proxy.py +6 -0
- vortex/sessions.py +341 -0
- vortex/syntax/__init__.py +9 -0
- vortex/syntax/stdattrs.py +628 -0
- vortex/syntax/stddeco.py +176 -0
- vortex/toolbox.py +982 -0
- vortex/tools/__init__.py +11 -0
- vortex/tools/actions.py +457 -0
- vortex/tools/addons.py +297 -0
- vortex/tools/arm.py +76 -0
- vortex/tools/compression.py +322 -0
- vortex/tools/date.py +20 -0
- vortex/tools/ddhpack.py +10 -0
- vortex/tools/delayedactions.py +672 -0
- vortex/tools/env.py +513 -0
- vortex/tools/folder.py +663 -0
- vortex/tools/grib.py +559 -0
- vortex/tools/lfi.py +746 -0
- vortex/tools/listings.py +354 -0
- vortex/tools/names.py +575 -0
- vortex/tools/net.py +1790 -0
- vortex/tools/odb.py +10 -0
- vortex/tools/parallelism.py +336 -0
- vortex/tools/prestaging.py +186 -0
- vortex/tools/rawfiles.py +10 -0
- vortex/tools/schedulers.py +413 -0
- vortex/tools/services.py +871 -0
- vortex/tools/storage.py +1061 -0
- vortex/tools/surfex.py +61 -0
- vortex/tools/systems.py +3396 -0
- vortex/tools/targets.py +384 -0
- vortex/util/__init__.py +9 -0
- vortex/util/config.py +1071 -0
- vortex/util/empty.py +24 -0
- vortex/util/helpers.py +184 -0
- vortex/util/introspection.py +63 -0
- vortex/util/iosponge.py +76 -0
- vortex/util/roles.py +51 -0
- vortex/util/storefunctions.py +103 -0
- vortex/util/structs.py +26 -0
- vortex/util/worker.py +150 -0
- vortex_nwp-2.0.0b1.dist-info/LICENSE +517 -0
- vortex_nwp-2.0.0b1.dist-info/METADATA +50 -0
- vortex_nwp-2.0.0b1.dist-info/RECORD +146 -0
- vortex_nwp-2.0.0b1.dist-info/WHEEL +5 -0
- vortex_nwp-2.0.0b1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Ctpini files.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from bronx.fancies import loggers
|
|
6
|
+
|
|
7
|
+
from vortex.data.outflow import StaticResource
|
|
8
|
+
from vortex.data.flow import GeoFlowResource
|
|
9
|
+
from ..syntax.stdattrs import gvar
|
|
10
|
+
from vortex.data.contents import DataTemplate
|
|
11
|
+
from .gridfiles import GridPoint
|
|
12
|
+
|
|
13
|
+
#: No automatic export
|
|
14
|
+
__all__ = []
|
|
15
|
+
|
|
16
|
+
logger = loggers.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class CtpiniDirectiveFile(GeoFlowResource):
|
|
20
|
+
"""
|
|
21
|
+
Class dealing with Ctpini directive file.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
_footprint = dict(
|
|
25
|
+
info = "Ctpini directive file",
|
|
26
|
+
attr = dict(
|
|
27
|
+
kind = dict(
|
|
28
|
+
values = ["ctpini_directives_file", ],
|
|
29
|
+
),
|
|
30
|
+
nativefmt = dict(
|
|
31
|
+
default = "ascii"
|
|
32
|
+
)
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def realkind(self):
|
|
38
|
+
return "ctpini_directives_file"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class AsciiFiles(StaticResource):
|
|
42
|
+
"""
|
|
43
|
+
Class to deal with miscellaneous ascii files coming from genv.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
_abstract = True
|
|
47
|
+
_footprint = [
|
|
48
|
+
gvar,
|
|
49
|
+
dict(
|
|
50
|
+
info = 'Abstract class for ascii files from genv.',
|
|
51
|
+
)
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class CtpiniAsciiFiles(AsciiFiles):
|
|
56
|
+
"""
|
|
57
|
+
Class to deal with Genv Ctpini ascii files.
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
_footprint = [
|
|
61
|
+
dict(
|
|
62
|
+
info = "Ctpini Genv ascii files.",
|
|
63
|
+
attr = dict(
|
|
64
|
+
kind = dict(
|
|
65
|
+
values = ["ctpini_ascii_file"],
|
|
66
|
+
),
|
|
67
|
+
source = dict(
|
|
68
|
+
values = ["levels", "covano", "fort61", "coor", "cov46"],
|
|
69
|
+
),
|
|
70
|
+
gvar = dict(
|
|
71
|
+
default = "tsr_misc_[source]",
|
|
72
|
+
),
|
|
73
|
+
clscontents=dict(
|
|
74
|
+
default = DataTemplate
|
|
75
|
+
),
|
|
76
|
+
)
|
|
77
|
+
)
|
|
78
|
+
]
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def realkind(self):
|
|
82
|
+
return "ctpini_ascii_file"
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class GridPointCtpini(GridPoint):
|
|
86
|
+
"""
|
|
87
|
+
Class to deal with Gridpoint files used as input in Ctpini.
|
|
88
|
+
"""
|
|
89
|
+
|
|
90
|
+
_footprint = dict(
|
|
91
|
+
info = 'Ctpini Gridpoint Fields',
|
|
92
|
+
attr = dict(
|
|
93
|
+
kind = dict(
|
|
94
|
+
values = ['ctpini_gridpoint', ],
|
|
95
|
+
),
|
|
96
|
+
origin = dict(
|
|
97
|
+
values = ['oper', 'PS', 'dble', 'PX', 'ctpini', 'PTSR', ],
|
|
98
|
+
remap = dict(
|
|
99
|
+
PS = 'oper',
|
|
100
|
+
PX = 'dble',
|
|
101
|
+
PTSR = 'ctpini',
|
|
102
|
+
),
|
|
103
|
+
),
|
|
104
|
+
parameter = dict(
|
|
105
|
+
values = ['PMERSOL', 'T850HPA', 'Z15PVU', 'Z20PVU', 'Z07PVU', 'TROPO'],
|
|
106
|
+
),
|
|
107
|
+
run_ctpini = dict(
|
|
108
|
+
optional = True,
|
|
109
|
+
default = None,
|
|
110
|
+
),
|
|
111
|
+
nativefmt = dict(
|
|
112
|
+
values = ['geo', ],
|
|
113
|
+
default = 'geo',
|
|
114
|
+
),
|
|
115
|
+
)
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
@property
|
|
119
|
+
def realkind(self):
|
|
120
|
+
return "ctpini_gridpoint"
|
|
121
|
+
|
|
122
|
+
def namebuilding_info(self):
|
|
123
|
+
"""Generic information, radical = ``grid``."""
|
|
124
|
+
ninfo = super().namebuilding_info()
|
|
125
|
+
if self.origin == 'ctpini' and self.run_ctpini is not None:
|
|
126
|
+
source = [self.model, self.origin, self.parameter, self.run_ctpini]
|
|
127
|
+
else:
|
|
128
|
+
source = [self.model, self.origin, self.parameter]
|
|
129
|
+
ninfo.update(
|
|
130
|
+
radical='ctpini-grid',
|
|
131
|
+
src=source,
|
|
132
|
+
)
|
|
133
|
+
return ninfo
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"""
|
|
2
|
+
TODO: Module documentation.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import footprints
|
|
6
|
+
|
|
7
|
+
from vortex.data.flow import GeoFlowResource, GeoPeriodFlowResource
|
|
8
|
+
from vortex.syntax.stdattrs import term_deco
|
|
9
|
+
from vortex.syntax.stddeco import namebuilding_append, namebuilding_insert, overwrite_realkind
|
|
10
|
+
|
|
11
|
+
#: No automatic export
|
|
12
|
+
__all__ = []
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ISP(GeoFlowResource):
|
|
16
|
+
"""Class for Forecasted Satellite Image resource. Obsolete."""
|
|
17
|
+
|
|
18
|
+
_footprint = dict(
|
|
19
|
+
info = 'Forecasted Satellite Image',
|
|
20
|
+
attr = dict(
|
|
21
|
+
kind = dict(
|
|
22
|
+
values = ['isp', 'fsi']
|
|
23
|
+
),
|
|
24
|
+
nativefmt = dict(
|
|
25
|
+
values = ['foo', ],
|
|
26
|
+
default = 'foo',
|
|
27
|
+
),
|
|
28
|
+
)
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def realkind(self):
|
|
33
|
+
return 'isp'
|
|
34
|
+
|
|
35
|
+
def archive_basename(self):
|
|
36
|
+
"""OP ARCHIVE specific naming convention."""
|
|
37
|
+
return 'anim0'
|
|
38
|
+
|
|
39
|
+
def olive_basename(self):
|
|
40
|
+
"""OLIVE specific naming convention."""
|
|
41
|
+
return 'ISP' + self.model[:4].upper()
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@namebuilding_insert('radical', lambda s: 'ddh')
|
|
45
|
+
@namebuilding_append('src', lambda s: s.scope)
|
|
46
|
+
class _DDHcommon(GeoFlowResource):
|
|
47
|
+
"""
|
|
48
|
+
Abstract class for Horizontal Diagnostics.
|
|
49
|
+
"""
|
|
50
|
+
_abstract = True
|
|
51
|
+
_footprint = dict(
|
|
52
|
+
info = 'Diagnostic on Horizontal Domains',
|
|
53
|
+
attr = dict(
|
|
54
|
+
kind = dict(
|
|
55
|
+
values = ['ddh', 'dhf'],
|
|
56
|
+
remap = dict(dhf='ddh')
|
|
57
|
+
),
|
|
58
|
+
nativefmt = dict(),
|
|
59
|
+
scope = dict(
|
|
60
|
+
values = ['limited', 'dlimited', 'global', 'zonal'],
|
|
61
|
+
remap = dict(limited='dlimited')
|
|
62
|
+
),
|
|
63
|
+
)
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class DDH(_DDHcommon):
|
|
68
|
+
"""
|
|
69
|
+
Class for Horizontal Diagnostics.
|
|
70
|
+
Used to be a ``dhf`` !
|
|
71
|
+
"""
|
|
72
|
+
_footprint = [
|
|
73
|
+
term_deco,
|
|
74
|
+
dict(
|
|
75
|
+
info = 'Diagnostic on Horizontal Domains',
|
|
76
|
+
attr = dict(
|
|
77
|
+
nativefmt = dict(
|
|
78
|
+
values = ['lfi', 'lfa'],
|
|
79
|
+
default = 'lfi',
|
|
80
|
+
),
|
|
81
|
+
)
|
|
82
|
+
)
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def realkind(self):
|
|
87
|
+
return 'ddh'
|
|
88
|
+
|
|
89
|
+
def archive_basename(self):
|
|
90
|
+
"""OP ARCHIVE specific naming convention."""
|
|
91
|
+
return 'dhf{:s}{:s}+{:s}'.format(self.scope[:2].lower(), self.model[:4].lower(), self.term.fmth)
|
|
92
|
+
|
|
93
|
+
def olive_basename(self):
|
|
94
|
+
"""OLIVE specific naming convention."""
|
|
95
|
+
return 'DHF{:s}{:s}+{:s}'.format(self.scope[:2].upper(), self.model[:4].upper(), self.term.fmth)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class DDHpack(_DDHcommon):
|
|
99
|
+
"""
|
|
100
|
+
Class for Horizontal Diagnostics with all terms packed in a single directory.
|
|
101
|
+
Used to be a ``dhf`` !
|
|
102
|
+
"""
|
|
103
|
+
_footprint = dict(
|
|
104
|
+
info = 'Diagnostic on Horizontal Domains packed in a single directory',
|
|
105
|
+
attr = dict(
|
|
106
|
+
nativefmt = dict(
|
|
107
|
+
values = ['ddhpack', ],
|
|
108
|
+
),
|
|
109
|
+
)
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
def olive_basename(self):
|
|
113
|
+
"""OLIVE specific naming convention."""
|
|
114
|
+
return 'DHF{:s}{:s}.tar'.format(self.scope[:2].upper(), self.model[:4].upper())
|
|
115
|
+
|
|
116
|
+
@property
|
|
117
|
+
def realkind(self):
|
|
118
|
+
return 'ddhpack'
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
_surfex_diag_decofp = footprints.DecorativeFootprint(
|
|
122
|
+
info='Diagnostic files outputed by surfex during a model run',
|
|
123
|
+
attr=dict(
|
|
124
|
+
kind=dict(
|
|
125
|
+
values=['diagnostics', ]
|
|
126
|
+
),
|
|
127
|
+
scope=dict(
|
|
128
|
+
),
|
|
129
|
+
model=dict(
|
|
130
|
+
values=['surfex', ]
|
|
131
|
+
),
|
|
132
|
+
nativefmt=dict(
|
|
133
|
+
values=['netcdf', 'grib', ],
|
|
134
|
+
default='netcdf',
|
|
135
|
+
optional=True
|
|
136
|
+
),
|
|
137
|
+
),
|
|
138
|
+
decorator=[namebuilding_append('src', lambda s: s.scope),
|
|
139
|
+
overwrite_realkind('diagnostics')]
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
class SurfexDiagnostics(GeoFlowResource):
|
|
144
|
+
"""Diagnostic files outputed by surfex during a model run (date/term version)."""
|
|
145
|
+
|
|
146
|
+
_footprint = [_surfex_diag_decofp, term_deco]
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
class SurfexPeriodDiagnostics(GeoPeriodFlowResource):
|
|
150
|
+
"""Diagnostic files outputed by surfex during a model run (period version)."""
|
|
151
|
+
|
|
152
|
+
_footprint = [_surfex_diag_decofp, ]
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
class ObjTrack(GeoFlowResource):
|
|
156
|
+
"""Class for Object Tracks."""
|
|
157
|
+
|
|
158
|
+
_footprint = dict(
|
|
159
|
+
info = 'Object Tracks json file',
|
|
160
|
+
attr = dict(
|
|
161
|
+
kind = dict(
|
|
162
|
+
values = ['objtrack']
|
|
163
|
+
),
|
|
164
|
+
nativefmt = dict(
|
|
165
|
+
values = ['json', 'hdf5', 'foo', ],
|
|
166
|
+
default = 'foo',
|
|
167
|
+
),
|
|
168
|
+
)
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
@property
|
|
172
|
+
def realkind(self):
|
|
173
|
+
return 'objtrack'
|
|
174
|
+
|
|
175
|
+
def archive_basename(self):
|
|
176
|
+
"""OP ARCHIVE specific naming convention."""
|
|
177
|
+
return 'track{:s}{:s}+{:s}'.format(self.scope[:2].lower(), self.model[:4].lower(), self.term.fmth)
|
|
178
|
+
|
|
179
|
+
def olive_basename(self):
|
|
180
|
+
"""OLIVE specific naming convention."""
|
|
181
|
+
return 'track{:s}{:s}+{:s}'.format(self.scope[:2].upper(), self.model[:4].upper(), self.term.fmth)
|
vortex/nwp/data/eda.py
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Resources needed to build the Ensemble Data Assimilation system.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from bronx.fancies import loggers
|
|
6
|
+
|
|
7
|
+
from vortex.data.flow import GeoFlowResource
|
|
8
|
+
from .assim import _BackgroundErrorInfo
|
|
9
|
+
from vortex.syntax.stdattrs import term_deco
|
|
10
|
+
from vortex.syntax.stddeco import namebuilding_insert
|
|
11
|
+
from ..syntax.stdattrs import gvar
|
|
12
|
+
|
|
13
|
+
#: Automatic export off
|
|
14
|
+
__all__ = []
|
|
15
|
+
|
|
16
|
+
logger = loggers.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@namebuilding_insert('geo', lambda s: s._geo2basename_info(add_stretching=False))
|
|
20
|
+
class RawFiles(GeoFlowResource):
|
|
21
|
+
"""Input files for wavelet covariances estimation. To be removed soon."""
|
|
22
|
+
|
|
23
|
+
_footprint = [
|
|
24
|
+
term_deco,
|
|
25
|
+
gvar,
|
|
26
|
+
dict(
|
|
27
|
+
info = 'Input files for wavelet covariances estimation',
|
|
28
|
+
attr = dict(
|
|
29
|
+
kind = dict(
|
|
30
|
+
values = ['rawfiles'],
|
|
31
|
+
),
|
|
32
|
+
nativefmt = dict(
|
|
33
|
+
values = ['rawfiles', 'unknown'],
|
|
34
|
+
),
|
|
35
|
+
gvar = dict(
|
|
36
|
+
default = 'aearp_rawfiles_t[geometry:truncation]'
|
|
37
|
+
),
|
|
38
|
+
ipert = dict(
|
|
39
|
+
type = int,
|
|
40
|
+
optional = True,
|
|
41
|
+
),
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
@property
|
|
47
|
+
def realkind(self):
|
|
48
|
+
return self.kind
|
|
49
|
+
|
|
50
|
+
def archive_basename(self):
|
|
51
|
+
"""OP ARCHIVE specific naming convention."""
|
|
52
|
+
return 'RAWFILEP(memberfix:member)+{:s}.{:d}'.format(self.term.fmthour, self.geometry.truncation)
|
|
53
|
+
|
|
54
|
+
def olive_basename(self):
|
|
55
|
+
"""OLIVE specific naming convention."""
|
|
56
|
+
raise NotImplementedError()
|
|
57
|
+
|
|
58
|
+
def gget_basename(self):
|
|
59
|
+
"""GGET specific naming convention."""
|
|
60
|
+
if self.ipert is None:
|
|
61
|
+
raise ValueError('ipert is mandatory with the GCO provider')
|
|
62
|
+
return dict(suffix='.{:03d}.tar'.format(self.ipert))
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@namebuilding_insert('geo', lambda s: s._geo2basename_info(add_stretching=False))
|
|
66
|
+
class RandBFiles(GeoFlowResource):
|
|
67
|
+
"""Input files for wavelet covariances estimation."""
|
|
68
|
+
|
|
69
|
+
_footprint = [
|
|
70
|
+
term_deco,
|
|
71
|
+
gvar,
|
|
72
|
+
dict(
|
|
73
|
+
info = 'Input files for wavelet covariances estimation',
|
|
74
|
+
attr = dict(
|
|
75
|
+
kind = dict(
|
|
76
|
+
values = ['randbfiles', 'famembers'],
|
|
77
|
+
remap = dict(autoremap = 'first')
|
|
78
|
+
),
|
|
79
|
+
nativefmt = dict(
|
|
80
|
+
values = ['fa', 'unknown'],
|
|
81
|
+
),
|
|
82
|
+
gvar = dict(
|
|
83
|
+
default = 'aearp_randb_t[geometry:truncation]'
|
|
84
|
+
),
|
|
85
|
+
ipert = dict(
|
|
86
|
+
type = int,
|
|
87
|
+
optional = True,
|
|
88
|
+
),
|
|
89
|
+
)
|
|
90
|
+
)
|
|
91
|
+
]
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def realkind(self):
|
|
95
|
+
return 'randbfiles'
|
|
96
|
+
|
|
97
|
+
def archive_basename(self):
|
|
98
|
+
"""OP ARCHIVE specific naming convention."""
|
|
99
|
+
return 'famember(memberfix:member)+{:s}.{:d}'.format(self.term.fmthour, self.geometry.truncation)
|
|
100
|
+
|
|
101
|
+
def olive_basename(self):
|
|
102
|
+
"""OLIVE specific naming convention."""
|
|
103
|
+
raise NotImplementedError()
|
|
104
|
+
|
|
105
|
+
def gget_basename(self):
|
|
106
|
+
"""GGET specific naming convention."""
|
|
107
|
+
if self.ipert is None:
|
|
108
|
+
raise ValueError('ipert is mandatory with the GCO provider')
|
|
109
|
+
return dict(suffix='.{:03d}.{}'.format(self.ipert, 'fa'))
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class InflationFactor(_BackgroundErrorInfo):
|
|
113
|
+
"""
|
|
114
|
+
Inflation factor profiles.
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
_footprint = dict(
|
|
118
|
+
info='Inflation factor profiles',
|
|
119
|
+
attr=dict(
|
|
120
|
+
kind=dict(
|
|
121
|
+
values=['infl_factor', 'infl', 'inflation_factor'],
|
|
122
|
+
remap=dict(autoremap='first'),
|
|
123
|
+
),
|
|
124
|
+
gvar = dict(
|
|
125
|
+
default = 'inflation_factor'
|
|
126
|
+
),
|
|
127
|
+
nativefmt=dict(
|
|
128
|
+
values=['ascii'],
|
|
129
|
+
default='ascii',
|
|
130
|
+
),
|
|
131
|
+
term=dict(
|
|
132
|
+
optional=True,
|
|
133
|
+
default=3
|
|
134
|
+
),
|
|
135
|
+
),
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def realkind(self):
|
|
140
|
+
return 'inflation_factor'
|
|
141
|
+
|
|
142
|
+
def archive_basename(self):
|
|
143
|
+
"""OP ARCHIVE specific naming convention."""
|
|
144
|
+
return self.realkind
|
|
145
|
+
|
|
146
|
+
def olive_basename(self):
|
|
147
|
+
"""OLIVE specific naming convention."""
|
|
148
|
+
return self.realkind
|