grdwindinversion 0.2.3.post10__tar.gz → 0.2.3.post12__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 (55) hide show
  1. {grdwindinversion-0.2.3.post10/grdwindinversion.egg-info → grdwindinversion-0.2.3.post12}/PKG-INFO +1 -1
  2. grdwindinversion-0.2.3.post12/docs/examples/wind-inversion-from-grd.ipynb +196 -0
  3. grdwindinversion-0.2.3.post12/grdwindinversion/config_luts.yaml +4 -0
  4. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/config_prod.yaml +4 -0
  5. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/config_prod_recal.yaml +4 -0
  6. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/inversion.py +325 -163
  7. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/main.py +16 -14
  8. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12/grdwindinversion.egg-info}/PKG-INFO +1 -1
  9. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion.egg-info/SOURCES.txt +1 -0
  10. grdwindinversion-0.2.3.post10/docs/examples/wind-inversion-from-grd.ipynb +0 -134
  11. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/.editorconfig +0 -0
  12. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/.github/dependabot.yml +0 -0
  13. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/.github/workflows/publish.yml +0 -0
  14. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/.gitignore +0 -0
  15. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/.pre-commit-config.yaml +0 -0
  16. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/AUTHORS.rst +0 -0
  17. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/CONTRIBUTING.rst +0 -0
  18. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/HISTORY.rst +0 -0
  19. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/LICENSE +0 -0
  20. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/MANIFEST.in +0 -0
  21. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/Makefile +0 -0
  22. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/README.md +0 -0
  23. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/ci/requirements/docs.yaml +0 -0
  24. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/ci/requirements/environment.yaml +0 -0
  25. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/Makefile +0 -0
  26. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/_static/css/grdwindinversion.css +0 -0
  27. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/algorithm.rst +0 -0
  28. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/authors.rst +0 -0
  29. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/conf.py +0 -0
  30. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/contributing.rst +0 -0
  31. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/history.rst +0 -0
  32. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/index.rst +0 -0
  33. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/installation.rst +0 -0
  34. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/make.bat +0 -0
  35. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/modules.rst +0 -0
  36. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/readme.rst +0 -0
  37. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/docs/usage.rst +0 -0
  38. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/.github/ISSUE_TEMPLATE.md +0 -0
  39. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/.gitignore +0 -0
  40. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/.travis.yml +0 -0
  41. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/__init__.py +0 -0
  42. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/data_config.yaml +0 -0
  43. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/load_config.py +0 -0
  44. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion/utils.py +0 -0
  45. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion.egg-info/dependency_links.txt +0 -0
  46. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion.egg-info/entry_points.txt +0 -0
  47. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion.egg-info/requires.txt +0 -0
  48. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/grdwindinversion.egg-info/top_level.txt +0 -0
  49. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/pyproject.toml +0 -0
  50. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/requirements_dev.txt +0 -0
  51. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/requirements_doc.txt +0 -0
  52. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/setup.cfg +0 -0
  53. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/tests/__init__.py +0 -0
  54. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/tests/test_grdwindinversion.py +0 -0
  55. {grdwindinversion-0.2.3.post10 → grdwindinversion-0.2.3.post12}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: grdwindinversion
3
- Version: 0.2.3.post10
3
+ Version: 0.2.3.post12
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
@@ -0,0 +1,196 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "e578297a-d2dc-4cb4-b016-1181649d227b",
6
+ "metadata": {},
7
+ "source": [
8
+ "## Example of Wind inversion"
9
+ ]
10
+ },
11
+ {
12
+ "cell_type": "markdown",
13
+ "id": "fa19ad8e-ebaa-430e-bd91-c21d517e7e88",
14
+ "metadata": {},
15
+ "source": [
16
+ "### define a product GRD Sentinel-1"
17
+ ]
18
+ },
19
+ {
20
+ "cell_type": "code",
21
+ "execution_count": 5,
22
+ "id": "ef483f15-4690-460b-b688-fa966bab8cd8",
23
+ "metadata": {},
24
+ "outputs": [],
25
+ "source": [
26
+ "import xsar"
27
+ ]
28
+ },
29
+ {
30
+ "cell_type": "code",
31
+ "execution_count": 6,
32
+ "id": "e04fa1b0-eb49-4e45-af0f-0be798e26f95",
33
+ "metadata": {},
34
+ "outputs": [
35
+ {
36
+ "name": "stderr",
37
+ "output_type": "stream",
38
+ "text": [
39
+ "/home/vincelhx/Documents/autoentreprise/IFREMER/libs/fork_xsar_vinc/xsar/src/xsar/xsar.py:212: UserWarning: Downloading https://cyclobs.ifremer.fr/static/sarwing_datarmor/xsardata/S1A_IW_GRDH_1SDV_20170907T103020_20170907T103045_018268_01EB76_Z010.SAFE.zip\n",
40
+ " warnings.warn(\"Downloading %s\" % file_url)\n"
41
+ ]
42
+ },
43
+ {
44
+ "ename": "ClientResponseError",
45
+ "evalue": "503, message='Service Unavailable', url=URL('https://cyclobs.ifremer.fr/static/sarwing_datarmor/xsardata/S1A_IW_GRDH_1SDV_20170907T103020_20170907T103045_018268_01EB76_Z010.SAFE.zip')",
46
+ "output_type": "error",
47
+ "traceback": [
48
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
49
+ "\u001b[0;31mClientResponseError\u001b[0m Traceback (most recent call last)",
50
+ "Cell \u001b[0;32mIn[6], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# test on an dummy GRD IW product\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m input_file \u001b[38;5;241m=\u001b[39m \u001b[43mxsar\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_test_file\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mS1A_IW_GRDH_1SDV_20170907T103020_20170907T103045_018268_01EB76_Z010.SAFE\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n",
51
+ "File \u001b[0;32m~/Documents/autoentreprise/IFREMER/libs/fork_xsar_vinc/xsar/src/xsar/xsar.py:213\u001b[0m, in \u001b[0;36mget_test_file\u001b[0;34m(fname)\u001b[0m\n\u001b[1;32m 211\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mexists(os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(res_path, fname)):\n\u001b[1;32m 212\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDownloading \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m file_url)\n\u001b[0;32m--> 213\u001b[0m local_file \u001b[38;5;241m=\u001b[39m \u001b[43murl_get\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile_url\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 214\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUnzipping \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(res_path, fname))\n\u001b[1;32m 215\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m zipfile\u001b[38;5;241m.\u001b[39mZipFile(local_file, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m zip_ref:\n",
52
+ "File \u001b[0;32m~/Documents/autoentreprise/IFREMER/libs/fork_xsar_vinc/xsar/src/xsar/utils.py:664\u001b[0m, in \u001b[0;36murl_get\u001b[0;34m(url, cache_dir)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 641\u001b[0m \u001b[38;5;124;03mGet fil from url, using caching.\u001b[39;00m\n\u001b[1;32m 642\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 660\u001b[0m \u001b[38;5;124;03mDue to fsspec, the returned filename won't match the remote one.\u001b[39;00m\n\u001b[1;32m 661\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 663\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m://\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m url:\n\u001b[0;32m--> 664\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m fsspec\u001b[38;5;241m.\u001b[39mopen(\n\u001b[1;32m 665\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfilecache::\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m url,\n\u001b[1;32m 666\u001b[0m https\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mclient_kwargs\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtimeout\u001b[39m\u001b[38;5;124m'\u001b[39m: aiohttp\u001b[38;5;241m.\u001b[39mClientTimeout(total\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3600\u001b[39m)}},\n\u001b[1;32m 667\u001b[0m filecache\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcache_storage\u001b[39m\u001b[38;5;124m'\u001b[39m: os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(config[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdata_dir\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfsspec_cache\u001b[39m\u001b[38;5;124m'\u001b[39m))}\n\u001b[1;32m 668\u001b[0m ) \u001b[38;5;28;01mas\u001b[39;00m f:\n\u001b[1;32m 669\u001b[0m fname \u001b[38;5;241m=\u001b[39m f\u001b[38;5;241m.\u001b[39mname\n\u001b[1;32m 670\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
53
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/core.py:102\u001b[0m, in \u001b[0;36mOpenFile.__enter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 99\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__enter__\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 100\u001b[0m mode \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmode\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mt\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m)\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 102\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 104\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfobjects \u001b[38;5;241m=\u001b[39m [f]\n\u001b[1;32m 106\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcompression \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
54
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/implementations/cached.py:444\u001b[0m, in \u001b[0;36mCachingFileSystem.__getattribute__.<locals>.<lambda>\u001b[0;34m(*args, **kw)\u001b[0m\n\u001b[1;32m 408\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__getattribute__\u001b[39m(\u001b[38;5;28mself\u001b[39m, item):\n\u001b[1;32m 409\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m item \u001b[38;5;129;01min\u001b[39;00m [\n\u001b[1;32m 410\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mload_cache\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 411\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_open\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 442\u001b[0m \u001b[38;5;66;03m# all the methods defined in this class. Note `open` here, since\u001b[39;00m\n\u001b[1;32m 443\u001b[0m \u001b[38;5;66;03m# it calls `_open`, but is actually in superclass\u001b[39;00m\n\u001b[0;32m--> 444\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mlambda\u001b[39;00m \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkw: \u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mtype\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mitem\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__get__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 445\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\n\u001b[1;32m 446\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m item \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__reduce_ex__\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m\n",
55
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/spec.py:1151\u001b[0m, in \u001b[0;36mAbstractFileSystem.open\u001b[0;34m(self, path, mode, block_size, cache_options, compression, **kwargs)\u001b[0m\n\u001b[1;32m 1149\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1150\u001b[0m ac \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mautocommit\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_intrans)\n\u001b[0;32m-> 1151\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_open\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1152\u001b[0m \u001b[43m \u001b[49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1153\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1154\u001b[0m \u001b[43m \u001b[49m\u001b[43mblock_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mblock_size\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1155\u001b[0m \u001b[43m \u001b[49m\u001b[43mautocommit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mac\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1156\u001b[0m \u001b[43m \u001b[49m\u001b[43mcache_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1157\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1158\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1159\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m compression \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1160\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfsspec\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompression\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m compr\n",
56
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/implementations/cached.py:444\u001b[0m, in \u001b[0;36mCachingFileSystem.__getattribute__.<locals>.<lambda>\u001b[0;34m(*args, **kw)\u001b[0m\n\u001b[1;32m 408\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__getattribute__\u001b[39m(\u001b[38;5;28mself\u001b[39m, item):\n\u001b[1;32m 409\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m item \u001b[38;5;129;01min\u001b[39;00m [\n\u001b[1;32m 410\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mload_cache\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 411\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_open\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 442\u001b[0m \u001b[38;5;66;03m# all the methods defined in this class. Note `open` here, since\u001b[39;00m\n\u001b[1;32m 443\u001b[0m \u001b[38;5;66;03m# it calls `_open`, but is actually in superclass\u001b[39;00m\n\u001b[0;32m--> 444\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mlambda\u001b[39;00m \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkw: \u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mtype\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mitem\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__get__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 445\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\n\u001b[1;32m 446\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m item \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__reduce_ex__\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m\n",
57
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/implementations/cached.py:695\u001b[0m, in \u001b[0;36mWholeFileCacheFileSystem._open\u001b[0;34m(self, path, mode, **kwargs)\u001b[0m\n\u001b[1;32m 693\u001b[0m f2\u001b[38;5;241m.\u001b[39mwrite(data)\n\u001b[1;32m 694\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 695\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfn\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 696\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msave_cache()\n\u001b[1;32m 697\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_open(path, mode)\n",
58
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/asyn.py:115\u001b[0m, in \u001b[0;36msync_wrapper.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 113\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m obj \u001b[38;5;129;01mor\u001b[39;00m args[\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43msync\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
59
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/asyn.py:100\u001b[0m, in \u001b[0;36msync\u001b[0;34m(loop, func, timeout, *args, **kwargs)\u001b[0m\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m FSTimeoutError \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mreturn_result\u001b[39;00m\n\u001b[1;32m 99\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(return_result, \u001b[38;5;167;01mBaseException\u001b[39;00m):\n\u001b[0;32m--> 100\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m return_result\n\u001b[1;32m 101\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 102\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m return_result\n",
60
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/asyn.py:55\u001b[0m, in \u001b[0;36m_runner\u001b[0;34m(event, coro, result, timeout)\u001b[0m\n\u001b[1;32m 53\u001b[0m coro \u001b[38;5;241m=\u001b[39m asyncio\u001b[38;5;241m.\u001b[39mwait_for(coro, timeout\u001b[38;5;241m=\u001b[39mtimeout)\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 55\u001b[0m result[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m coro\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m ex:\n\u001b[1;32m 57\u001b[0m result[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m ex\n",
61
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/asyn.py:562\u001b[0m, in \u001b[0;36mAsyncFileSystem._get\u001b[0;34m(self, rpath, lpath, recursive, callback, **kwargs)\u001b[0m\n\u001b[1;32m 560\u001b[0m callback\u001b[38;5;241m.\u001b[39mbranch(rpath, lpath, kwargs)\n\u001b[1;32m 561\u001b[0m coros\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_file(rpath, lpath, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs))\n\u001b[0;32m--> 562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m _run_coros_in_chunks(\n\u001b[1;32m 563\u001b[0m coros, batch_size\u001b[38;5;241m=\u001b[39mbatch_size, callback\u001b[38;5;241m=\u001b[39mcallback\n\u001b[1;32m 564\u001b[0m )\n",
62
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/asyn.py:246\u001b[0m, in \u001b[0;36m_run_coros_in_chunks\u001b[0;34m(coros, batch_size, callback, timeout, return_exceptions, nofiles)\u001b[0m\n\u001b[1;32m 240\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m callback \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m _DEFAULT_CALLBACK:\n\u001b[1;32m 241\u001b[0m [\n\u001b[1;32m 242\u001b[0m t\u001b[38;5;241m.\u001b[39madd_done_callback(\u001b[38;5;28;01mlambda\u001b[39;00m \u001b[38;5;241m*\u001b[39m_, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m__: callback\u001b[38;5;241m.\u001b[39mrelative_update(\u001b[38;5;241m1\u001b[39m))\n\u001b[1;32m 243\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m chunk\n\u001b[1;32m 244\u001b[0m ]\n\u001b[1;32m 245\u001b[0m results\u001b[38;5;241m.\u001b[39mextend(\n\u001b[0;32m--> 246\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mgather(\u001b[38;5;241m*\u001b[39mchunk, return_exceptions\u001b[38;5;241m=\u001b[39mreturn_exceptions),\n\u001b[1;32m 247\u001b[0m )\n\u001b[1;32m 248\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m results\n",
63
+ "File \u001b[0;32m~/miniconda3/envs/xsar_N3_local/lib/python3.10/asyncio/tasks.py:408\u001b[0m, in \u001b[0;36mwait_for\u001b[0;34m(fut, timeout)\u001b[0m\n\u001b[1;32m 405\u001b[0m loop \u001b[38;5;241m=\u001b[39m events\u001b[38;5;241m.\u001b[39mget_running_loop()\n\u001b[1;32m 407\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 408\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m fut\n\u001b[1;32m 410\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 411\u001b[0m fut \u001b[38;5;241m=\u001b[39m ensure_future(fut, loop\u001b[38;5;241m=\u001b[39mloop)\n",
64
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/implementations/http.py:248\u001b[0m, in \u001b[0;36mHTTPFileSystem._get_file\u001b[0;34m(self, rpath, lpath, chunk_size, callback, **kwargs)\u001b[0m\n\u001b[1;32m 245\u001b[0m size \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 247\u001b[0m callback\u001b[38;5;241m.\u001b[39mset_size(size)\n\u001b[0;32m--> 248\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_raise_not_found_for_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrpath\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 249\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m isfilelike(lpath):\n\u001b[1;32m 250\u001b[0m outfile \u001b[38;5;241m=\u001b[39m lpath\n",
65
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fsspec/implementations/http.py:214\u001b[0m, in \u001b[0;36mHTTPFileSystem._raise_not_found_for_status\u001b[0;34m(self, response, url)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m response\u001b[38;5;241m.\u001b[39mstatus \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m404\u001b[39m:\n\u001b[1;32m 213\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFileNotFoundError\u001b[39;00m(url)\n\u001b[0;32m--> 214\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraise_for_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
66
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/aiohttp/client_reqrep.py:1005\u001b[0m, in \u001b[0;36mClientResponse.raise_for_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1003\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreason \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 1004\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrelease()\n\u001b[0;32m-> 1005\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ClientResponseError(\n\u001b[1;32m 1006\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrequest_info,\n\u001b[1;32m 1007\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhistory,\n\u001b[1;32m 1008\u001b[0m status\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstatus,\n\u001b[1;32m 1009\u001b[0m message\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreason,\n\u001b[1;32m 1010\u001b[0m headers\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mheaders,\n\u001b[1;32m 1011\u001b[0m )\n",
67
+ "\u001b[0;31mClientResponseError\u001b[0m: 503, message='Service Unavailable', url=URL('https://cyclobs.ifremer.fr/static/sarwing_datarmor/xsardata/S1A_IW_GRDH_1SDV_20170907T103020_20170907T103045_018268_01EB76_Z010.SAFE.zip')"
68
+ ]
69
+ }
70
+ ],
71
+ "source": [
72
+ "# test on an dummy GRD IW product\n",
73
+ "input_file = xsar.get_test_file('S1A_IW_GRDH_1SDV_20170907T103020_20170907T103045_018268_01EB76_Z010.SAFE')\n"
74
+ ]
75
+ },
76
+ {
77
+ "cell_type": "markdown",
78
+ "id": "f4886386-b19a-4c43-a790-192f4866a692",
79
+ "metadata": {},
80
+ "source": [
81
+ "### perform wind inversion"
82
+ ]
83
+ },
84
+ {
85
+ "cell_type": "code",
86
+ "execution_count": null,
87
+ "id": "d3fda3a2-2ee6-4401-be8f-c0fab8344a49",
88
+ "metadata": {},
89
+ "outputs": [],
90
+ "source": [
91
+ "from grdwindinversion.inversion import makeL2 \n",
92
+ "\n"
93
+ ]
94
+ },
95
+ {
96
+ "cell_type": "markdown",
97
+ "id": "c8924754-34f5-4a27-a598-492022b3b3f5",
98
+ "metadata": {},
99
+ "source": [
100
+ "### define config file"
101
+ ]
102
+ },
103
+ {
104
+ "cell_type": "code",
105
+ "execution_count": null,
106
+ "id": "f95ee426-0b46-4d39-ae90-241e8bbaa332",
107
+ "metadata": {},
108
+ "outputs": [
109
+ {
110
+ "name": "stdout",
111
+ "output_type": "stream",
112
+ "text": [
113
+ "True\n"
114
+ ]
115
+ }
116
+ ],
117
+ "source": [
118
+ "import grdwindinversion\n",
119
+ "import os\n",
120
+ "config_file_s1 = os.path.join(os.path.dirname(grdwindinversion.__file__),'config_prod.yaml')\n",
121
+ "grdwindinversion.__file__\n",
122
+ "print(os.path.exists(config_file_s1))"
123
+ ]
124
+ },
125
+ {
126
+ "cell_type": "code",
127
+ "execution_count": null,
128
+ "id": "3cbe649d-44d7-4a7f-9041-137092a61e07",
129
+ "metadata": {},
130
+ "outputs": [],
131
+ "source": [
132
+ "out_folder = '/tmp/test_windinversion'"
133
+ ]
134
+ },
135
+ {
136
+ "cell_type": "code",
137
+ "execution_count": null,
138
+ "id": "b90c78bb-8643-4d64-a463-28fcb68d9b38",
139
+ "metadata": {},
140
+ "outputs": [
141
+ {
142
+ "ename": "NameError",
143
+ "evalue": "name 'input_file' is not defined",
144
+ "output_type": "error",
145
+ "traceback": [
146
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
147
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
148
+ "Cell \u001b[0;32mIn[4], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m out_file,outds \u001b[38;5;241m=\u001b[39m makeL2(\u001b[43minput_file\u001b[49m,out_folder, config_path\u001b[38;5;241m=\u001b[39mconfig_file_s1,overwrite\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[1;32m 2\u001b[0m outds\n",
149
+ "\u001b[0;31mNameError\u001b[0m: name 'input_file' is not defined"
150
+ ]
151
+ }
152
+ ],
153
+ "source": [
154
+ "out_file,outds = makeL2(input_file,out_folder, config_path=config_file_s1,overwrite=True)\n",
155
+ "outds"
156
+ ]
157
+ },
158
+ {
159
+ "cell_type": "code",
160
+ "execution_count": null,
161
+ "id": "91137cfe",
162
+ "metadata": {},
163
+ "outputs": [],
164
+ "source": []
165
+ },
166
+ {
167
+ "cell_type": "code",
168
+ "execution_count": null,
169
+ "id": "9a83becc",
170
+ "metadata": {},
171
+ "outputs": [],
172
+ "source": []
173
+ }
174
+ ],
175
+ "metadata": {
176
+ "kernelspec": {
177
+ "display_name": "Python 3 (ipykernel)",
178
+ "language": "python",
179
+ "name": "python3"
180
+ },
181
+ "language_info": {
182
+ "codemirror_mode": {
183
+ "name": "ipython",
184
+ "version": 3
185
+ },
186
+ "file_extension": ".py",
187
+ "mimetype": "text/x-python",
188
+ "name": "python",
189
+ "nbconvert_exporter": "python",
190
+ "pygments_lexer": "ipython3",
191
+ "version": "3.10.12"
192
+ }
193
+ },
194
+ "nbformat": 4,
195
+ "nbformat_minor": 5
196
+ }
@@ -0,0 +1,4 @@
1
+ inc_step: 0.1
2
+ wspd_step: 0.1
3
+ phi_step: 1.0
4
+ resolution: "high"
@@ -4,21 +4,25 @@ S1A:
4
4
  dsig_VH_NAME: "gmf_s1_v2"
5
5
  apply_flattening: True
6
6
  recalibration: False
7
+ ancillary: "ecmwf"
7
8
  S1B:
8
9
  GMF_VV_NAME: "gmf_cmod5n"
9
10
  GMF_VH_NAME: "gmf_s1_v2"
10
11
  dsig_VH_NAME: "gmf_s1_v2"
11
12
  apply_flattening: True
12
13
  recalibration: False
14
+ ancillary: "ecmwf"
13
15
  RS2:
14
16
  GMF_VV_NAME: "gmf_cmod5n"
15
17
  GMF_VH_NAME: "gmf_rs2_v2"
16
18
  dsig_VH_NAME: "gmf_rs2_v2"
17
19
  apply_flattening: False
18
20
  recalibration: False
21
+ ancillary: "ecmwf"
19
22
  RCM:
20
23
  GMF_VV_NAME: "gmf_cmod5n"
21
24
  GMF_VH_NAME: "gmf_rcm_noaa"
22
25
  dsig_VH_NAME: "gmf_s1_v2"
23
26
  apply_flattening: True
24
27
  recalibration: False
28
+ ancillary: "ecmwf"
@@ -4,21 +4,25 @@ S1A:
4
4
  dsig_VH_NAME: "gmf_s1_v2"
5
5
  apply_flattening: True
6
6
  recalibration: True
7
+ ancillary: "ecmwf"
7
8
  S1B:
8
9
  GMF_VV_NAME: "gmf_cmod5n"
9
10
  GMF_VH_NAME: "gmf_s1_v2"
10
11
  dsig_VH_NAME: "gmf_s1_v2"
11
12
  apply_flattening: True
12
13
  recalibration: True
14
+ ancillary: "ecmwf"
13
15
  RS2:
14
16
  GMF_VV_NAME: "gmf_cmod5n"
15
17
  GMF_VH_NAME: "gmf_rs2_v2"
16
18
  dsig_VH_NAME: "gmf_rs2_v2"
17
19
  apply_flattening: False
18
20
  recalibration: True
21
+ ancillary: "ecmwf"
19
22
  RCM:
20
23
  GMF_VV_NAME: "gmf_cmod5n"
21
24
  GMF_VH_NAME: "gmf_rcm_noaa"
22
25
  dsig_VH_NAME: "gmf_s1_v2"
23
26
  apply_flattening: True
24
27
  recalibration: True
28
+ ancillary: "ecmwf"