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.
Files changed (53) hide show
  1. {grdwindinversion-0.2.3.post8/grdwindinversion.egg-info → grdwindinversion-0.2.3.post9}/PKG-INFO +1 -1
  2. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/__init__.py +2 -0
  3. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/inversion.py +33 -9
  4. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9/grdwindinversion.egg-info}/PKG-INFO +1 -1
  5. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.editorconfig +0 -0
  6. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.github/dependabot.yml +0 -0
  7. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.github/workflows/publish.yml +0 -0
  8. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.gitignore +0 -0
  9. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/.pre-commit-config.yaml +0 -0
  10. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/AUTHORS.rst +0 -0
  11. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/CONTRIBUTING.rst +0 -0
  12. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/HISTORY.rst +0 -0
  13. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/LICENSE +0 -0
  14. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/MANIFEST.in +0 -0
  15. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/Makefile +0 -0
  16. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/README.md +0 -0
  17. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/ci/requirements/docs.yaml +0 -0
  18. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/ci/requirements/environment.yaml +0 -0
  19. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/Makefile +0 -0
  20. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/_static/css/grdwindinversion.css +0 -0
  21. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/algorithm.rst +0 -0
  22. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/authors.rst +0 -0
  23. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/conf.py +0 -0
  24. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/contributing.rst +0 -0
  25. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/examples/wind-inversion-from-grd.ipynb +0 -0
  26. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/history.rst +0 -0
  27. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/index.rst +0 -0
  28. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/installation.rst +0 -0
  29. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/make.bat +0 -0
  30. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/modules.rst +0 -0
  31. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/readme.rst +0 -0
  32. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/docs/usage.rst +0 -0
  33. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/.github/ISSUE_TEMPLATE.md +0 -0
  34. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/.gitignore +0 -0
  35. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/.travis.yml +0 -0
  36. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/config_prod.yaml +0 -0
  37. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/config_prod_recal.yaml +0 -0
  38. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/data_config.yaml +0 -0
  39. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/load_config.py +0 -0
  40. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/main.py +0 -0
  41. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion/utils.py +0 -0
  42. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/SOURCES.txt +0 -0
  43. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/dependency_links.txt +0 -0
  44. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/entry_points.txt +0 -0
  45. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/requires.txt +0 -0
  46. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/grdwindinversion.egg-info/top_level.txt +0 -0
  47. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/pyproject.toml +0 -0
  48. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/requirements_dev.txt +0 -0
  49. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/requirements_doc.txt +0 -0
  50. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/setup.cfg +0 -0
  51. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/tests/__init__.py +0 -0
  52. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/tests/test_grdwindinversion.py +0 -0
  53. {grdwindinversion-0.2.3.post8 → grdwindinversion-0.2.3.post9}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: grdwindinversion
3
- Version: 0.2.3.post8
3
+ Version: 0.2.3.post9
4
4
  Summary: Package to perform Wind inversion from GRD Level-1 SAR images
5
5
  License: MIT
6
6
  Classifier: Development Status :: 2 - Pre-Alpha
@@ -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 ECMWF files are available and to map the model to the SAR data.
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': 'owiEcmwfWindSpeed',
310
- 'ancillary_wind_direction': 'owiEcmwfWindDirection',
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
- map_model = getAncillary(meta, ancillary_name=config["ancillary"])
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 ECMWF archive')
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'] = 'ECMWF Wind direction (meteorological convention)'
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'] = 'ECMWF Wind speed'
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,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: grdwindinversion
3
- Version: 0.2.3.post8
3
+ Version: 0.2.3.post9
4
4
  Summary: Package to perform Wind inversion from GRD Level-1 SAR images
5
5
  License: MIT
6
6
  Classifier: Development Status :: 2 - Pre-Alpha