vortex-nwp 2.0.0__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.
Files changed (144) hide show
  1. vortex/__init__.py +159 -0
  2. vortex/algo/__init__.py +13 -0
  3. vortex/algo/components.py +2462 -0
  4. vortex/algo/mpitools.py +1953 -0
  5. vortex/algo/mpitools_templates/__init__.py +1 -0
  6. vortex/algo/mpitools_templates/envelope_wrapper_default.tpl +27 -0
  7. vortex/algo/mpitools_templates/envelope_wrapper_mpiauto.tpl +29 -0
  8. vortex/algo/mpitools_templates/wrapstd_wrapper_default.tpl +18 -0
  9. vortex/algo/serversynctools.py +171 -0
  10. vortex/config.py +112 -0
  11. vortex/data/__init__.py +19 -0
  12. vortex/data/abstractstores.py +1510 -0
  13. vortex/data/containers.py +835 -0
  14. vortex/data/contents.py +622 -0
  15. vortex/data/executables.py +275 -0
  16. vortex/data/flow.py +119 -0
  17. vortex/data/geometries.ini +2689 -0
  18. vortex/data/geometries.py +799 -0
  19. vortex/data/handlers.py +1230 -0
  20. vortex/data/outflow.py +67 -0
  21. vortex/data/providers.py +487 -0
  22. vortex/data/resources.py +207 -0
  23. vortex/data/stores.py +1390 -0
  24. vortex/data/sync_templates/__init__.py +0 -0
  25. vortex/gloves.py +309 -0
  26. vortex/layout/__init__.py +20 -0
  27. vortex/layout/contexts.py +577 -0
  28. vortex/layout/dataflow.py +1220 -0
  29. vortex/layout/monitor.py +969 -0
  30. vortex/nwp/__init__.py +14 -0
  31. vortex/nwp/algo/__init__.py +21 -0
  32. vortex/nwp/algo/assim.py +537 -0
  33. vortex/nwp/algo/clim.py +1086 -0
  34. vortex/nwp/algo/coupling.py +831 -0
  35. vortex/nwp/algo/eda.py +840 -0
  36. vortex/nwp/algo/eps.py +785 -0
  37. vortex/nwp/algo/forecasts.py +886 -0
  38. vortex/nwp/algo/fpserver.py +1303 -0
  39. vortex/nwp/algo/ifsnaming.py +463 -0
  40. vortex/nwp/algo/ifsroot.py +404 -0
  41. vortex/nwp/algo/monitoring.py +263 -0
  42. vortex/nwp/algo/mpitools.py +694 -0
  43. vortex/nwp/algo/odbtools.py +1258 -0
  44. vortex/nwp/algo/oopsroot.py +916 -0
  45. vortex/nwp/algo/oopstests.py +220 -0
  46. vortex/nwp/algo/request.py +660 -0
  47. vortex/nwp/algo/stdpost.py +1641 -0
  48. vortex/nwp/data/__init__.py +30 -0
  49. vortex/nwp/data/assim.py +380 -0
  50. vortex/nwp/data/boundaries.py +314 -0
  51. vortex/nwp/data/climfiles.py +521 -0
  52. vortex/nwp/data/configfiles.py +153 -0
  53. vortex/nwp/data/consts.py +954 -0
  54. vortex/nwp/data/ctpini.py +149 -0
  55. vortex/nwp/data/diagnostics.py +209 -0
  56. vortex/nwp/data/eda.py +147 -0
  57. vortex/nwp/data/eps.py +432 -0
  58. vortex/nwp/data/executables.py +1045 -0
  59. vortex/nwp/data/fields.py +111 -0
  60. vortex/nwp/data/gridfiles.py +380 -0
  61. vortex/nwp/data/logs.py +584 -0
  62. vortex/nwp/data/modelstates.py +363 -0
  63. vortex/nwp/data/monitoring.py +193 -0
  64. vortex/nwp/data/namelists.py +696 -0
  65. vortex/nwp/data/obs.py +840 -0
  66. vortex/nwp/data/oopsexec.py +74 -0
  67. vortex/nwp/data/providers.py +207 -0
  68. vortex/nwp/data/query.py +206 -0
  69. vortex/nwp/data/stores.py +160 -0
  70. vortex/nwp/data/surfex.py +337 -0
  71. vortex/nwp/syntax/__init__.py +9 -0
  72. vortex/nwp/syntax/stdattrs.py +437 -0
  73. vortex/nwp/tools/__init__.py +10 -0
  74. vortex/nwp/tools/addons.py +40 -0
  75. vortex/nwp/tools/agt.py +67 -0
  76. vortex/nwp/tools/bdap.py +59 -0
  77. vortex/nwp/tools/bdcp.py +41 -0
  78. vortex/nwp/tools/bdm.py +24 -0
  79. vortex/nwp/tools/bdmp.py +54 -0
  80. vortex/nwp/tools/conftools.py +1661 -0
  81. vortex/nwp/tools/drhook.py +66 -0
  82. vortex/nwp/tools/grib.py +294 -0
  83. vortex/nwp/tools/gribdiff.py +104 -0
  84. vortex/nwp/tools/ifstools.py +203 -0
  85. vortex/nwp/tools/igastuff.py +273 -0
  86. vortex/nwp/tools/mars.py +68 -0
  87. vortex/nwp/tools/odb.py +657 -0
  88. vortex/nwp/tools/partitioning.py +258 -0
  89. vortex/nwp/tools/satrad.py +71 -0
  90. vortex/nwp/util/__init__.py +6 -0
  91. vortex/nwp/util/async.py +212 -0
  92. vortex/nwp/util/beacon.py +40 -0
  93. vortex/nwp/util/diffpygram.py +447 -0
  94. vortex/nwp/util/ens.py +279 -0
  95. vortex/nwp/util/hooks.py +139 -0
  96. vortex/nwp/util/taskdeco.py +85 -0
  97. vortex/nwp/util/usepygram.py +697 -0
  98. vortex/nwp/util/usetnt.py +101 -0
  99. vortex/proxy.py +6 -0
  100. vortex/sessions.py +374 -0
  101. vortex/syntax/__init__.py +9 -0
  102. vortex/syntax/stdattrs.py +867 -0
  103. vortex/syntax/stddeco.py +185 -0
  104. vortex/toolbox.py +1117 -0
  105. vortex/tools/__init__.py +20 -0
  106. vortex/tools/actions.py +523 -0
  107. vortex/tools/addons.py +316 -0
  108. vortex/tools/arm.py +96 -0
  109. vortex/tools/compression.py +325 -0
  110. vortex/tools/date.py +27 -0
  111. vortex/tools/ddhpack.py +10 -0
  112. vortex/tools/delayedactions.py +782 -0
  113. vortex/tools/env.py +541 -0
  114. vortex/tools/folder.py +834 -0
  115. vortex/tools/grib.py +738 -0
  116. vortex/tools/lfi.py +953 -0
  117. vortex/tools/listings.py +423 -0
  118. vortex/tools/names.py +637 -0
  119. vortex/tools/net.py +2124 -0
  120. vortex/tools/odb.py +10 -0
  121. vortex/tools/parallelism.py +368 -0
  122. vortex/tools/prestaging.py +210 -0
  123. vortex/tools/rawfiles.py +10 -0
  124. vortex/tools/schedulers.py +480 -0
  125. vortex/tools/services.py +940 -0
  126. vortex/tools/storage.py +996 -0
  127. vortex/tools/surfex.py +61 -0
  128. vortex/tools/systems.py +3976 -0
  129. vortex/tools/targets.py +440 -0
  130. vortex/util/__init__.py +9 -0
  131. vortex/util/config.py +1122 -0
  132. vortex/util/empty.py +24 -0
  133. vortex/util/helpers.py +216 -0
  134. vortex/util/introspection.py +69 -0
  135. vortex/util/iosponge.py +80 -0
  136. vortex/util/roles.py +49 -0
  137. vortex/util/storefunctions.py +129 -0
  138. vortex/util/structs.py +26 -0
  139. vortex/util/worker.py +162 -0
  140. vortex_nwp-2.0.0.dist-info/METADATA +67 -0
  141. vortex_nwp-2.0.0.dist-info/RECORD +144 -0
  142. vortex_nwp-2.0.0.dist-info/WHEEL +5 -0
  143. vortex_nwp-2.0.0.dist-info/licenses/LICENSE +517 -0
  144. vortex_nwp-2.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,954 @@
1
+ """
2
+ Various Resources for constant files used in NWP.
3
+ """
4
+
5
+ import footprints
6
+ from ..syntax.stdattrs import gvar
7
+ from vortex.data.contents import DataRaw, JsonDictContent, TextContent
8
+ from vortex.data.geometries import GaussGeometry, LonlatGeometry
9
+ from vortex.data.outflow import ModelGeoResource, ModelResource, StaticResource
10
+ from vortex.syntax.stdattrs import month_deco
11
+ from vortex.syntax.stddeco import (
12
+ namebuilding_append,
13
+ namebuilding_delete,
14
+ namebuilding_insert,
15
+ )
16
+
17
+ #: No automatic export
18
+ __all__ = []
19
+
20
+
21
+ class GenvModelResource(ModelResource):
22
+ """Abstract class for gget driven resources."""
23
+
24
+ _abstract = True
25
+ _footprint = [
26
+ gvar,
27
+ ]
28
+
29
+
30
+ class GenvModelGeoResource(ModelGeoResource):
31
+ """Abstract class for gget driven resources."""
32
+
33
+ _abstract = True
34
+ _footprint = [
35
+ gvar,
36
+ ]
37
+
38
+
39
+ class GPSList(GenvModelResource):
40
+ """
41
+ Class of a GPS satellite ground coefficients. A Genvkey can be given.
42
+ """
43
+
44
+ _footprint = dict(
45
+ info="Set of GPS coefficients",
46
+ attr=dict(
47
+ kind=dict(
48
+ values=["gpslist", "listgpssol"],
49
+ remap=dict(listgpssol="gpslist"),
50
+ ),
51
+ clscontents=dict(
52
+ default=TextContent,
53
+ ),
54
+ gvar=dict(default="list_gpssol"),
55
+ ),
56
+ )
57
+
58
+ @property
59
+ def realkind(self):
60
+ return "gpslist"
61
+
62
+
63
+ class MODESList(GenvModelResource):
64
+ """
65
+ Class of a MODE-S satellite white list for Bator.
66
+ """
67
+
68
+ _footprint = dict(
69
+ info="Set of MODE-S coefficients",
70
+ attr=dict(
71
+ kind=dict(
72
+ values=["modeslist", "listmodes"],
73
+ remap=dict(listmodes="modeslist"),
74
+ ),
75
+ clscontents=dict(
76
+ default=TextContent,
77
+ ),
78
+ gvar=dict(
79
+ default="list_modes",
80
+ ),
81
+ ),
82
+ )
83
+
84
+ @property
85
+ def realkind(self):
86
+ return "modeslist"
87
+
88
+
89
+ class BatodbConf(GenvModelResource):
90
+ """
91
+ Default parameters for BATOR execution. A Genvkey can be given.
92
+ """
93
+
94
+ _footprint = dict(
95
+ info="Batodb parametrization",
96
+ attr=dict(
97
+ kind=dict(
98
+ values=["batodbconf", "batorconf", "parambator"],
99
+ remap=dict(
100
+ parambator="batodbconf",
101
+ batorconf="batodbconf",
102
+ ),
103
+ ),
104
+ clscontents=dict(
105
+ default=TextContent,
106
+ ),
107
+ gvar=dict(default="param_bator_cfg"),
108
+ ),
109
+ )
110
+
111
+ @property
112
+ def realkind(self):
113
+ return "batodbconf"
114
+
115
+
116
+ class BatorAveragingMask(GenvModelResource):
117
+ """
118
+ Configuration file that drives the averaging of radiances in Bator.'''
119
+ """
120
+
121
+ _footprint = dict(
122
+ info="Definition file for the bator averaging",
123
+ attr=dict(
124
+ kind=dict(
125
+ values=[
126
+ "avgmask",
127
+ ]
128
+ ),
129
+ sensor=dict(),
130
+ clscontents=dict(
131
+ default=TextContent,
132
+ ),
133
+ gvar=dict(
134
+ default="MASK_[sensor]",
135
+ ),
136
+ ),
137
+ )
138
+
139
+ @property
140
+ def realkind(self):
141
+ return "avgmask"
142
+
143
+
144
+ class AtmsMask(BatorAveragingMask):
145
+ """Kept for backward compatibility with cy40 (see BatorAveragingMask)."""
146
+
147
+ _footprint = dict(
148
+ attr=dict(
149
+ kind=dict(
150
+ values=["atms", "atmsmask"],
151
+ remap=dict(atms="atmsmask"),
152
+ ),
153
+ sensor=dict(
154
+ default="atms",
155
+ optional=True,
156
+ ),
157
+ )
158
+ )
159
+
160
+ @property
161
+ def realkind(self):
162
+ return "atmsmask"
163
+
164
+
165
+ class RtCoef(GenvModelResource):
166
+ """
167
+ Class of a tar-zip file of satellite coefficients. A Genvkey can be given.
168
+ """
169
+
170
+ _footprint = dict(
171
+ info="Set of satellite coefficients",
172
+ attr=dict(
173
+ kind=dict(values=["rtcoef", "mwave_rtcoef"]),
174
+ gvar=dict(default="[kind]_tgz"),
175
+ ),
176
+ )
177
+
178
+ @property
179
+ def realkind(self):
180
+ return "rtcoef"
181
+
182
+
183
+ class RRTM(GenvModelResource):
184
+ """
185
+ Class of a tar-zip file of coefficients for radiative transfers computations.
186
+ A Genvkey can be given.
187
+ """
188
+
189
+ _footprint = dict(
190
+ info="Coefficients of RRTM scheme",
191
+ attr=dict(
192
+ kind=dict(
193
+ values=[
194
+ "rrtm",
195
+ ]
196
+ ),
197
+ gvar=dict(default="rrtm_const"),
198
+ ),
199
+ )
200
+
201
+ @property
202
+ def realkind(self):
203
+ return "rrtm"
204
+
205
+
206
+ class CoefModel(GenvModelResource):
207
+ """
208
+ TODO.
209
+ A Genvkey can be given.
210
+ """
211
+
212
+ _footprint = dict(
213
+ info="Coefficients for some purpose... but which one ?",
214
+ attr=dict(
215
+ kind=dict(
216
+ values=["coef_model", "coefmodel"],
217
+ remap=dict(autoremap="first"),
218
+ ),
219
+ gvar=dict(default="coef_model"),
220
+ ),
221
+ )
222
+
223
+ @property
224
+ def realkind(self):
225
+ return "coef_model"
226
+
227
+
228
+ class ScatCMod5(GenvModelResource):
229
+ """
230
+ TODO.
231
+ A Genvkey can be given.
232
+ """
233
+
234
+ _footprint = dict(
235
+ info="Coefficients for some purpose... but which one ?",
236
+ attr=dict(
237
+ kind=dict(
238
+ values=["cmod5", "cmod5table", "scat_cmod5", "scatcmod5"],
239
+ remap=dict(autoremap="first"),
240
+ ),
241
+ gvar=dict(default="scat_cmod5_table"),
242
+ ),
243
+ )
244
+
245
+ @property
246
+ def realkind(self):
247
+ return "cmod5"
248
+
249
+
250
+ class BcorIRSea(GenvModelResource):
251
+ """
252
+ Obsolete.
253
+ A Genvkey can be given.
254
+ """
255
+
256
+ _footprint = dict(
257
+ info="Some bias ?",
258
+ attr=dict(
259
+ kind=dict(
260
+ values=["bcor"],
261
+ ),
262
+ scope=dict(
263
+ values=["irsea"],
264
+ ),
265
+ gvar=dict(default="bcor_meto_[scope]"),
266
+ ),
267
+ )
268
+
269
+ @property
270
+ def realkind(self):
271
+ return "bcor_irsea"
272
+
273
+
274
+ class RmtbError(GenvModelResource):
275
+ """
276
+ Obsolete.
277
+ A Genvkey can be given.
278
+ """
279
+
280
+ _footprint = dict(
281
+ info="Some bias ?",
282
+ attr=dict(
283
+ kind=dict(
284
+ values=["rmtberr"],
285
+ ),
286
+ scope=dict(
287
+ values=["airs", "noaa"],
288
+ ),
289
+ gvar=dict(default="[scope]_rmtberr"),
290
+ ),
291
+ )
292
+
293
+ @property
294
+ def realkind(self):
295
+ return "rmtberr"
296
+
297
+
298
+ class ChanSpectral(GenvModelResource):
299
+ """
300
+ Obsolete.
301
+ A Genvkey can be given.
302
+ """
303
+
304
+ _footprint = dict(
305
+ info="Coefficients for some purpose... but which one ?",
306
+ attr=dict(
307
+ kind=dict(
308
+ values=["chanspec", "chan_spec"],
309
+ remap=dict(autoremap="first"),
310
+ ),
311
+ scope=dict(
312
+ optional=True,
313
+ default="noaa",
314
+ values=["noaa"],
315
+ ),
316
+ gvar=dict(default="[scope]_chanspec"),
317
+ ),
318
+ )
319
+
320
+ @property
321
+ def realkind(self):
322
+ return "chanspec"
323
+
324
+
325
+ class Correl(GenvModelResource):
326
+ """
327
+ TODO.
328
+ A Genvkey can be given.
329
+ """
330
+
331
+ _footprint = dict(
332
+ info="Coefficients for some purpose... but which one ?",
333
+ attr=dict(
334
+ kind=dict(
335
+ values=["correl"],
336
+ ),
337
+ scope=dict(
338
+ optional=True,
339
+ default="misc",
340
+ ),
341
+ gvar=dict(default="[scope]_correl"),
342
+ ),
343
+ )
344
+
345
+ @property
346
+ def realkind(self):
347
+ return "correl"
348
+
349
+
350
+ class CstLim(GenvModelResource):
351
+ """
352
+ Obsolete.
353
+ A Genvkey can be given.
354
+ """
355
+
356
+ _footprint = dict(
357
+ info="Coefficients for some purpose... but which one ?",
358
+ attr=dict(
359
+ kind=dict(
360
+ values=["cstlim", "cst_lim"],
361
+ remap=dict(autoremap="first"),
362
+ ),
363
+ scope=dict(
364
+ optional=True,
365
+ default="noaa",
366
+ values=["noaa"],
367
+ ),
368
+ gvar=dict(default="[scope]_cstlim"),
369
+ ),
370
+ )
371
+
372
+ @property
373
+ def realkind(self):
374
+ return "cstlim"
375
+
376
+
377
+ class RszCoef(GenvModelResource):
378
+ """
379
+ Obsolete.
380
+ A Genvkey can be given.
381
+ """
382
+
383
+ _footprint = dict(
384
+ info="Coefficients for some purpose... but which one ?",
385
+ attr=dict(
386
+ kind=dict(
387
+ values=["rszcoef", "rsz_coef"],
388
+ remap=dict(autoremap="first"),
389
+ ),
390
+ gvar=dict(default="rszcoef_fmt"),
391
+ ),
392
+ )
393
+
394
+ @property
395
+ def realkind(self):
396
+ return "rszcoef"
397
+
398
+
399
+ class RtCoefAirs(GenvModelResource):
400
+ """
401
+ Obsolete.
402
+ A Genvkey can be given.
403
+ """
404
+
405
+ _footprint = dict(
406
+ info="Coefficients for some purpose... but which one ?",
407
+ attr=dict(
408
+ kind=dict(
409
+ values=["rtcoef_airs"],
410
+ ),
411
+ gvar=dict(default="rtcoef_airs_ieee"),
412
+ ),
413
+ )
414
+
415
+ @property
416
+ def realkind(self):
417
+ return "rtcoef_airs"
418
+
419
+
420
+ class RtCoefAtovs(GenvModelResource):
421
+ """
422
+ Obsolete.
423
+ A Genvkey can be given.
424
+ """
425
+
426
+ _footprint = dict(
427
+ info="Coefficients for some purpose... but which one ?",
428
+ attr=dict(
429
+ kind=dict(
430
+ values=["rtcoef_atovs"],
431
+ ),
432
+ gvar=dict(default="rtcoef_ieee_atovs"),
433
+ ),
434
+ )
435
+
436
+ @property
437
+ def realkind(self):
438
+ return "rtcoef_atovs"
439
+
440
+
441
+ class SigmaB(GenvModelResource):
442
+ """
443
+ Obsolete.
444
+ A Genvkey can be given.
445
+ """
446
+
447
+ _footprint = dict(
448
+ info="Coefficients for some purpose... but which one ?",
449
+ attr=dict(
450
+ kind=dict(
451
+ values=["sigmab", "sigma", "sigma_b"],
452
+ remap=dict(autoremap="first"),
453
+ ),
454
+ gvar=dict(default="misc_sigmab"),
455
+ ),
456
+ )
457
+
458
+ @property
459
+ def realkind(self):
460
+ return "sigmab"
461
+
462
+
463
+ class AtlasEmissivity(GenvModelResource):
464
+ """
465
+ Abstract class for any Emissivity atlas.
466
+ """
467
+
468
+ _abstract = True
469
+ _footprint = dict(
470
+ attr=dict(
471
+ kind=dict(
472
+ values=[
473
+ "atlas_emissivity",
474
+ "atlasemissivity",
475
+ "atlasemiss",
476
+ "emiss",
477
+ "emissivity_atlas",
478
+ ],
479
+ remap=dict(autoremap="first"),
480
+ ),
481
+ )
482
+ )
483
+
484
+ @property
485
+ def realkind(self):
486
+ return "atlas_emissivity"
487
+
488
+
489
+ class AtlasEmissivityGeneric(AtlasEmissivity):
490
+ """
491
+ A yearly emissivity atlas from a specific source.
492
+ A Genvkey can be given.
493
+ """
494
+
495
+ _footprint = dict(
496
+ info="Yearly emissivity atlas from a given source.",
497
+ attr=dict(
498
+ source=dict(
499
+ values=["uwir", "telsem"],
500
+ ),
501
+ gvar=dict(default="[source]_emis_atlas"),
502
+ month=dict(
503
+ # This is a fake attribute that avoid warnings...
504
+ values=[
505
+ None,
506
+ ],
507
+ optional=True,
508
+ default=None,
509
+ doc_visibility=footprints.doc.visibility.GURU,
510
+ ),
511
+ ),
512
+ )
513
+
514
+
515
+ class AtlasEmissivityInstrument(AtlasEmissivity):
516
+ """
517
+ A yearly emissivity atlas for a specific instrument/sensor.
518
+ A Genvkey can be given.
519
+ """
520
+
521
+ _footprint = dict(
522
+ info="Yearly emissivity atlas for a given instrument(s).",
523
+ attr=dict(
524
+ instrument=dict(
525
+ values=[
526
+ "seviri",
527
+ "ssmis",
528
+ "iasi",
529
+ "amsua",
530
+ "amsub",
531
+ "an1",
532
+ "an2",
533
+ ],
534
+ remap=dict(an1="amsua", an2="amsub"),
535
+ ),
536
+ gvar=dict(default="emissivity_atlas_[instrument]"),
537
+ month=dict(
538
+ # This is a fake attribute that avoid warnings...
539
+ values=[
540
+ None,
541
+ ],
542
+ optional=True,
543
+ default=None,
544
+ doc_visibility=footprints.doc.visibility.GURU,
545
+ ),
546
+ ),
547
+ )
548
+
549
+
550
+ class AtlasMonthlyEmissivityInstrument(AtlasEmissivityInstrument):
551
+ """
552
+ A monthly emissivity atlas for a specific instrument/sensor.
553
+ A Genvkey can be given.
554
+ """
555
+
556
+ _footprint = [
557
+ month_deco,
558
+ dict(
559
+ info="Monthly emissivity atlas for a given instrument(s).",
560
+ attr=dict(
561
+ gvar=dict(default="emissivity_atlas_[instrument]_monthly"),
562
+ ),
563
+ ),
564
+ ]
565
+
566
+
567
+ class AtlasEmissivityPack(AtlasEmissivity):
568
+ """
569
+ Legacy yearly emissivity atlases for Amsu-A/B. DEPRECIATED.
570
+ A Genvkey can be given.
571
+ """
572
+
573
+ _footprint = dict(
574
+ info="Atlas of emissivity according to some pack of instrument(s).",
575
+ attr=dict(
576
+ pack=dict(
577
+ values=["1", "2"],
578
+ ),
579
+ gvar=dict(default="emissivity[pack]"),
580
+ ),
581
+ )
582
+
583
+
584
+ class SeaIceLonLat(GenvModelGeoResource):
585
+ """
586
+ Coordinates of the file containing sea ice observations.
587
+ It is used to create the ice_content file.
588
+ """
589
+
590
+ _footprint = dict(
591
+ info="Coordinates used for ice_concent creation.",
592
+ attr=dict(
593
+ kind=dict(values=["seaice_lonlat"]),
594
+ gvar=dict(default="sea_ice_lonlat"),
595
+ ),
596
+ )
597
+
598
+
599
+ class ODBRaw(GenvModelResource):
600
+ """
601
+ Class for static ODB layouts RSTBIAS, COUNTRYRSTRHBIAS, SONDETYPERSTRHBIAS.
602
+ A GenvKey can be given.
603
+ """
604
+
605
+ _footprint = dict(
606
+ info="ODB Raw bias",
607
+ attr=dict(
608
+ kind=dict(
609
+ values=["odbraw"],
610
+ ),
611
+ layout=dict(
612
+ values=[
613
+ "rstbias",
614
+ "countryrstrhbias",
615
+ "sondetyperstrhbias",
616
+ "RSTBIAS",
617
+ "COUNTRYRSTRHBIAS",
618
+ "SONDETYPERSTRHBIAS",
619
+ ],
620
+ remap=dict(
621
+ RSTBIAS="rstbias",
622
+ COUNTRYRSTRHBIAS="countryrstrhbias",
623
+ SONDETYPERSTRHBIAS="sondetyperstrhbias",
624
+ ),
625
+ ),
626
+ gvar=dict(
627
+ default="rs_bias_odbtable_[layout]",
628
+ ),
629
+ ),
630
+ )
631
+
632
+ @property
633
+ def realkind(self):
634
+ return "odbraw"
635
+
636
+
637
+ @namebuilding_delete("fmt")
638
+ @namebuilding_insert("radical", lambda s: "matfil")
639
+ @namebuilding_append(
640
+ "geo",
641
+ lambda s: [
642
+ s.scope.area,
643
+ ],
644
+ )
645
+ class MatFilter(GenvModelGeoResource):
646
+ """
647
+ Class of a filtering matrix. A GaussGeometry object is needed,
648
+ as well as the LonlatGeometry of the scope domain (containing the
649
+ filtering used).
650
+ A GenvKey can be given.
651
+ """
652
+
653
+ _footprint = dict(
654
+ info="Filtering matrix",
655
+ attr=dict(
656
+ model=dict(
657
+ optional=True,
658
+ ),
659
+ kind=dict(values=["matfilter"]),
660
+ geometry=dict(type=GaussGeometry),
661
+ scope=dict(
662
+ type=LonlatGeometry,
663
+ ),
664
+ gvar=dict(default="mat_filter_[scope::area]"),
665
+ ),
666
+ )
667
+
668
+ @property
669
+ def realkind(self):
670
+ return "matfilter"
671
+
672
+ def olive_basename(self):
673
+ """OLIVE specific naming convention."""
674
+ return (
675
+ "matrix.fil."
676
+ + self.scope.area
677
+ + ".t{!s}".format(self.geometry.truncation)
678
+ + ".c{!s}".format(self.geometry.stretching)
679
+ )
680
+
681
+
682
+ class WaveletTable(GenvModelGeoResource):
683
+ """
684
+ Wavelet covariance operators: auto-correlations of the control variable.
685
+ A GenvKey can be given.
686
+ """
687
+
688
+ _footprint = dict(
689
+ info="Wavelet covariance operators",
690
+ attr=dict(
691
+ kind=dict(
692
+ values=[
693
+ "wtable",
694
+ "wavelettable",
695
+ "wavelet_table",
696
+ "rtable",
697
+ "rtabwavelet",
698
+ ],
699
+ remap=dict(autoremap="first"),
700
+ ),
701
+ gvar=dict(default="RTABLE_WAVELET"),
702
+ ),
703
+ )
704
+
705
+ @property
706
+ def realkind(self):
707
+ return "wtable"
708
+
709
+
710
+ class AmvError(GenvModelGeoResource):
711
+ """
712
+ TODO.
713
+ A Genvkey can be given.
714
+ """
715
+
716
+ _footprint = dict(
717
+ info="AMV Tracking Error",
718
+ attr=dict(
719
+ kind=dict(
720
+ values=["amvtrackingerror", "amvtr", "amverror", "amv_error"],
721
+ remap=dict(
722
+ amvtrackingerror="amv_error",
723
+ amvtr="amv_error",
724
+ amverror="amv_error",
725
+ ),
726
+ ),
727
+ gvar=dict(
728
+ default="amv_tracking_error",
729
+ ),
730
+ ),
731
+ )
732
+
733
+ @property
734
+ def realkind(self):
735
+ return "amv_error"
736
+
737
+
738
+ class AmvBias(GenvModelGeoResource):
739
+ """
740
+ TODO.
741
+ A Genvkey can be given.
742
+ """
743
+
744
+ _footprint = dict(
745
+ info="AMV Tracking Error",
746
+ attr=dict(
747
+ kind=dict(
748
+ values=["amvbias", "amv_bias"],
749
+ remap=dict(amvbias="amv_bias"),
750
+ ),
751
+ gvar=dict(default="amv_bias_info"),
752
+ ),
753
+ )
754
+
755
+ @property
756
+ def realkind(self):
757
+ return "amv_bias"
758
+
759
+
760
+ class LFIScripts(StaticResource):
761
+ """
762
+ The LFI scripts. A Genvkey can be given.
763
+ """
764
+
765
+ _footprint = [
766
+ gvar,
767
+ dict(
768
+ info="LFI scripts",
769
+ attr=dict(
770
+ kind=dict(
771
+ values=[
772
+ "lfiscripts",
773
+ ],
774
+ ),
775
+ gvar=dict(default="tools_lfi"),
776
+ ),
777
+ ),
778
+ ]
779
+
780
+ @property
781
+ def realkind(self):
782
+ return "lfiscripts"
783
+
784
+
785
+ class FilteringRequest(GenvModelResource):
786
+ """
787
+ Class of a JSON file that describes a resource filter. A Genvkey can be given.
788
+ """
789
+
790
+ _footprint = dict(
791
+ info="Description of a resource's data filter",
792
+ attr=dict(
793
+ kind=dict(
794
+ values=[
795
+ "filtering_request",
796
+ ],
797
+ ),
798
+ filtername=dict(),
799
+ nativefmt=dict(
800
+ values=[
801
+ "json",
802
+ ],
803
+ default="json",
804
+ ),
805
+ clscontents=dict(
806
+ default=JsonDictContent,
807
+ ),
808
+ gvar=dict(default="filtering_request"),
809
+ ),
810
+ )
811
+
812
+ @property
813
+ def realkind(self):
814
+ return "filtering_request"
815
+
816
+ def gget_urlquery(self):
817
+ """GGET specific query : ``extract``."""
818
+ return "extract=filter_{:s}.json".format(self.filtername)
819
+
820
+
821
+ class GribAPIConfig(StaticResource):
822
+ """
823
+ Configuration files for the Grib-API (samples or definitions)
824
+ """
825
+
826
+ _footprint = [
827
+ gvar,
828
+ dict(
829
+ info="Grib-API configuration files",
830
+ attr=dict(
831
+ kind=dict(
832
+ values=[
833
+ "gribapiconf",
834
+ ],
835
+ ),
836
+ target=dict(
837
+ values=["samples", "def", "definitions"],
838
+ remap=dict(definitions="def"),
839
+ ),
840
+ gvar=dict(default="grib_api_[target]"),
841
+ ),
842
+ ),
843
+ ]
844
+
845
+ @property
846
+ def realkind(self):
847
+ return "gribapiconf"
848
+
849
+
850
+ class StdPressure(GenvModelGeoResource):
851
+ """
852
+ Standard pressure profile for standard error truncation extrapolation.
853
+ A GenvKey can be given.
854
+ """
855
+
856
+ _footprint = dict(
857
+ info="Standard pressure profile",
858
+ attr=dict(
859
+ kind=dict(
860
+ values=["stdpressure"],
861
+ ),
862
+ level=dict(
863
+ type=int,
864
+ optional=True,
865
+ default=60,
866
+ values=[60],
867
+ ),
868
+ gvar=dict(default="std_pressure"),
869
+ ),
870
+ )
871
+
872
+ @property
873
+ def realkind(self):
874
+ return "stdpressure"
875
+
876
+
877
+ class TruncObj(GenvModelGeoResource):
878
+ """
879
+ Standard error truncation (spectral filtering).
880
+ A GenvKey can be given.
881
+ """
882
+
883
+ _footprint = dict(
884
+ info="Standard error truncation",
885
+ attr=dict(
886
+ kind=dict(
887
+ values=["truncobj", "stderr_trunc"],
888
+ ),
889
+ gvar=dict(default="trunc_obj"),
890
+ ),
891
+ )
892
+
893
+ @property
894
+ def realkind(self):
895
+ return "truncobj"
896
+
897
+
898
+ class InterChannelsCorrelations(GenvModelResource):
899
+ """
900
+ Inter channels correlations for a specific instrument/sensor.
901
+ A Genvkey can be given.
902
+ """
903
+
904
+ _footprint = dict(
905
+ info="Inter channel correlations for a given instrument.",
906
+ attr=dict(
907
+ kind=dict(
908
+ values=[
909
+ "correlations",
910
+ ],
911
+ ),
912
+ instrument=dict(
913
+ values=[
914
+ "cris",
915
+ "iasi",
916
+ ],
917
+ ),
918
+ gvar=dict(default="correlations_[instrument]"),
919
+ clscontents=dict(
920
+ default=DataRaw,
921
+ ),
922
+ ),
923
+ )
924
+
925
+ @property
926
+ def realkind(self):
927
+ return "correlations"
928
+
929
+
930
+ class SunMoonPositionCoeff(StaticResource):
931
+ """
932
+ Coefficients of the Chebyshev polynomials used to calculate the position of the moon and the sun.
933
+ """
934
+
935
+ _footprint = [
936
+ gvar,
937
+ dict(
938
+ info="Chebyshev polynomials for the moon and sun position",
939
+ attr=dict(
940
+ kind=dict(
941
+ values=[
942
+ "sunmoonpositioncoeffs",
943
+ ],
944
+ ),
945
+ gvar=dict(
946
+ default="sun_moon_position_tgz",
947
+ ),
948
+ ),
949
+ ),
950
+ ]
951
+
952
+ @property
953
+ def realkind(self):
954
+ return "sunmoonpositioncoeffs"