grdwindinversion 0.2.3.post8__tar.gz → 0.2.3.post9__tar.gz
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.
- {grdwindinversion-0.2.3.post8/grdwindinversion.egg-info → grdwindinversion-0.2.3.post9}/PKG-INFO +1 -1
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/__init__.py +2 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/inversion.py +33 -9
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9/grdwindinversion.egg-info}/PKG-INFO +1 -1
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.editorconfig +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.github/dependabot.yml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.github/workflows/publish.yml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.gitignore +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.pre-commit-config.yaml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/AUTHORS.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/CONTRIBUTING.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/HISTORY.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/LICENSE +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/MANIFEST.in +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/Makefile +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/README.md +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/ci/requirements/docs.yaml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/ci/requirements/environment.yaml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/Makefile +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/_static/css/grdwindinversion.css +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/algorithm.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/authors.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/conf.py +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/contributing.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/examples/wind-inversion-from-grd.ipynb +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/history.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/index.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/installation.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/make.bat +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/modules.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/readme.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/usage.rst +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/.github/ISSUE_TEMPLATE.md +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/.gitignore +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/.travis.yml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/config_prod.yaml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/config_prod_recal.yaml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/data_config.yaml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/load_config.py +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/main.py +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/utils.py +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/SOURCES.txt +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/dependency_links.txt +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/entry_points.txt +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/requires.txt +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/top_level.txt +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/pyproject.toml +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/requirements_dev.txt +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/requirements_doc.txt +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/setup.cfg +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/tests/__init__.py +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/tests/test_grdwindinversion.py +0 -0
- {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/tox.ini +0 -0
|
@@ -6,6 +6,8 @@ __all__ = ['inversion']
|
|
|
6
6
|
# __version__ = metadata.version('grdwindinversion')
|
|
7
7
|
from grdwindinversion import *
|
|
8
8
|
from importlib.metadata import version
|
|
9
|
+
from grdwindinversion.inversion import inverse
|
|
10
|
+
|
|
9
11
|
try:
|
|
10
12
|
__version__ = version("grdwindinversion")
|
|
11
13
|
except Exception:
|
|
@@ -118,8 +118,8 @@ def getOutputName2(input_file, out_folder, sensor, meta):
|
|
|
118
118
|
|
|
119
119
|
def getAncillary(meta, ancillary_name='ecmwf'):
|
|
120
120
|
"""
|
|
121
|
-
Map ancillary wind from ECMWF.
|
|
122
|
-
This function is used to check if the
|
|
121
|
+
Map ancillary wind from ECMWF or ERA5.
|
|
122
|
+
This function is used to check if the model files are available and to map the model to the SAR data.
|
|
123
123
|
|
|
124
124
|
Parameters
|
|
125
125
|
----------
|
|
@@ -184,8 +184,31 @@ def getAncillary(meta, ancillary_name='ecmwf'):
|
|
|
184
184
|
|
|
185
185
|
return map_model
|
|
186
186
|
|
|
187
|
+
elif ancillary_name == 'era5':
|
|
188
|
+
era5_name = "era5_0250_1h"
|
|
189
|
+
logging.debug('conf: %s', getConf())
|
|
190
|
+
era0250 = getConf()[era5_name]
|
|
191
|
+
logging.debug('%s : %s', (era5_name, era0250))
|
|
192
|
+
meta.set_raster(era5_name, era0250)
|
|
193
|
+
|
|
194
|
+
era5_infos = meta.rasters.loc[era5_name]
|
|
195
|
+
try:
|
|
196
|
+
era5_file = era5_infos['get_function'](era5_infos['resource'],
|
|
197
|
+
date=datetime.datetime.strptime(meta.start_date,
|
|
198
|
+
'%Y-%m-%d %H:%M:%S.%f'))[1]
|
|
199
|
+
except Exception as e:
|
|
200
|
+
era5_file = era5_infos['get_function'](era5_infos['resource'],
|
|
201
|
+
date=datetime.datetime.strptime(meta.start_date,
|
|
202
|
+
'%Y-%m-%d %H:%M:%S'))[1]
|
|
203
|
+
if not os.path.isfile(era5_file):
|
|
204
|
+
raise ValueError(f"era5 file {era5_file} not found")
|
|
205
|
+
|
|
206
|
+
map_model = {'%s_%s' % (era5_name, uv): 'model_%s' %
|
|
207
|
+
uv for uv in ['U10', 'V10']}
|
|
208
|
+
return map_model
|
|
209
|
+
|
|
187
210
|
else:
|
|
188
|
-
raise ValueError("ancillary_name must be ecmwf, got %s" %
|
|
211
|
+
raise ValueError("ancillary_name must be ecmwf/era5, got %s" %
|
|
189
212
|
ancillary_name)
|
|
190
213
|
|
|
191
214
|
|
|
@@ -306,8 +329,8 @@ def makeL2asOwi(xr_dataset, dual_pol, copol, crosspol, copol_gmf, crosspol_gmf,
|
|
|
306
329
|
'winddir_co': 'owiWindDirection_co',
|
|
307
330
|
'winddir_cross': 'owiWindDirection_cross',
|
|
308
331
|
'winddir_dual': 'owiWindDirection',
|
|
309
|
-
'ancillary_wind_speed': '
|
|
310
|
-
'ancillary_wind_direction': '
|
|
332
|
+
'ancillary_wind_speed': 'owiAncillaryWindSpeed',
|
|
333
|
+
'ancillary_wind_direction': 'owiAncillaryWindDirection',
|
|
311
334
|
})
|
|
312
335
|
xr_dataset['owiNrcs'] = xr_dataset['sigma0_ocean'].sel(pol=copol)
|
|
313
336
|
xr_dataset.owiNrcs.attrs = xr_dataset.sigma0_ocean.attrs
|
|
@@ -557,10 +580,11 @@ def makeL2(filename, out_folder, config_path, overwrite=False, generateCSV=True,
|
|
|
557
580
|
logging.info("out_file %s exists ; returning empty Dataset" % out_file)
|
|
558
581
|
return out_file, xr.Dataset()
|
|
559
582
|
|
|
560
|
-
|
|
583
|
+
ancillary_name = config["ancillary"]
|
|
584
|
+
map_model = getAncillary(meta, ancillary_name)
|
|
561
585
|
if map_model is None:
|
|
562
586
|
raise Exception(
|
|
563
|
-
'the weather model is not set `map_model` is None -> you probably don"t have access to
|
|
587
|
+
f'the weather model is not set `map_model` is None -> you probably don"t have access to f{ancillary_name} archive')
|
|
564
588
|
|
|
565
589
|
try:
|
|
566
590
|
if ((recalibration) & ("SENTINEL" in sensor_longname)):
|
|
@@ -669,7 +693,7 @@ def makeL2(filename, out_folder, config_path, overwrite=False, generateCSV=True,
|
|
|
669
693
|
xr_dataset['ancillary_wind_direction'].attrs = {}
|
|
670
694
|
xr_dataset['ancillary_wind_direction'].attrs['units'] = 'degrees_north'
|
|
671
695
|
xr_dataset['ancillary_wind_direction'].attrs[
|
|
672
|
-
'long_name'] = '
|
|
696
|
+
'long_name'] = f'{ancillary_name} Wind direction (meteorological convention)'
|
|
673
697
|
xr_dataset['ancillary_wind_direction'].attrs['standart_name'] = 'wind_direction'
|
|
674
698
|
|
|
675
699
|
xr_dataset['ancillary_wind_speed'] = np.sqrt(
|
|
@@ -680,7 +704,7 @@ def makeL2(filename, out_folder, config_path, overwrite=False, generateCSV=True,
|
|
|
680
704
|
xr_dataset['ancillary_wind_speed'].attrs = {}
|
|
681
705
|
xr_dataset['ancillary_wind_speed'].attrs['units'] = 'm s^-1'
|
|
682
706
|
xr_dataset['ancillary_wind_speed'].attrs[
|
|
683
|
-
'long_name'] = '
|
|
707
|
+
'long_name'] = f'{ancillary_name} Wind speed'
|
|
684
708
|
xr_dataset['ancillary_wind_speed'].attrs['standart_name'] = 'wind_speed'
|
|
685
709
|
|
|
686
710
|
xr_dataset['ancillary_wind'] = xr.where(xr_dataset['mask'], np.nan,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/ci/requirements/environment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/_static/css/grdwindinversion.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/config_prod.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/data_config.yaml
RENAMED
|
File without changes
|
{grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/load_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/requires.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/tests/test_grdwindinversion.py
RENAMED
|
File without changes
|
|
File without changes
|